【发布时间】:2012-08-04 17:18:03
【问题描述】:
考虑以下算法:
int count(int num)
{
int ones = 0;
while(num)
{
++ones;
num &= num - 1;
}
return ones;
}
num & (num-1)的意义是什么?它是如何工作的?
【问题讨论】:
-
请注意,这也称为人口计数或汉明权重。
-
btw,if 子句要修改为 while(num > 0)
-
@Pompair:
while(num)和while(num != 0)一样,所以是正确的。
标签: c algorithm bit-manipulation