题目描述
输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数。
输入描述:
输入一个整数(int类型)
输出描述:
这个数转换成2进制后,输出1的个数
输入
5
输出
2
普通运算方法
#include<iostream> using namespace std; int main(){ int num,count=0; cin>>num; while(num){ if(num%2==0) num/=2; else{ count++; num/=2; } } cout<<count; return 0; }
运用右移运算符
11111111 11111111 11111111 11111111 00000000 00000000 00000000 00000001
//执行value>>=1后结果为
11111111 11111111 11111111 11111111
0000000 00000000 00000000 00000000(1)
//运用value&1==1
//最低位为1时,value&1=1;
//最低位为0时,value&1=0
#include<iostream> using namespace std; int main() { int value,count=0; cin>>value; while(value) { if(value&1) count++; value>>=1; } cout<<count; return 0; }