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.