计算无符号整型变量的二进制中的1的个数
2013-06-02 21:08
246 查看
最简单的方法是: 遍历每个位
如果知道x&=x-1将会减少x二进制中最右边的1(The C Programming Language, 2nd, ch2.10 Exercise2-9), 则会有另外一种更高效的方法:
还可以联想到另外一个问题: 如何判断一个整型变量是2的N次方? (程序员面试宝典, 第二版, ch5.5 例题1)
References:
The C Programming Language, 2nd, Prentice Hall, ch2.10
程序员面试宝典, 第二版, 电子工业出版社, ch5.5
int bitcount(unsigned int x) { int b; for (b = 0; x != 0; x >>= 1) if (x & 0x1) ++b; return b; }
如果知道x&=x-1将会减少x二进制中最右边的1(The C Programming Language, 2nd, ch2.10 Exercise2-9), 则会有另外一种更高效的方法:
int bitcount(unsigned int x) { int b; for (b = 0; x != 0; x &= x - 1) ++b; return b; }
还可以联想到另外一个问题: 如何判断一个整型变量是2的N次方? (程序员面试宝典, 第二版, ch5.5 例题1)
References:
The C Programming Language, 2nd, Prentice Hall, ch2.10
程序员面试宝典, 第二版, 电子工业出版社, ch5.5
相关文章推荐
- 一个字节(8bit)的无符号整形变量,求二进制表示中“1”的个数。
- 汇编程序16位带符号变量计算
- 无符号整数赋值给有符号整型变量,注意数值范围
- 【Java基础】整型转换为二进制字符串(无符号右移)
- Mathcad 是一种工程计算软件,主要运算功能:代数运算、线性代数、微积分、符号计算、2D和3D图表、动画、函数、程序编写、逻辑运算、变量与单位的定义和计算等。
- 计算整型数的二进制中包含多少个1
- Mathcad 是一种工程计算软件,主要运算功能:代数运算、线性代数、微积分、符号计算、2D和3D图表、动画、函数、程序编写、逻辑运算、变量与单位的定义和计算等。
- 每天一道LeetCode-----计算整型数二进制中1的个数/返回二进制翻转后的结果
- 有符号整型和无符号整型的计算
- Bigdata Development Java_Study_01(二进制计算符号,Math常用方法)
- 练习5: 计算一个32位无符号整数在二进制中1的个数, 顺便熟悉2进制和16进制
- 无符号变量转有符号变量 && C++整型赋值越界处理(VC++)
- 对于一个字节(8bit)的无符号整形变量,求二进制表示中“1”的个数,要求算法执行效率尽可能地高
- 嵌入式C面试题-计算无符号整形变量中1的个数
- JAVA——变量,符号,大小写,二进制相关细节
- 32位int整型数的二进制表示中1的个数
- c++计算(带符号的)
- php 变量和基本语法 整型
- 计算二进制‘1’位数
- c++两个常用函数:1.二进制字符串2 hex(十六进制)。2. 栈变量字符串2堆变量