Integer.highestOneBit

    public static int highestOneBit(int i) {
        // HD, Figure 3-1
        i |= (i >>  1);
        i |= (i >>  2);
        i |= (i >>  4);
        i |= (i >>  8);
        i |= (i >> 16);
        return i - (i >>> 1);
    }

a|=b等价于a=a|b

1.当i>0时,返回的值是i的二进制最高位为1,右边全为0。
2.当i=0;返回0。
3.当i<0,返回Integer.MIN_VALUE.

你可能感兴趣的:(Integer.highestOneBit)