java中的Integer类里面的bitCount方法是不是统计int i的二进制补码里面有几个1,这个方法内容帮忙解释 30

publicstaticintbitCount(inti){//HD,Figure5-2i=i-((i>>>1)&0x55555555);i=(i&0x33333333)... 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;
}
展开
 我来答
llei32wang
2013-05-07 · TA获得超过2736个赞
知道大有可为答主
回答量:1478
采纳率:60%
帮助的人:1516万
展开全部
bitCount 方法是用来统计参数i转成2进制后有多少个1 而不是统计补码有多少个一。
方法也大致解释下 能看懂就扩展下自己的思路,不懂的话就记住吧。
i = i - ((i >>> 1) & 0x55555555); 把i的二进制 两位一组统计1的数目

i = (i & 0x33333333) + ((i >>> 2) & 0x33333333);把刚才的结果4位一组 统计 1的数目
i = (i + (i >>> 4)) & 0x0f0f0f0f; 8位1组统计
i = i + (i >>> 8); 16位一组统计 结果放在 后8位

i = i + (i >>> 16); 32位1组统计 结果放在 后16位
整数固定是32位
i & 0x3f 由于8位以上统计时 并没有过滤掉高位的数字,所以在这里过滤掉无效的数字。得到含有1的数目
匿名用户
2013-05-07
展开全部
这个应该是不对的!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式