二进制中1的个数
#二进制中1的个数
题目描述:
请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。
题目思路:
- 当1&0,0&1,0&0都等于0
- 只有1&1才为1
所以我们可以循环判断输入整数与1相与的结果,如果结果为1,那么该数字的最右边一位肯定是1,否则为0.
当为1的时候,计数器++,然后依次无符号右移一位。
无符号右移:无论是正负数,最高位都补0
有符号右移:正数补0,负数补1.
题解代码:
public int hammingWeight(int n) {
int count = 0;
while (n != 0){
if ((n & 1) == 1){
count++;
}
n >>>= 1;
}
return count;
}

浙公网安备 33010602011771号