一个整型数x,和x-1做&与操作,结果相当于:
将二进制数 X最右边的1 变成 0
比如 9=1001b 9-1=8=1000b
1001b&1000b=1000b=8
这个方法可以用来快速统计一个数的二进制形态有多少个1。
int count = 0;
while (x)
{
x=x&(x-1);
count++;
}
一个整型数x,和x-1做&与操作,结果相当于:
将二进制数 X最右边的1 变成 0
比如 9=1001b 9-1=8=1000b
1001b&1000b=1000b=8
这个方法可以用来快速统计一个数的二进制形态有多少个1。
int count = 0;
while (x)
{
x=x&(x-1);
count++;
}