highestOneBit 获取一个int类型的二进制取整 1public static int highestOneBit(int i) { 2 // HD, Figure 3-1 3 i |= (i >> 1); 4 i |= (i >> 2); 5 i |= (i >> 4); 6 i |= (i >> 8); 7 i |= (i >> 16); 8 return i - (i >>> 1); 9} 上述代码粗看会不理解实现原理,但是跟着推导一次就能理解算法的思想。假定一个int的二进制表达式是100001000,这个常数的迭代过程如下: 第一次结束 100001000 -> 110001100 第二次结束 110001100 …
阅读更多