一,题目要求
1,题目描述:输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数
2,输入描述:输入一个整数(int类型)
3,输出描述:这个数转换成2进制后,输出1的个数
4,输入例子:5
5,输出例子:2
二,思路分析
假如输入为5时,只要让5/2=2 ......余1,
1,思路一:可以想到的是将输入的整数直接转换为二进制数,然后将二进制数的每一位都赋值给数组,这样再求数组的和,即可以实现内存为1的计数。代码如下:
#include <stdio.h>
int main()
{
int a,i=0,j=0,b[32],count=0;
scanf("%d",&a);
while(a>0)
{
b[i] = a%2;
a/=2;
i++;
}
for(j=i-1;j>=0;j--)
{
count = count + b[j];
}
printf("%d",count);
return 0;
}
2,思路二:可以使用位运算的方法,用移位得出每一位是否为1,如果为1,则计数变量加1,否则计数变量不变
#include <iostream>