#include <iostream>
using namespace std;
class Num
{
public:
int findNumberOf1();
void setN(int n=0);
private:
int num;
};
void Num::setN(int n)
{
num=n;
}
int Num::findNumberOf1()
{
int ret=0;
int n=num;
if(n<0)
{
n=n&(0x7fffffff);
++ret;
}
while(n)
{
if((n&1)==1)
++ret;
n/=2;
}
return ret;
}
int main()
{
Num N_1;
int n;
while(cin>>n)
{
N_1.setN(n);
cout<<N_1.findNumberOf1()<<endl;
}
return 0;
}
这个题目很有意思。。要考虑负数的情形!!!
我的做法不给力,,网上大牛的做法很好
http://blog.youkuaiyun.com/u012618247/article/details/48392279
//以下代码是在以上网址拷贝过来,,十分给力,收藏了!
#include<iostream>
using namespace std;
int main()
{
long a;
cin>>a;
int cnt(0);
while(a)
{
a=a&(a-1);
cnt++;
}
cout<<cnt;
return 0;
}