码迷,mamicode.com
首页 > 其他好文 > 详细

读书笔记一:求二进制数中1的个数

时间:2016-09-12 12:22:17      阅读:98      评论:0      收藏:0      [点我收藏+]

标签:

问题描述:

        对于一个字节(8bit)的无符号整型变量,求其二进制表示中“1”的个数,要求算法的执行效率尽可能高效。

        在编写程序的过程中,根据实际应用的不同,对存储空间或效率的要求也不一样。比如在PC上与在嵌入式设备上的程序编写就有很大的差别。

分析与解法:

解法一:

   举一个八位的二进制例子来分析。对于二进制操作,我们知道,除以一个2,原来的数字将会减少一个0.如果除的过程中有余,那么就表示当前位置有一个1.

以10100010为例:

第一次除以2时,商为1010001,余为0.

第二次除以2时,商为101000,余为1.

因此,可以考虑利用整型数据除法的特点,通过相除和判断余数的值来分析。

 

 1 int BitCount(unsigned int n)
 2 {
 3     unsigned int c =0 ; // 计数器
 4     while (n)
 5     {
 6         if(n % 2 ==1) // 当前位是1
 7             c++ ; // 计数器加1
 8         n = n / 2;
 9     }
10     return c ;
11 }

 

 

 

解法二:使用位操作

 

读书笔记一:求二进制数中1的个数

标签:

原文地址:http://www.cnblogs.com/qinduanyinghua/p/5864151.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!