#include<iostream> using namespace std; int main() { long long n = 0,ret = 0; cin >> n; for (int i = 0; i <= 31; i++) ret += n >> i & 1; cout << ret; }
通过右移加上&1一个数可以得到这个数二进制状态下最低位的数,从最低位到最高位依次遍历,并记录1的个数即可得到答案。
#include<iostream> using namespace std; int main() { long long n = 0,ret = 0; cin >> n; for (int i = 0; i <= 31; i++) ret += n >> i & 1; cout << ret; }
通过右移加上&1一个数可以得到这个数二进制状态下最低位的数,从最低位到最高位依次遍历,并记录1的个数即可得到答案。