Java Integer.bitCount方法的实现分析

Java的Integer类中的bitCount(int i)方法好像可以返回二进制形式1的数量,其实现逻辑如下:

public static int bitCount(int i) {
        // HD, Figure 5-2
        i = i - ((i >>> 1) & 0x55555555);
        i = (i & 0x33333333) + ((i >>> 2) & 0x33333333);
        i = (i + (i >>> 4)) & 0x0f0f0f0f;
        i = i + (i >>> 8);
        i = i + (i >>> 16);
        return i & 0x3f;
    }

能讲讲这里面的道理吗?到底是怎么计算出1的数量的。

阅读 2.8k
1 个回答
推荐问题
宣传栏