思路:
主要用到补码与原码的最后一位正好相等,而其他位相反。
int lowbit(int x){
return x & (-x);
}
代码:
class Solution {
public:
int hammingWeight(uint32_t n) {
int cnt = 0;
while(n){
n -= lowbit(n);
cnt++;
}
return cnt;
}
int lowbit(uint32_t n){
return n & (-n);
}
};
评论区