可能重复:
计算32位整数中设置位数的最佳算法?
你好,
有没有更紧凑的方法来计算一个字节中的1的数量而不使用循环?如果我不需要,我不想做以下事情.谢谢.
char myValue = 0x0F;
int counter = 0;
while (myValue > 0)
{
if (myValue & 0x01)
{
counter ++;
}
myValue = myValue >> 1;
}
Run Code Online (Sandbox Code Playgroud)
((i>>3)&1)+((i>>2)&1)+((i>>1)&1)+(i&1)
Run Code Online (Sandbox Code Playgroud)
或使用组装(SSE/MMX). http://gurmeet.net/puzzles/fast-bit-counting-routines/