剑指第二版第15题 二进制中1的个数
讲道理,我到现在才知道位运算真的可以按照位数进行运算,
public class Solution {
// you need to treat n as an unsigned value
public int hammingWeight(int n) {
//第一种方式 向右移位
int res = 0;
while(n != 0){
res += n & 1;
n >>>= 1;
}
return res;
}
}
第二种方式,按位与
public class Solution {
// you need to treat n as an unsigned value
public int hammingWeight(int n) {
//第二种解题的方式 巧妙的利用n和n-1之间的关系
int res = 0;
while (n != 0) {
res++;
n &= (n - 1);
}
return res;
}
}