如何计算一个字节中1的位数

一个巧妙的算法

static  uint8_t bitcount(uint8_t n)  
{
  uint8_t count=0 ;
  while (n)  
  {
      count++ ;
      n &= (n - 1) ;
  }
  return count ;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
超大位数计算程序清单 1. 第一个操作数文件 A1.txt 2. 第二个操作数文件 A2.txt 3. VC6老版本程序 bc.exe 4. VC2015新版本程序 BigCom.exe 5. 新版乘法批处理 cheng.bat 6. 新版除法批处理 chu.bat 7. 新版加法批处理 jia.bat 8. 新版减法批处理 jian.bat 9. 随机测试文件生成 CreateTestFiles.py 10随机测试文件生成图形版 DataCreater.exe 说明: 1. 测试数据的构造 可以使用清单10的软件在图形化条件下构建测试文件,但是数据是固定1位或者几位的简单重复;如果需要随机的测试数据,可以使用清单9的python脚本。使用前可以到www.python.org下载python 2.7安装一下就可以在命令行运行,然后就能自动生成指定长度的测试文件A1和A2了。 2.测试的验证 由于数据量比较大,可以分别使用程序清单4的软件和其他5~8批处理计算结果比较,用于验证计算的结果是否一致。其清单5~8的批处理是调用最新版2015实现;要使用清单3老版本的程序,可以按照5~8构建对应测试批处理或者直接在命令行指定参数,例如进行乘法可以使用命令 bc m。需要注意, 测试的时候C1.txt会被覆盖,需要先重命名上一次的文件。 3.关于最大计算位数当前设定的是不超过2147483648位,即计算的结果也不能超过这个位数。 4.本次新版发布是支持Win7 x64以及以后的平台,如果需要,可以编译为Linux或者MacOS平台上进行运算。 5.文件C1.txt是使用新版程序结算乘法的结果,C2.txt是用旧版计算的结果,可以对比一下结果一致。但使用时间相差了几十秒!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值