HJ62 查找输入整数二进制中1的个数

题目:

HJ62 查找输入整数二进制中1的个数

题解一:转换二进制

1.求10进制数的二进制串

2.累计1的数量

    public int getCountFromBinary(int number) {
        int count = 0;
        while (number > 0) {
            int mod = number % 2;
            if (mod == 1) {
                count++;
            }
            number /= 2;
        }

        return count;
    }

时间复杂度:O(n)

题解二:位运算

1.与1做与运算,只有末位为1的数与1做与运算结果才为1

2.每计算一次,数字右移一位,直到为0

3.统计1的数量

    public int getCountFromBinary(int number) {
        int count = 0;
        while (number > 0) {
            count += number & 1;
            number >>= 1;
        }

        return count;
    }

时间复杂度:O(n)

你可能感兴趣的:(算法,华为,二进制,位运算)