给定一个unsigned int,我必须执行以下操作:
(该操作不应依赖于体系结构)。
我已经使用按位移位完成了此操作,但是我必须遍历几乎所有位(es.32)。
例如,计算1:
unsigned int number= ...;
while(number != 0){
if ((number & 0x01) != 0)
++count;
number >>=1;
}
其他操作类似。
所以我的问题是:有没有更快的方法呢?
最佳答案
如果您想要最快的方法,则需要使用非便携式方法。
Windows/MSVC:
海湾合作委员会:
这些通常直接映射到 native 硬件指令。因此,没有比这些更快的了。
但是由于它们没有C/C++功能,因此只能通过编译器内部函数访问它们。
关于c++ - 高效的按位运算,用于对位进行计数或找到最右边的|最左边的,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9093323/