计算一个数的二进制中1的个数
2013-05-18 08:42
169 查看
/* *计算一个数的二进制中1的个数 */ #include int numberOf1InBinary(const unsigned int a); int numberOf1InBinary_Mask(const unsigned int a); int main(int argv , char** argc) { int a = 8 ; printf("the number of 1 in %d of binary is %d\n",a,numberOf1InBinary(a)); return 0 ; } /* *非常高效率的算法:时间复杂度为O(m),其中m为1的个数 * 类似求补的方法,将右边的1不断清零,直至整个数为0。 * */ int numberOf1InBinary(const unsigned int a) { int number = a ; int counter = 0 ; while( number ) { number = number && (number-1) ; counter++ ; } return counter ; } /* *普遍的:计算一个数的二进制中1的个数的方法 *算法思想:通过构造掩码,对原数或掩码不断移位来计算 时间复杂度为O(n),其中n为数的长度 */ int numberOf1InBinary_Mask(const unsigned int a) { int number = a ; int counter = 0 ; int mask = 1 ; while( number ) { if( number&mask ) counter++ ; number = number >> 1 ; } return counter ; }
相关文章推荐
- 计算将一个十进制整数转换成二进制含多少个1
- 计算一个数的二进制表示中有多少个1
- 编程练习:计算一个数的二进制形式含有几个1
- 计算一个数的二进制中1的个数
- 【C语言】计算一个数二进制中一的位数
- 计算一个整数二进制位中1的个数。要求效率尽可能的高。且能正确求正数和负数的二进制中1的个数。
- 小技巧,计算一个十进制整数在二进制下“1”的个数
- [c]位运算计算一个数的二进制
- Bit Manipulation-计算一个整数中二进制中1的个数
- 计算一个数字二进制1的个数
- 算法的强大——快速计算一个正二进制整数中包含多少个1
- 计算一个字符的二进制表示中有几个1
- 计算一个数的二进制中1的个数
- 计算一个整数的二进制中1的个数
- 计算一个整数二进制表示时有多少位是为1的算法
- Fast bit count问题(即计算一个unsigned int的二进制表达中1的数目)
- 计算一个数的二进制的存在的一的位数
- 计算1个数--计算一个整数二进制位中1的个数。要求效率尽可能的高。且能正确求正数和负数的二进制中1的个数。
- 计算一个十进制数的二进制表示有多少位1
- 计算一个数二进制中1的个数