二进制中1的个数

#二进制中1的个数

题目描述:

请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。

题目思路:

  1. 当1&0,0&1,0&0都等于0
  2. 只有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;
    }
posted @ 2020-04-23 21:54  杨小星儿  阅读(128)  评论(0)    收藏  举报