Java Integer.highestOneBit(int num) 源码解析
来源:互联网 发布:最靠谱的网络兼职 编辑:程序博客网 时间:2024/04/30 06:01
这个函数返回一个int值,这个值代表num的最高位为1,其它位为0的整数,负数的最高位在第32位上,所以通常只用于负数。
源码解析:
从左往右数称之为前。
把最右边的位数都变为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
1 0
- Java Integer.highestOneBit(int num) 源码解析
- Integer的highestOneBit方法源码解析
- Integer的highestOneBit方法源码解析
- Java Integer.highestOneBit(i)代码
- Integer.highestOneBit、 Integer.bitCount 实现解析
- Integer.highestOneBit(int i)的作用
- Java Integer.highestOneBit(i)代码品读
- Java Integer.highestOneBit(i)代码品读
- Java Integer中的highestOneBit()和lowestOneBit()方法
- Java Integer.highestOneBit(i)代码品读
- highestOneBit()算法解析
- int和Integer解析
- 【JDK】:java.lang.Integer源码解析
- 完全解读 Java中的 Integer.bitCount(int i)源码
- java 值传递与引用传递解析大全! int Integer
- java int Integer
- java Integer int
- Java Integer和int
- 查找字符串中是否包含相同字符
- mac 打包 dmg,打包mac应用
- STM32笔记(二)----编程优化
- Android学习笔记(十)--OKHttp持久化cookies实现模拟登陆
- 产品需求文档(PRD)写作(四) 写前准备(信息结构图)
- Java Integer.highestOneBit(int num) 源码解析
- Qt串口通讯实现--ARM开发板环境
- 安装配置elasticsearch
- 网络编程的头文件
- 多线程断点下载
- pat-bl-1031
- OpenCV3.0 Examples学习笔记(17)-morphology2.cpp-erode,dilate,morphologyEx函数实现数学形态学变换
- [Android] 图像各种处理系列文章合集
- svm 多分类机制