果当前位是1的话则亦或运算结果为非0, 如果不是的话则结果为0,只需要一直对1左移并判断,循环32次即可。
public class S_191 {
public int hammingWeight(int n) {
int count = 0;
while(n!= 0){
// 当二进制数里还有值的时候 计数加1
count++;
// 每次都消除该数中最右边的1
n = n & (n - 1);
}
return count;
}
}