解题思路:
主要应用 n&(n-1)的位运算。
详细请见下图。
对于一个二进制,从右往左,n - 1 一定可以消除最后一个 1,同时把其后的 0 都变成 1,这样再和 n 做一次 & 运算,就可以把最后一个 1 变成 0 了。
public int hammingWeight(int n) {
int res = 0;
while(n != 0){
n = n & (n-1);
res++;
}
return res;
}