华为OJ:求int型正整数在内存中存储时1的个数

2/22/2017来源:ASP.NET技巧人气:655

求int型正整数在内存中存储时1的个数 输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数。

输入描述: 输入一个整数(int类型)

输出描述: 这个数转换成2进制后,输出1的个数

输入例子: 5

输出例子: 2

解答: #include <iostream> #include <vector> using namespace std; int main() { int n; vector<int>v; while(cin>>n) { int count = 0; v.clear(); while(n) { v.push_back(n%2); n/=2; } for(vector<int>::iterator it=v.begin();it!=v.end();++it) { if(*it) count++; } cout<<count<<endl; } return 0; } 解法二 其实这道题的原意是想让编程人员使用位运算,代码如下: #include <iostream> using namespace std; int main() { int n; while(cin>>n) { int count = 0; while(n) { n = n&(n-1); count++; } cout<<count<<endl; } return 0; }