美文网首页
二进制中1的个数

二进制中1的个数

作者: ibyr | 来源:发表于2017-02-15 19:53 被阅读27次
    Question

    对于一个无符号整型变量,求其二进制表示中1的个数。
    [题目来源:编程之美]

    Note
    • 算法一:与0x01位与,右移位。
    • 算法二:n & (n-1)。
    Extension
    • 比较两个数A和B的二进制表示中有多少位是不同的:先异或,然后计算异或结果中1的位数。
    Solution
    // 解法一:求二进制表示中1的位数:n & (n-1)。
    public int countOnes(int num) {
        int count = 0;
        while (num > 0) {
            num &= num - 1;    // key
            count++;
        }
        return count;
    }
    
    // 解法二:右移位
    public int countOnes(int num) {
        int count = 0;
        while (num > 0) {
            count += num & 0x01;
            num >> 1;
        }
        return count;
    }
    

    相关文章

      网友评论

          本文标题:二进制中1的个数

          本文链接:https://www.haomeiwen.com/subject/edaqwttx.html