【摘自编程之美】
#include <iostream>
using namespace std;
int findone(unsigned int n)
{
int i;
for(i=0; n>0; n>>=1)
i+=(n&1);
return i;
}
int func(unsigned int n)
{
int count=0;
while(n>0)
{
n&=(n-1);
count++;
}
return count;
}
int main()
{
int n;
cin >> n;
cout << findone(n) << endl;
cout << func(n) << endl;
return 0;
}
本文介绍了一种使用位操作来计算整数中1的个数的方法。提供了两种不同的实现方式:一种是通过循环移位并检查每一位;另一种是利用位运算技巧逐个消除1,直至整数变为0。这两种方法都有效地解决了问题,并且展示了位操作的强大能力。

被折叠的 条评论
为什么被折叠?



