Je cherche un moyen efficace de déterminer la position du bit le moins significatif qui est activé dans un nombre entier, par exemple pour 0x0FF0, ce serait 4.
Une mise en œuvre triviale est la suivante :
unsigned GetLowestBitPos(unsigned value)
{
assert(value != 0); // handled separately
unsigned pos = 0;
while (!(value & 1))
{
value >>= 1;
++pos;
}
return pos;
}
Des idées pour en tirer quelques cycles ?
(Note : cette question s'adresse aux personnes qui aiment ce genre de choses, et non aux personnes qui me disent que la xyzoptimisation est un mal).
[modifier] Merci à tous pour les idées ! J'ai aussi appris d'autres choses. C'est cool !
0 votes
While ( (valeur _N >> (++pos)) != 0 ) ;
1 votes
Liés : position du seul 1 dans un nombre au format binaire