获得最左边的位置

Jam*_*B41 2 binary bit-manipulation objective-c

我有一个5位整数,我正在使用.Objective-C中是否有一个本机函数可以让我知道哪个位是最左边的?

即我有01001,它将返回8或位置.

谢谢

Chr*_*isW 7

您可以构建一个包含32个元素的查找表:0,1,2,2,3等.


Pau*_*l R 6

这实际上与计算前导0的数量相同.有些CPU有这方面的指令,否则你可以使用Hacker's Delight中的技巧.

它也相当于向下舍入到最接近2的幂,再次你可以在Hacker's Delight中找到有效的方法,例如

uint8_t flp2(uint8_t x)
{
    x = x | (x >> 1);
    x = x | (x >> 2);
    x = x | (x >> 4);
    return x - (x >> 1);
}
Run Code Online (Sandbox Code Playgroud)

另见:2的先前力量