Question
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
Solution
- n & (n - 1) 会将n中最右边那个1置为0,置零了多少次,就有多少个1.
Code
class Solution {
public:
int NumberOf1(int n) {
int sum = 0;
while (n) {
n = n & (n - 1);
sum++;
}
return sum;
}
};