Integer.bitCount函数详解

2018-03-27  本文已影响29人  lwtzzz

今天做了一道关于这个函数的题,就对他的源码分析了一下。

先上源码:

public static int bitCount(int i) {

1        i = i - ((i >>> 1) & 0x55555555);

2        i = (i & 0x33333333) + ((i >>> 2) & 0x33333333);

3        i = (i + (i >>> 4)) & 0x0f0f0f0f;

4        i = i + (i >>> 8);

5        i = i + (i >>> 16);

6        return i & 0x3f;

    }

简书的编辑器真难用

插入图片之后就不能再下边编辑了是什么鬼。。

算了,就这样吧。要明白他这个>>>和& 0x55555555,& 0x33333333是什么意思。

>>>1的意思是把下面这个式子的b0去掉,用b1代替,同意往左移动。

& 0x55555555,16进制转化成二进制是1010101010101010101010101010101

& 0x33333333,16进制转化成二进制是110011001100110011001100110011

首先设:

上一篇 下一篇

猜你喜欢

热点阅读