标题:如何不用循环统计整数值中 1 的个数
取消只看楼主
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
结帖率:79.17%
已结贴  问题点数:20 回复次数:2 
如何不用循环统计整数值中 1 的个数
比如,整数0x0012中对应的二进制中 1 的个数为 2,
如果不允许使用循环,应该如何实现呢 ?
搜索更多相关主题的帖子: 统计 整数 
2009-10-20 21:57
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
得分:0 
//怎样快速算出一个二进制32位整数中比特位为1的个数?
 size_t   bit_cnt(unsigned   long   value)   
  {         
                  
  value   =   (value   &   0x55555555)   +   (   (value   >>   1)   &   0x55555555);                  
  value   =   (value   &   0x33333333)   +   (   (value   >>   2)   &   0x33333333);   
  value   =   (value   &   0x0f0f0f0f)   +   (   (value   >>   4)   &   0x0f0f0f0f);                 
  value   =   (value   &   0x00ff00ff)   +   (   (value   >>   8)   &   0x00ff00ff);   
  value   =   (value   &   0x0000ffff)   +   (   (value   >>   16)   &   0x0000ffff);   
        
          return   (size_t)value;   
  }

~~~~~~~~~~~~~~~好好学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2009-10-20 23:06
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
得分:0 
大家看懂 3楼实现的原理了吗?

~~~~~~~~~~~~~~~好好学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2010-07-04 01:46



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-289290-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.118601 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved