题解 | #求int型正整数在内存中存储时1的个数#
求int型正整数在内存中存储时1的个数
http://www.nowcoder.com/practice/440f16e490a0404786865e99c6ad91c9
思路
- 输入一个 int 型的正整数
- 将10进制转为2进制,方法是循环和2取余,判断是否为0,为0则写0,否则写1
- 在赋值1时,加个计数器
- 特殊处理最后余数为1,多加1个
- 输出计数器的值
题解
#include<stdio.h>
#include<string.h>
int main()
{
// 描述
// 输入一个 int 型的正整数,计算出该 int 型数据在内存中存储时 1 的个数。
int val;
int num[32]={0};
int i=0,cnt=0;
scanf("%d",&val);
while(i<32){
if(val%2 == 0){
num[i] = 0;
}else{
num[i] = 1;
cnt++;
}
i++;
val = val/2;
if(val==1){
num[i] = 1;
cnt++;
break;
}
// printf("%d",num[i]);
}
printf("%d\n",cnt);
return 0;
}