C语言实现将一个输入的十进制数转换为二进制输出

一、意义

    由于计算机是由一系列电子元件组成的,这些元件只能处理两种状态:开和关。这两种状态可以用二进制表示,其中0代表关闭状态,1代表开启状态。因此,计算机只能存储和处理二进制数

二、原理方法

除二取余法是一种将十进制数转换为二进制数的方法。其原理如下:

将待转换的十进制数不断除以2,直到商为1为止。每次除法的余数就是二进制数的一位。(由于不断除以2,所以任何数除以2的余数只有1或0)

举个例子,将十进制数27转换为二进制数:

第一步:27 ÷ 2 = 13 余 1,将余数1写在最低位上(也就是书面形式的最右边);

第二步:13 ÷ 2 = 6 余 1,将余数1写在次低位上;

第三步:6 ÷ 2 = 3 余 0,将余数0写在再次低位上;

第四步:3 ÷ 2 = 1 余 1,将余数1写在再再次低位上;

第五步:将第四步3 ÷ 2 = 1的商1写在最高位上(也就是书面形式的最左边);

所以27的二进制表示为11011

除二取余法的原理可以简单总结为:将十进制数不断除以2,将每次的余数从低位到高位依次写下来,最高位为最后一次的商:1,得到的就是该数的二进制表示。

三、代码实现

  当我们理解了上述原理方法以后,就可以思考如何把原理方法使用代码表示出来。

  1、首先需要一个循环,用来存放每一次的余数进数组,由于是顺序存储,所以最后需要倒序输出。

2、其次,当商为1的时候结束循环。再把最后一次的商1存入数组的最后一个地址。

3、最后倒序输出即可大功告成。

代码如下:
#include <stdio.h>
  8 
  9 int main(int argc, char *argv[])
 10 {
 11     int i,n=0;//i是从键盘输入的需要转换的十进制数
 12     int a[100];//定义一个数组,用来存放得到的余数1和0
 13     printf("请输入一个整数:");
 14     scanf("%d",&i);
 15     do{
 16         a[n]=i%2;//每次存放一个余数进数组,先从a[0]开始存入
 17         n++;
 18         i=i/2;//此时由于之前的i除以了2,所以下次循环i变成从i/2开始
 19     }
 20     while(i!=1);//商为1的时候结束循环
 21     a[n]=1;//把商1存入数组的最后一个地址
 22     printf("这个整数的二进制为:");
 23     //倒叙输出数组中的数
 24     for(n;n>=0;n--){
 25         printf("%d",a[n]);
 26     }
 27     puts("");//换行符
 28     return 0;
 29 } 
运行结果:
请输入一个整数:5
这个整数的二进制为:101

请输入一个整数:8
这个整数的二进制为:1000

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值