您的位置:首页 > 其它

二进制中1的个数

2014-04-14 10:12 183 查看
题目:请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。

思路:运用”位运算“

代码:

#include<iostream>
using namespace std;
int NumberOf1(int n)
{
int count=0;
unsigned int flag=1;
while(flag)
{
if(n&flag)
count++;
flag=flag<<1;
}
return count;
}
int main()
{
int n;
cout<<"please enter a int:";
cin>>n;
cout<<n<<" has "<<NumberOf1(n)<<" one";
cout<<endl;
return 0;
}


扩展:以上算法复杂度与整数的位数有关。如果你分析,会发现以下结论:如果把一个整数减去1,再和原整合做与运算,会把该整数最右边一个1变为0.
reference:剑指Offer(何海涛著)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息