Java Integer.highestOneBit(int num) 源码解析
2017-01-20 17:06
483 查看
这个函数返回一个int值,这个值代表num的最高位为1,其它位为0的整数,负数的最高位在第32位上,所以通常只用于负数。
源码解析:
从左往右数称之为前。
把最右边的位数都变为1,最后i-(i>>>1)得到只保留最高位的结果。
或运算 使得 有1则1,那么我们先使1位为1,然后两位,然后四位,以此类推。
参考资料:http://blog.csdn.net/trigl/article/details/51494826
源码解析:
从左往右数称之为前。
把最右边的位数都变为1,最后i-(i>>>1)得到只保留最高位的结果。
public static int highestOneBit(int i) { // 例如1000 i |= (i >> 1); // 使前2位变为1,相当于i = i | (i >> 1); i = 1000 | 0100 = 1100 i |= (i >> 2); // 使前4位变为1,由于上一步确保了前两位都是1,所以这一次移动两位,1111 i |= (i >> 4); // 使前8位变为1,1111 i |= (i >> 8); // 使前16位变为1,1111 i |= (i >> 16); // 使前32位变为1,1111 return i - (i >>> 1); // i >>> 1 无符号右移,使最高位为0,其余位为1,相减即得出结果,1111 - 0111 = 1000 }
或运算 使得 有1则1,那么我们先使1位为1,然后两位,然后四位,以此类推。
参考资料:http://blog.csdn.net/trigl/article/details/51494826
相关文章推荐
- Integer的highestOneBit方法源码解析
- Integer的highestOneBit方法源码解析
- Java Integer.highestOneBit(i)
- Java Integer.highestOneBit(i)代码品读
- Integer.highestOneBit、 Integer.bitCount 实现解析
- Java Integer.highestOneBit(i)代码品读
- Java Integer.highestOneBit(i)代码
- Java源码 Integer.bitCount实现过程
- 深入源码-java数据类型-8种基本数据类型二:Integer源码解析
- 【JDK】:java.lang.Integer源码解析
- [LeetCode][8]String to Integer (atoi)解析与模仿Java源码实现 -Java实现
- Java中Integer的变量比较源码解析
- Java源码解析Integer方法解读
- [Java多线程]-J.U.C.atomic包下的AtomicInteger,AtomicLong等类的源码解析
- Integer.highestOneBit(int i)的作用
- Java中Integer的变量比较源码解析
- 《疯狂 Java 讲义》包含PDF电子书,源码,课后习题解析
- OpenJDK源码研究笔记(五)-缓存Integer等类型的频繁使用的数据和对象,大幅度提升性能(一道经典的Java笔试题)
- Java 集合系列16之 HashSet详细介绍(源码解析)和使用示例
- OpenJDK源码研究笔记(五)-缓存Integer等类型的频繁使用的数据和对象,大幅度提升性能(一道经典的Java笔试题)