题目描述
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
class Solution {
public:
int NumberOf1(int n) {
//参考讨论得到的思路
//(n - 1)会将n的二进制表示中的最后一个1及这个1之后的所有位取反
//n & (n -1)会使得n的二进制表示的最后一个1去掉
int count = 0;
while(n != 0){
count++;
n = n & (n - 1);
}
return count;
}
};