おたくのスタジオ

C语言的按位操作符

统计一个整型数值为1的二进制位的个数

表达式x&=(x-1)可以删除x中最右边值为1的一个二进制位。

1
2
3
4
5
6
7
int bitcount(unsigned x)
{

int b;
for(b = 0; x != 0; b++)
x &= (x - 1);
return b;
}