题目描述
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
错误解法:(如果是负数最左边永远为1死循环)
class Solution {
public:
int NumberOf1(int n) {
int num = 0;
while(n) {
num += n&1;
n >>= 1;
}
return num;
}
};
正解1:
class Solution {
public:
int NumberOf1(int n) {
int num = 0;
while(n) {
num++;
n = n&(n-1);
}
return num;
}
};