Loading

【剑指 Offer】15. 二进制中 1 的个数

题目描述

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

Java

public class Soulution15 {
    public static void main(String[] args) {
        Soulution15 soulution15 = new Soulution15();
        Solution solution = soulution15.new Solution();
        System.out.println(solution.hammingWeight(9));
    }

    class Solution {

        /**
         * 方法一:逐位判断
         * 1. 根据与运算,设二进制数字为 n,则:
         *   1.1 若 n&1 = 0,则 n 二进制最右一位为 0;
         *   1.2 若 n&1 = 1,则 n 二进制最右一位为 1;
         * 2. 进行循环判断:
         *   2.1 判断 n 最右一位是否为 1,根据结果计数
         *   2.2 将 n 无符号右移一位
         */
        public int hammingWeight(int n) {
            int res = 0;
            while (n != 0) {
                res += n & 1;
                n >>>= 1;
            }
            return res;
        }
    }
}

C++


Python


总结

posted @ 2021-03-11 15:30  Parzulpan  阅读(67)  评论(0编辑  收藏  举报