求一个数包含多少个1
2011-07-02 10:14
148 查看
计算一个unsigned int数包含多少个1,源码:
#include <iostream>
using namespace std;
// 计算一个unsigned int数含多少个1
int bitCount1(unsigned int word)
{
int n = 0;
int density[16] = {0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4}; // 计算出0-15各包含多少个1
while(word)
{
n += density[word & 0xF]; // 取最后4位
word >>= 4; // 4位为一组,每4 bit可以产生2的4次方个组合,所以density数组为16个元素
}
return n;
}
// 计算一个unsigned int数含多少个1
int bitCount2(unsigned int word)
{
int n = 0;
while(word)
{
n += (word & 0x1); // 取最后一位
word >>= 1; // 右移一位
}
return n;
}
int main()
{
unsigned int word = 0x18F;
cout<<bitCount1(word)<<endl;
cout<<bitCount2(word)<<endl;
return 0;
}
#include <iostream>
using namespace std;
// 计算一个unsigned int数含多少个1
int bitCount1(unsigned int word)
{
int n = 0;
int density[16] = {0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4}; // 计算出0-15各包含多少个1
while(word)
{
n += density[word & 0xF]; // 取最后4位
word >>= 4; // 4位为一组,每4 bit可以产生2的4次方个组合,所以density数组为16个元素
}
return n;
}
// 计算一个unsigned int数含多少个1
int bitCount2(unsigned int word)
{
int n = 0;
while(word)
{
n += (word & 0x1); // 取最后一位
word >>= 1; // 右移一位
}
return n;
}
int main()
{
unsigned int word = 0x18F;
cout<<bitCount1(word)<<endl;
cout<<bitCount2(word)<<endl;
return 0;
}
相关文章推荐
- 问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。 输入格式 输入包含一个整
- IBM站一个网页到底包含了多少技术
- 一个包含着构造函数虚析构函数类大小为多少?
- 一个缘字,包含了多少变数和偶然
- 给你一个字符串,里面只包含"(",")","[","]"四种符号,请问你需要至少添加多少个括号才能使这些括号匹配起来。
- java判断一个字符串包含多少其他字符串
- 把一个包含n个正整数的序列划分成m个连续的子序列。设第i个序列的各数之和为S(i),求所有S(i)的最大值的最小值是多少?
- uva 11529 求一个平面内有多少个凸边形 或者求所有三角形包含点的总个数
- 一个进程最多能包含多少线程
- 算出 一个数值中包含多少个 相应的数
- (三)linux下c语言用fgets()函数统计一个文本文件包含多少行
- [题解]编程设有一个n*m方格的棋盘(1<=m,n<=100),求该棋盘包含多少正方形,长方形?
- 对于一个数字,我们可以直观的了解到它所含有的数字,例如: 3243中包含1个2、2个3、1个4。 那么,给你一个数n,求从1到n之间的所有这些数字中,总共包含多少个m。
- 编写一个程序,它打开一个文本文件,逐个字符地读取该文件,直到到达文件末尾,然后指出该文件中包含多少个字符
- 算法的强大——快速计算一个正二进制整数中包含多少个1
- 算法的强大——快速计算一个正二进制整数中包含多少个1
- java循环练习:输入一个字符串,统计该字符串中分别包含多少个数字,多少个字母,多少个其他字符
- 输入一个字符串,统计该字符串中分别包含多少个数字,多少个字母,多少个其他字符
- 在linux下,如何使用find命令查看一个目录下包含多少文件
- IBM站一个网页到底包含了多少技术--看分析