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;
}
本文探讨了位运算符x&(x-1)的用途,包括如何利用它快速计算二进制数中1的个数,以及如何判断一个数是否为2的幂。通过深入理解这个位运算,可以优化算法效率。
3498

被折叠的 条评论
为什么被折叠?



