首页 > 其他分享 >C语言实现将一个输入的十进制数转换为二进制输出

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

时间:2024-10-14 13:48:16浏览次数:3  
标签:27 二进制 C语言 int 数组 余数 十进制

一、意义

    由于计算机是由一系列电子元件组成的,这些元件只能处理两种状态:开和关。这两种状态可以用二进制表示,其中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

标签:27,二进制,C语言,int,数组,余数,十进制
From: https://blog.csdn.net/qq_63297756/article/details/142797754

相关文章

  • C语言学习3
    二分法查找    二分法查找,也称为折半查找,是一种在有序数组中查找特定元素的高效算法。该算法的基本思想是将数组分成两半,比较中间元素与目标值的大小,然后选择一半继续查找,直到找到目标值或确定目标值不存在。步骤确定数组的左右边界索引,通常左边界为0,右边界为数组......
  • 初始C语言
    目录引语计算机语言的发展一.c语言的定义第一个c语言程序二.数据类型1.数据类型大小计算机单位换算......
  • Wx64ST:一款轻松可修改的C语言Shellcode模板
    原创Alpha_h4ckFreeBuf关于windows_x64_shellcode_templatewindows_x64_shellcode_template简称为Wx64ST,它是一款功能强大的Shellcode模板,该模板基于C语言编写,其简单、可扩展和易于修改等特性可以帮助广大安全研究人员轻松开发适用于Windowsx64的Shellcode。值得一提的是,......
  • C语言——指针全解
    目录一、指针变量  二、指针和指针类型        1、指针类型        2、指针变量大小 三、指针类型的意义        1、解引用         2、指针+-整数         3、void*指针类型 四、野指针 五、指针的运算     ......
  • C语言——自定义类型
    目录一、结构体        1、结构体的定义与声明        2、结构体变量的定义和初始化        3、结构体的自引用         4、结构体的内存对齐         5、为什么要结构体的内存对齐                1、性能......
  • (C语言)算法数据结构
    王道数据结构以及本人上课的笔记             ......
  • 与C语言的旅程之分支与循环
                    C语⾔是结构化的程序设计语⾔,这⾥的结构指的是顺序结构、选择结构、循环结构,        C语⾔是能够实现这三种结构的,其实我们如果仔细分析,我们⽇常所⻅的事情都可以拆分为这三种结构或者这三种结构的组合。        我们......
  • C语言分支与循环的学习(小知识)
    学习目录 1.if 表达式成立(为真),则语句执行;表达式不成立(为假),这语句不执行。    注解:C语言中,非零表示真,0表示假。如果一个表达式的结果不是0,这语句执行。反之,则语句执行。实例:输入一个整数,判断是否为奇数该程序的执行逻辑是包含头文件#include<stdio.h>,输入主函数,......
  • 有关C语言中的数据类型(持续更新)
    有关计算机中的数据单位:计算机存储容量基本单位是字节(byte)字节byte:8个二进制位(bit)为一个字节(B),最常用的单位。一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。计算机的最小存储单位:比特(bit)位bit(比特)(BinaryDigits):存放一位二进制数,即......
  • C语言中输入/输出缓冲区行为乱序的问题
    问题代码这一串代码就是输出提示,读取输入,这样做3遍但是看到运行结果会发现,第二个和第三个的提示字符串输出到同一行了,没法输入操作符原因这是因为输入缓冲区的缘故当我们输入第一个数字1的时候,按下回车确认,但同样的,回车的换行符也同样保留在输入缓冲区了,数字1被读取消耗掉......