public int hammingWeight(int n) {
int res = 0;
while(n != 0) {
res++;
n &= (n - 1);
}
return res;
}
算一个数二进制的1的位数时,学到的东西。
n = n & (n - 1);会把最后一个1减去
n -= n & (-n); n & ( - n) 相当于得到把最后一位1加上之后的0,减去之后是 一样的效果。