求int型正整数在内存中存储时1的个数
描述
输入一个 int 型的正整数,计算出该 int 型数据在内存中存储时 1 的个数。
数据范围:保证在 32 位整型数字范围内
输入描述:输入一个整数(int类型)
输出描述:这个数转换成2进制后,输出1的个数
利用除二取余法
#include <iostream>
using namespace std;
int main(){
int n; cin>>n;
int m[32]={0};int i=0;
while(n!=0){
m[i]=n%2;
n=n/2;
i++;
}
int count=0;
for(int j=0;j<32;j++){
if(m[j]==1) count++;
}
cout<<count<<endl;
return 0;
}
利用bitset()函数
#include <iostream>
#include <bitset>//bitset所需头文件
using namespace std;
int main() {
int n;
cin >> n;
/*bitset<n> b(n);
n是所化二进制的位数;
b是n的一个副本;*/
bitset<32>b(n);
cout << b << endl;
cout << b.count() << endl;//count函数对其中的1进行计数;
return 0;
}
结果
5
00000000000000000000000000000101
2
关于bitset()函数:(51条消息) c++ bitset类用法_qll125596718的博客-CSDN博客_c++bitset