剑指offer找数中1的个数
- 对于如果给定的数全是正数,可以使用循环取模1的方式获取
public int hammingWeight(int n) {
int sum = 0;
while(n>1){
if(n%2==1)sum++;
n /= 2;
}
if(n==1)sum++;
return sum;
}
- 通用法,跟1与,然后进行无符号进位的方式求解,可用于有符号整数无符号整数
public int hammingWeight(int n) {
int sum = 0;
while(n!=0){
sum += (n&1);
n >>>= 1;
}
return sum;
}

浙公网安备 33010602011771号