« Les opérations bit à bit/Manipulations sur les bits de poids faible/fort » : différence entre les versions

Contenu supprimé Contenu ajouté
Ligne 721 :
====Méthode basée sur le poids de Hamming====
 
Une autre solution se base sur le fait que le bit de poids faible est numéroté 0 ! Pour cela, on peut utiliser le code précédent, qui permet de trouver le nombre de la forme <math>2^n - 1</math> immédiatement supérieur. Ce nombre, par définition, a tous les bits de rang <math>\leq n</math> à 1 : il suffit de compter ses 1 pour obtenir le rang <math>n</math> ! On verra dans quelques chapitres qu'il existe des méthodes pour compter le nombre de 1 d'un nombre, celui-ci étant appelé le poids de Hamming, mais admettons que l'on ait une fonction pour faire cette opération pour le moment.
 
<syntaxhighlight lang="c">
int log_2 (int a)
{
int n = NextPowerOf2 SetBitsAfterHighestOne(a) ;
return HammingWeight(--n) ;
}
</syntaxhighlight>