我有一个位数组实现,其中第0个索引是数组中第一个字节的MSB,第8个索引是第二个字节的MSB,依此类推。

找到该位阵列中设置的第一位的快速方法是什么?我查找的所有相关解决方案都找到了最低有效位,但是我需要最高有效位。因此,给定0x00A1,我想要8(因为它是左起的第9位)。

最佳答案

GCC具有 __builtin_clz ,可转换为x86 / x64上的BSR,ARM上的CLZ等,并在硬件未实现的情况下模拟该指令。
Visual C++ 2005及更高版本具有 _BitScanReverse

10-05 21:18