我正在寻找一种有效的方法来确定在整数中设置的最低有效位的位置,例如对于0x0FF0,它将是4.
这是一个简单的实现:
unsigned GetLowestBitPos(unsigned value)
{
assert(value != 0); // handled separately
unsigned pos = 0;
while (!(value & 1))
{
value >>= 1;
++pos;
}
return pos;
}
Run Code Online (Sandbox Code Playgroud)
任何想法如何挤出一些周期?
(注意:这个问题适合喜欢这类事情的人,而不是人们告诉我xyzoptimization是邪恶的.)
[编辑] 感谢大家的想法!我也学到了其他一些东西.凉!
我有一个功能:
inline uint32_t ShiftOf(uint32_t v)
{
for (uint32_t s = 0; s < 32; ++s)
{
if (v == 1 << s)
return s;
}
return -1;
}
Run Code Online (Sandbox Code Playgroud)
有没有办法优化它?