Je recherche un moyen efficace de déterminer la position du bit le moins significatif qui est défini dans un entier, par exemple pour 0x0FF0, ce serait 4.
Une implémentation triviale est la suivante:
unsigned GetLowestBitPos(unsigned value)
{
assert(value != 0); // handled separately
unsigned pos = 0;
while (!(value & 1))
{
value >>= 1;
++pos;
}
return pos;
}
Avez-vous des idées pour en extraire certains cycles?
(Remarque: cette question s'adresse aux personnes qui aiment de telles choses, et non aux personnes qui me disent que l'optimisation xyz est maléfique.)
[modifier] Merci à tous pour les idées! J'ai aussi appris quelques autres choses. Cool!