题目
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
思路
对于任意一个数n,n & (n - 1)可以消去n的二进制序列中最右边的一个1。一直循环消去最右边的1,直到n为0即可。
参考代码
class Solution
{
public:
int NumberOf1(int n)
{
int cnt = 0;
while (n)
{
cnt++;
n &= (n - 1);
}
return cnt;
}
};