Integer.bitCount函数解释
来源:互联网 发布:手机淘宝在线使用 编辑:程序博客网 时间:2024/05/16 19:14
转 http://blog.csdn.net/zhouzipeng000/article/details/56676885
public static int bitCount(int i) { // HD, Figure 5-2 i = i - ((i >>> 1) & 0x55555555); i = (i & 0x33333333) + ((i >>> 2) & 0x33333333); i = (i + (i >>> 4)) & 0x0f0f0f0f; i = i + (i >>> 8); i = i + (i >>> 16); return i & 0x3f; }
函数功能说明:技术整型i二进制表示中1的个数。
解释过程,设:
要求的结果为:
第一步i = i - ((i >>> 1) & 0x55555555);
(5的二进制为0101)得到的结果为:
第二步i = (i & 0x33333333) + ((i >>> 2) & 0x33333333);
(3的二进制为0011)得到的结果为:
第三步i = (i + (i >>> 4)) & 0x0f0f0f0f;
(0f的二进制为00001111)中i + (i >>> 4)得到的结果为:
所以i = (i + (i >>> 4)) & 0x0f0f0f0f;
得到的结果为:
第四步i = i + (i >>> 8);
得到的结果为:
第五步i = i + (i >>> 16);
得到的结果为:
最后i & 0x3f;
得到的结果为:
因为最大的情况为32位1相加即
- Integer.bitCount函数解释
- Integer.bitCount函数解释
- Integer.bitCount()理解
- Integer.bitCount(int i)原理
- Integer.highestOneBit、 Integer.bitCount 实现解析
- Java源码 Integer.bitCount实现过程
- bitcount
- 完全解读 Java中的 Integer.bitCount(int i)源码
- JDK源码学习--JDK中Integer类的BitCount方法实现过程
- Integer.bitCount(int i)求二进制数中1的个数
- bitcount函数统计其整数参数的值为1的二进制位的个数
- 练习 2-9 在求对二的补码时,表达式x &= (x – 1)可以删除x中最右边值为1的一个二进制位。请解释这样做的道理。用这一方法重写bitcount函数,以加快其执行速度。
- 练习 2-9 在求对二的补码时,表达式x &= (x – 1)可以删除x中最右边值为1 的一个二进制位。请解释这样做的道理。用这一方法重写bitcount函数,以加快其执行速度。
- bitcount using bit method
- Java bitCount() 源码
- Redis汉明重量 bitcount
- Ruby Integer的常用函数
- 函数的封装解释
- js获取五星级评分字符串
- 静态页面化
- matlab入门学习资料
- Android蓝牙开发---与蓝牙模块进行通信
- 超详细Android接入支付宝支付实现,有图有真相
- Integer.bitCount函数解释
- Android中ListView控件onItemClick事件中获取listView传递的数据
- MySQL修改root密码的多种方法
- Android switch语句“case expressions must be constant expressions”
- 八大排序算法
- SQLServer2008 R2需要安装那些功能
- Flex动画
- ERROR:The type javax.servlet.http.HttpServletRequest cannot be resolved.
- ubuntu配置jdk