关闭

巧妙计算一个数二进制表示法中1的位数

标签: C++二进制表示1的位数
401人阅读 评论(0) 收藏 举报
分类:
//巧妙计算一个数二进制表示法中1的位数。
int fun(unsigned int n)
{
	n=(n&0x55555555)+((n>>1)&0x55555555);
	n=(n&0x33333333)+((n>>2)&0x33333333);
	n=(n&0x0f0f0f0f)+((n>>4)&0x0f0f0f0f);
	n=(n&0x00ff00ff)+((n>>8)&0x00ff00ff);
	n=(n&0x0000ffff)+((n>>16)&0x0000ffff);
	return n;
}

以217(11011001)为例,有图有真相,下面的图足以说明一切了。217的二进制表示中有5个1 :



//另一种做法
int fun(unsigned int n)
{
	int val=0;
	int i;
	for(i=0;i<8;i++)
	{
	val+=x&0x01010101;
	x>>=1;
	}
	val+=(val>>16);
	val+=(val>>8);
	return val&0xff;
}




0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

32位整数的二进制表示中有多少个1

思路1:def countOnes(self, num): # write your code here if num 2147483647: ...
  • u010510962
  • u010510962
  • 2016-03-17 16:24
  • 1183

C/C++求一个整数的二进制中1的个数

求一个整数的二进制中1的个数 收藏 题目:输入一个整数,求该整数的二进制表达中有多少个1。例如输入10,由于其二进制表示为1010,有两个1,因此输出2。 分析:这是一道很基本的考查位运算的面...
  • sdujava2011
  • sdujava2011
  • 2014-09-15 20:36
  • 2798

计算一个数的二进制位中1的个数的方法总结

方法一、通过移位分别判断各个位 int bit_count(unsigned int n) { int count;         for(count=0;n;n>>=1) { count+=n&1...
  • yangshuangtao
  • yangshuangtao
  • 2015-09-26 20:05
  • 1886

求一个数二进制表示法中1的个数诸多方法

求一个unsigned int 数的二进制表示中有多少个1?这是一道面试题可以用以下的一些方案。第一种是很容易想到的采用循环的方式并且与1进行位与运算,具体代码如下。 1unsigned int Ge...
  • luo86106
  • luo86106
  • 2011-03-20 15:12
  • 941

求一个数二进制表示法中1的个数诸多方法

求一个unsigned int 数的二进制表示中有多少个1?这是一道面试题可以用以下的一些方案。第一种是很容易想到的采用循环的方式并且与1进行位与运算,具体代码如下。 1unsigned int Ge...
  • luo86106
  • luo86106
  • 2011-03-20 15:14
  • 2674

求一个数二进制表示法中1的个数诸多方法 .

求一个unsigned int 数的二进制表示中有多少个1? 这是一道面试题可以用以下的一些方案。 第一种是很容易想到的采用循环的方式并且与1进行位与运算,具体代码如下。 unsigned in...
  • xinpo66
  • xinpo66
  • 2013-02-21 17:08
  • 737

快速计算整数的二进制表示法中1的个数(编程珠玑9章课后习题7)

http://www.cppblog.com/zenliang/articles/131761.html 题目:给定一个无符号32位整数x,求x的二进制表示法中含1的个数? 第一种算法...
  • littlestream9527
  • littlestream9527
  • 2013-04-17 22:16
  • 574

快速计算整数的二进制表示法中1的个数

快速计算整数的二进制表示法中1的个数 题目:给定一个无符号32位整数x,求x的二进制表示法中含1的个数?  第一种算法:  C代码   int On...
  • lh842824672
  • lh842824672
  • 2013-10-04 22:38
  • 756

快速计算整数的二进制表示法中1的个数

题目:给定一个无符号32位整数x,求x的二进制表示法中含1的个数? 第一种算法: int OneCount(unsigned int x) {   for(int count=0;...
  • haichuan1988524
  • haichuan1988524
  • 2015-07-14 20:42
  • 274

二进制表示法中1的个数最多的整数 构造

1的个数最多的整数 给定整数a和b(0≤a≤b≤263-1),输出区间[a,b]中对应二进制表示含1的个数最多的整数,如果存在多个解,则输出符合条件的最小的整数。 输入格式: 第1行:一个整数T(1≤...
  • ECNU_LZJ
  • ECNU_LZJ
  • 2017-04-25 16:27
  • 311
    个人资料
    • 访问:14416次
    • 积分:567
    • 等级:
    • 排名:千里之外
    • 原创:42篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条