思路:
方法一:每次看最低位,判断然后右移一位。
class Solution {
public:
int hammingWeight(uint32_t n) {
int count = 0;
while(n) {
if(n & 1) count++;
n = n>>1;
}
return count;
}
};
方法二:利用二进制加减法的性质。
Example:
n = 1110;
n - 1 = 1101;
n & (n-1) = 1100; //去掉了末尾的一个‘1’
class Solution {
public:
int hammingWeight(uint32_t n) {
int count = 0;
while(n) {
count++;
n = (n-1) & n;
}
return count;
}
};