解法一:
n & n - 1 可以让 n 最右边的 1 变为 0 ,其余位不变。
class Solution {
public:
int hammingWeight(uint32_t n) {
int res = 0;
while (n) {
n &= n-1;
res++;
}
return res;
}
};
解法二:
n & 1:若 = 1,说明 n 的最后一位为1,否则为0,循环右移一位统计1的个数。
class Solution {
public:
int hammingWeight(uint32_t n) {
int res = 0;
while (n) {
if (n & 1) {
res++;
}
n >>= 1;
}
return res;
}
};