描述
输入一个 int 型的正整数,计算出该 int 型数据在内存中存储时 1 的个数。
数据范围:保证在 32 位整型数字范围内
输入描述:
输入一个整数(int类型)
输出描述:
这个数转换成2进制后,输出1的个数
示例1
输入:5
输出:2
示例2
输入:0
输出:0
题比较简单,只让提1的个数,没让把二进制写出来。
其实思路都一样的,最大32位,我就从32位开始除,能除动就给1,除不动就给0,除动后将原数字减去除动的数字,继续向后除。。。。
#include <stdio.h>
#include<math.h>
int main() {
int x;
int i=0,count=0,b;
scanf("%d",&x);
if(x==0)
{
printf("0");
}
else
{
for(i=32;i>=0;i--)
{
b=pow(2,i);
if(x/b>=1)
{
x-=b;
count++;
}
}
printf("%d",count);
}
return 0;
}