我寻找了做popcount(设置位计数)的好方法。我找到了这个,在这里
http://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan
unsigned int v; // count the number of bits set in v
unsigned int c; // c accumulates the total bits set in v
for(c = 0; v; c++)
{
v &= v - 1; // clear the least significant bit set
}
尝试几个例子,它确实有效。二元运算/表示的什么属性使它起作用?
你能暗示一些关于popcount和二进制表示的进一步阅读吗?