题解 | #求int型正整数在内存中存储时1的个数#

求int型正整数在内存中存储时1的个数

https://www.nowcoder.com/practice/440f16e490a0404786865e99c6ad91c9

#include <stdio.h>

int main() 
{
    int num,count=0;
    scanf("%d",&num);
while(num!=0)
{
    if(num%2==1)
    count++;
    num=num/2;
}
printf("%d",count);
    return 0;
}

求一个十进制数的二进制形式,方法如下:

1、将该数除以2,记录余数;

2、看第一步的商是否为0,如不为0,则继续第1步操作;

3、当商为0时,将余数按照从最后一步到第一步的顺序写出来,即为这个数的二进制形式。

例如:将25转化为二进制数。

25÷2=12……1

12÷2=6(余0)

6÷2=3(余0)

3÷2=1……1

1÷2=0……1

因此25的二进制形式为11001,不难发现,任何int型正整数在内存中存储时,含有的1个数即为短除2时余1的次数。因此可设置循环体,当输入的数短除2余1时,1的个数count++,直到商为0为止。

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务