您的位置:首页 > 其它

求一个数包含多少个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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐