【发布时间】:2018-03-07 21:02:26
【问题描述】:
我正在寻找一种有效的方法(最好使用少量按位运算),它返回左移计数或将方程求解为:
为给定的 y 找到 x,其中 y=2^x
例如 (1 4 的左移量。另外,我不是在寻找涉及 loop 或 log 方法的方法,例如:
unsigned int count_shift(unsigned int shifted)
{
unsigned int count = 0;
for (count = 0; shifted != 0x1; count++)
{
shifted /= 2;
}
return count;
}
干杯!
【问题讨论】:
-
内存空间效率高,还是寄存器使用率高?
-
您可能已经被 C# 引用推迟了。但是来自@LưuVĩnhPhúc 的第二个链接在 C 中给出了一个很好且非常紧凑的答案:stackoverflow.com/a/24748784/4213662
-
@MartinJames 代码在嵌入式平台上实现 ISR(中断服务例程),从而减少 CPU 周期
-
@Bathsheba 这就是我在中断处理程序中所做的,是的。我想您可以快速找出哪个字节中有一个,然后查找,或者只是通过进位旋转。