原题简化:形参x转化成二进制后包含1的数量 int xMinus1(int x)
{
int count = 0;
while (x != 0)
{
count++;
x = x & (x - 1);
}
return count;
}衍生问题
1. x-1修改为x+1后会怎样?
改成x+1后,该计算无实际意义。
当x为偶数时,x&(x+1)= x;
当x为奇数时,x&(x+1)会把x二进制中左数第一个0置为1,后面的1全置为0,前面不变。然后该数变为偶数,变成上一种情况。
2. 如何计算形参x转化成二进制后包含0的数量?
笨办法:先得出总位数,再减去上面的解。
本文探讨了通过位运算计算二进制中1的数量的方法,并分析了不同位运算的效果。同时,介绍了如何计算二进制中0的数量的一种简单策略。

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



