如何计算一个整数中二进制中1的个数
int fu�nc(int x)
{
int count = 0;
while(x)
{
count ++;
x = x&(x-1);
}
return 0;
}
理解这个算法的核心是:
- 当一个数被减1时,它最右边的那个值为1的bit将变为0;同时其右边的所有的bit都会变成1。
- 每次执行
x&(x-1)
的作用是把x对应的二进制数中的最后一位1去掉。因此,循环执行这个操作直到x等于0的时候,循环的次数就是x对应的二进制中1的个数。