题目描述:
输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数。
输入描述:
输入一个英文语句,每个单词用空格隔开。保证输入只包含空格和字母。
输出描述:
这个数转换成2进制后,输出1的个数
示例:
输入:5
输出:2
解题思路:
判断2进制中1的个数有两个常用办法:第一个就是位运算,yyds;第二个就是右移赋值,统计1的个数。
测试代码:
位运算
#include<iostream> using namespace std; int main() { int n; cin >> n; int count; for (count = 0; n; n &= n - 1) { count++; } cout << count << endl; return 0; }
右移运算
#include<iostream> using namespace std; int main () { int n, res = 0; cin >> n; while(n) { if(n % 2) res ++; n >>= 1; } cout << res << endl; return 0; }