La Position du bit le moins significatif est définie

Je suis à la recherche d'un moyen efficace pour déterminer la position du bit le moins significatif est définie dans un entier, par exemple pour 0x0FF0 il serait de 4.

Une implémentation simple est: est-ce

unsigned GetLowestBitPos(unsigned value)
{
   assert(value != 0); //handled separately

   unsigned pos = 0;
   while (!(value & 1))
   {
      value >>= 1;
      ++pos;
   }
   return pos;
}

Toutes les idées sur la façon de serrer quelques cycles hors de lui?

(Remarque: cette question est pour les gens qui aiment ce genre de choses, pas pour les gens de me dire xyzoptimization est le mal.)

[modifier] Merci à tous pour les idées! J'ai appris un peu d'autres choses, aussi. Cool!

InformationsquelleAutor peterchen | 2009-04-16