题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
- 算法:位运算
- 数据结构:二进制
- 编程语言:C++
class Solution {
public:
int NumberOf1(int n) {
int i=0;
//我们发现把一个整数减去1,都是把最右边的1变成0。如果它的右边还有0
//所有的0都变成1,而它左边的所有位都保持不变。
//接下来我们把一个整数和它减去1的结果做位与运算,相当于把它右边的1变成0.
//1100 减去1 1011 &1运算 1000 每进行一次运算相当于去掉一个1
while(n)
{
i++;
n=(n-1)&n;
}
return i;
}
};