Java Integer 位操作 numberOfTrailingZeros && numberOfLeadingZeros
来源:互联网 发布:国际贸易中心数据库 编辑:程序博客网 时间:2024/05/17 08:06
numberOfTrailingZeros
public static int numberOfTrailingZeros(int i) { // HD, Figure 5-14 int y; if (i == 0) return 32; int n = 31; y = i <<16; if (y != 0) { n = n -16; i = y; } y = i << 8; if (y != 0) { n = n - 8; i = y; } y = i << 4; if (y != 0) { n = n - 4; i = y; } y = i << 2; if (y != 0) { n = n - 2; i = y; } return n - ((i << 1) >>> 31); }
说明: n为目前结果的最大值
y!= 0 表明高n(n = 16/8/4/2)位对结果不可贡献,要减去。
y==0 , 表明贡献,所以保留
examples:
numberOfLeadingZeros
public static int numberOfLeadingZeros(int i) { // HD, Figure 5-6 if (i == 0) return 32; int n = 1; if (i >>> 16 == 0) { n += 16; i <<= 16; } if (i >>> 24 == 0) { n += 8; i <<= 8; } if (i >>> 28 == 0) { n += 4; i <<= 4; } if (i >>> 30 == 0) { n += 2; i <<= 2; } n -= i >>> 31; return n; }
说明: n为目前结果的最大值
i >>> n == 0 表明高n(n=16/8/4/2)位对结果有贡献,要计入结果。
i >>> n != 0 , 表明无贡献,不计入结果
n 如果初始化为0,if(i>>>31 == 0) n++; 更易理解
阅读全文
0 0
- Java Integer 位操作 numberOfTrailingZeros && numberOfLeadingZeros
- Integer.numberOfLeadingZeros(int i)
- Java Integer 位操作 reverse
- Integer位操作技巧解析
- 位操作求出integer的绝对值
- Java源码分析:Integer中的位运算
- Java: 位操作
- java位操作符
- java位操作
- java位操作
- Java中的位操作
- JAVA 位操作
- JAVA 位操作详解
- java 位操作符
- java位操作
- java位操作
- java位操作
- Java位操作
- MaxCompute Studio使用心得系列1——本地数据上传下载
- Unity3d 编辑器扩展系列-RequireComponent
- 前端面试题-小米二面
- IDEA报错
- 前端常见单位
- Java Integer 位操作 numberOfTrailingZeros && numberOfLeadingZeros
- Intellij IDEA 自动消除行尾空格
- HDU-1512-Monkey King
- 配置文件路径
- 有趣的HTML5:离线存储
- Material Master、Enhancement for Material Master
- oracle中group by字符拼接
- 微信提示:非微信官方网页,继续访问将转换成手机预览模式
- SVN使用教程总结