1.题目
x&(x-1)的作用是什么?它有哪些应用呢?
2.思路
对于x&(x-1),x会将二进制的X最右边的一个1变为0,因为x-1将会将该位变为0.
应用一:得到一个二进制数中1的个数。
int count = 0, x = 8421;
while (x) {
count++;
x = x&(x - 1);
}
count的值就是8421中1的个数。
应用二:判断一个数(x)是否是2的n次方。
int func(int x)
{
if( (x&(x-1)) == 0 )
return 1;
else
return 0;
}