int func(x)
{
int countx = 0;
while(x)
{
countx ++;
x = x&(x-1);
}
return countx;
}
x=x&(x-1);
x=x&(x-1);的结果就是x=0
func函数的返回值不是0就是1
计算x中1的个数,,,,
& 是 位 与 运算,这个func的目的就是计算x的二进制表示有多少个1.例如:101B & 100B = 100B 100B & 011B = 0
因此5(101B)的二进制表示有两个1
他们问的是什么?
这道题还真有点意思~
二进制的个数,答案为:8
问的是x的二进制中哟多少个1