Я ищу эффективный способ определения положения младшего значащего бита, который установлен в целое число, например. для 0x0FF0 это будет 4.
Тривиальная реализация такова:
unsigned GetLowestBitPos(unsigned value)
{
assert(value != 0); // handled separately
unsigned pos = 0;
while (!(value & 1))
{
value >>= 1;
++pos;
}
return pos;
}
Есть идеи, как выжать из него несколько циклов?
(Примечание: этот вопрос предназначен для людей, которые пользуются такими вещами, а не для людей, чтобы сказать мне, что xyzoptimization - это зло.)
[edit] Спасибо всем за идеи! Я узнал еще кое-что. Круто!