x&(x-1) 可以把整型数据最右端的‘1’变为零
x= 10101
x-1= 10100
x&(x-1) = 10100
x= 10100
x-1= 10011
x&(x-1) = 10000
可以用来计算二进制数字中 1 bit 的个数:int bitcount(unsigned x)
{int b;
for (b = 0; x != 0; x &= (x-1))
b++;
return b;
}
x&(x-1) 可以把整型数据最右端的‘1’变为零
x= 10101
x-1= 10100
x&(x-1) = 10100
x= 10100
x-1= 10011
x&(x-1) = 10000
可以用来计算二进制数字中 1 bit 的个数:int bitcount(unsigned x)
{