Envoyé par
S.H
je voudrais savoir comment cet algorithme marche
A la première ligne, on comptabilise les bits sur chaque groupe de deux bits.
A la seconde, sur chaque groupe de quatre
A la troisième, huit
A la quatrième, seize
A la cinquième, trente-deux, le compte y est.
Comme à chaque étape le nombre de bits est inférieur au maximum qu'on peut coder sur ces bits, il n'y a pas de retenues d'un groupe sur l'autre.
Seule astuce, à la première, on fait:
x -= ((x >> 1) & 0x55555555);
au lieu de faire
x = ((x >> 1) & 0x55555555) + (x & 0x55555555));
Mais ça semble equivalent.
Partager