Ich suche nach einem effizienten Weg, um die Position des niedrigstwertigen Bits zu bestimmen, das in einer ganzen Zahl gesetzt ist, z. B. für 0x0FF0 wäre es 4.
Eine triviale Implementierung ist folgende:
unsigned GetLowestBitPos(unsigned value)
{
assert(value != 0); // handled separately
unsigned pos = 0;
while (!(value & 1))
{
value >>= 1;
++pos;
}
return pos;
}
Irgendwelche Ideen, wie man ein paar Zyklen herausquetscht?
(Hinweis: Diese Frage richtet sich an Personen, die solche Dinge mögen, und nicht an Personen, die mir sagen, dass Xyzoptimierung böse ist.)
[Bearbeiten] Vielen Dank an alle für die Ideen! Ich habe noch ein paar andere Dinge gelernt. Cool!