0 题记 在学习计算机基础或者是数字电子技术、微机原理、单片机、C 语言等课程的时候,都会讲到一个概 念:二进制数。就是这个二进制数难倒了很多的英雄汉,上面罗列的这些课程我都教过,这些课程有一个共 同的知识点就是二进制数,十进制数,十六进制数,还有八进制数以及他们的相互转换,而对于电子类专业 的一门比较重要的课程--单片机,更是要用到二进制数和十六进制数。故而每次我讲课时都会尽量详细的 给学生讲解这些内容。今天上午刚刚结束了两个班的第一堂课,又勾起了我的回忆,让我有一种把这部分知 识点写下来的冲动,给那些刚刚开始学习数字电子技术、单片机、C 语言的学生们。以上是为这篇文章的来历。 1 引子 随着电的使用,电器应用越来越广泛,人们对于电器的要求也越来越高,要求功能强大,还要智能 化,使用简单化,这些要求让数字电子技术应用范围越来越广泛,原先很多采用vwin 电路的地方都被数字电 路取代了,特别是对于信号处理方面,随着计算机科学与技术突飞猛进地发展,用数字电路进行信号处理的 优势也更加突出。信号处理的一般方法都是先将模拟信号按比例转换成数字信号,然后送到数字电路进行处 理,最后再将处理结果根据需要转换为相应的模拟信号输出。从一般的模拟信号到数字信号,要经过采样、 量化、编码,最终一个连续的模拟信号波形就变成了一串离散的、只有高低电平之分“0 1 0 1...”变化的数 字信号。自然界来的,或者通过传感器转化的主要是模拟信号,那么为什么要多此一举把它们变为数字信号 呢?原因有以下几点: 一、模拟信号有无穷多种可能的波形,同一个波形稍微变化就成了另一种波形,而数字信号只有两种波 形(高电平和低电平),这就为信号的接收与处理提供了方便。即,数字信号易于传输,抗干扰能力强。 二、模拟信号由于它的多变性极容易受到干扰,其中包括来自信道的和电子器件的干扰,模拟器件难以 保证高的精度(如放大器有饱和失真、截止失真、交越失真,集成电路难免有零点漂移)。而数字电路中有 限的波形种类保证了它具有极强的抗干扰性,受扰动的波形只要不超过一定门限总能够通过一些整形电路 (如斯密特门)恢复出来,从而保证了极高的准确性和可信性,而且基于门电路、集成芯片所组成的数字电 路也简单可*、维护调度方便,很适合于信息的处理。特别是计算机科学技术发展后,很多模拟电路无法实 现的功能都可以在采用数字电路来实现。 而电子计算机的出现,让数字电子技术有了更广阔的发展空间,也让我们的生活更加的丰富。手机带 给我们联络的方便,电脑带给我们工作和娱乐以及学习的便利,天上的飞机,路上的汽车,让我们出行更加 方便,家中的空调冰箱洗衣机微波炉等让我们生活更加舒适。在手机、电脑、飞机、汽车以及家电中都有一 块或者多块的微处理器在工作,而这些微处理器就是由数字电路构成的。 2 0 和 1 的舞蹈 2.1 二进制数的来历 电,发明出来是为人类服务的,那么电路同样的是为人们服务的,也就是说我们需要在电路中能够帮 助我们做平时生活中的事情,这些事情应该是我们不用电也可以来做的。举个例子,譬如我们生活中的数, 我们采用的是十进制数,今年是 2010 年,就是指从耶稣诞生之年到现在有 2010 年了,班上有 45 个人, 买了一条裤子花费 368 元等等,那么在这些数字的背后隐藏着什么呢?我们都知道 1+1=2,但是陈景润花 费了很大的功夫才证明,这说明即使我们看起来很平常的的事情也隐藏着一些我们不知道的因素,在这里我 们不是来讨论 1+1=2 的,因为我们不是顶极的数学家,但关于十进制数,我们可以讨论一下一些普通人都 有能力理解的东西。2010,45,368 这些数字给我们提供了 2 个信息,数码和数位,2010 由三个数码 0,1,2 构成,45 由两个数码 4,5 构成,368 由三个数码 3,6,8 构成,而且这些数码的位置不一 样,那么他们所代表的大小不一样的,如图 1:
图中 10 就是基数,而 103 、 102 、 101 、 100 也就是 1000,100,10,1 就是权。所谓的权,就是在 这个数中占的数值大小。也就是说 2010 中的“2"代表了 2 个“千”,45 中的”4"代表了 4 个“十”,而 368 中 的”8“代表了 8 个“一”,而且同一个数码放在不同的位置上就代表了不同数值,如 555 中,三个 5 的权分别 100,10,1,那么第一个 5 代表的数值就是 5X100,第二个 5 代表的数值是 5X10,的三个 5 代表的数 值是 5X 1。采用这种方法,我们就可以用有限的数码来表示无限的数据了。 总结一下,十进制采用了 0,1,2,3,4,5,6,7,8,9 共 10 个数码,基数是 10,进行运算 的时候,我们采用逢十进一。 这是我们现实生活中需要用到的十进制的一些情况,那么我们在数字电路中必然也要采用这种计数方 法,电路中传输的就是电压和电流,我们要用 10 种不同的状态来表示这 10 个数码有点困难。我们举例来 说吧,譬如有一个电压,0~5V ,那么我们就可以这样来表示 0~9 这 10 个数码,如表 1。 表 1 电压和数码之间的对应关系
接下来就是要制造一个能够精确的实现 0V,0.5V,1V,1.5V……4.5V 等各种电平的基本电路,但这一 件是非常困难的事情。两个相邻的电平只有 0.5V,电路受到干扰,电平偏移 0.5V,那么就变成另外一个数 据了,而要保证电平完全没有漂移是不可能的,所以,十进制数在电路中很难直接实现了。即使勉强实现 了,数据传输的时候又遇到了更大的数据准确性的问题,因为电平经过导线传输的时候会变化,相邻的两个 电平很容易混淆。这种十进制数在数字电路中是没法直接实现,更别说是在微处理器这种高频电路中实现 了。这样必然要另外想办法了。而戈特弗里德·威廉·凡·莱布尼茨(Gottfried Wilhelm von Leibniz,1646 年 7 月 1 日~1716 年 11 月 14 日)在 18 世纪初提出的二进制帮助人们解决了问题,虽然莱布尼茨受中 国的易经八卦启发而发明的二进制数最初不是用来设计电路的,因为那个时候人们才开始研究电的现象,电 灯,电池等都还没有出现。但 20 世纪初人们制造出二极管、三极管、集成电路等的时候,却把二进制拿来 用于电路的设计。二进制数因为只有两个数 0 和 1,状态也只有两种,在电路中实现起来就方便的多了,只 要一个高电平和低电平就可以,甚至说有电流和无电流、有电荷和无电荷都可以表示,这样的话电路的实现 非常简单,而且这种电路也不容易受到干扰,抗干扰性好的多。还是以上面 0~5V 的一个电平来说明,看图2。
从图 2 中可以看到,我们可以认为 0~1V 都是低电平,2.4V~5V 都是高电平,若假设低电平代表 0,高电 平代表 1,那么我们就实现了二进制数了,这个电路简单,而且易与实现,电平允许有一定的漂移,提高了 抗干扰能力,数据传输可*性高的多。所以数字电路中采用了二进制数。 假若以高电平代表 1,低电平代表 0,则称为正逻辑系统,反之,以高电平代表 0,低电平代表 1, 则称为负逻辑系统,一般来说,我们采用正逻辑系统。 2.2 二进制数与十进制数 接下来我们就研究一下二进制数,注意了,下面我们纯粹的研究二进制数,跟二进制的数字电路实现 没有任何的关系了。 借助于十进制数的思路,我们的二进制数有两个数码:0 和 1,基数是 2,进行运算的时候是逢二进 一。举例来说明,比如二进制数 10110(注意,读这个数据的时候只需要把每一位数据读出来就可以了, 千万不要采用十进制数的读法。即这个数读作:一 零 一 一 零,而不是一万零一百一 十,若按照十进制数 的读法,会让别人笑话的。切记切记)。对于这个数,我们知道它的每一位都有权,而且权是 2 的幂,即 10110 = 1X24 0X23 1X22 1X21 0X20 若我们把这些数字相加计算出数值来,就会发现它是一个 十进制数 22,这样我们就把一个二进制数转换为十进制数了。我们接下来就讲二进制数和十进制数的相互 转换问题。 随便拿出一本教材来,关于二进制数和十进制数的相互转换,都讲了一个方法:二进制数转换为十进 制数采用加权法,就是上面说的例子。而十进制数转换为二进制数则分为整数部分和小数部分分别转换,整 数部分用除 2 取余法,小数部分采用乘 2 取整法,然后要列竖式来求解。一般来说,我们在进行应用的时 候,譬如数字电路,单片机中使用的数字都是整数,而且只需要我们快速的计算出这个数据即可,若按照除
相关推荐 二进制格雷码与自然二进制码的互换分析其中采用循环二进制编码的绝对式编码器,其输出信号是一种数字排序,不是权重码,每一位没有确定的大小,不能直接进行比较大小和算术运算,也不能直接转换成其他信号,要经过一次码变换,变成自然二进制码。 2020-09-23 16:23:046149 1.8位二进制所表示的无符号整数其相应的十进制数范围是多少内。错选、多选或未选均无分。1.8位二进制所表示的无符号整数,其相应的十进制数范围是 ( )A.0~255B.1~256C.1~255D.0—2562. 81H是用8位二进制原码所表示的十六进制数,其相... 2021-09-10 07:26:15 二进制数的运算及加法电路前言上篇 计算机组成原理第1章 计算机基础知识1.1 数制1.2 逻辑代数(布尔代数)1.3 逻辑电路1.4 二进制数的运算及加法电路第2章 微型计算机的基本组成电路2.1 算术逻辑单元(ALU 2021-09-10 07:34:55 二进制数逻辑运算是怎么运算的“与” , 其结果必为 0; 凡同 1 相“与” , 其结果不变(0 同 1 相“与”仍为 0, 1 同 1 相“与”仍为 1) 。因此, 如果一个 8 位二进制数, 想要保留其中的几位而屏蔽(清除) 掉其余 2019-12-25 16:36:41 二进制与十进制数对照显示实验相关资料下载这是一个可以对照显示0~9这10个数字的二进制和十进制的电路。二进制数字用4个发光二极管显示;它们排成一行,亮表示1,灭表示0。十进制数字用一个数码管表示。数字的变化采用CD4040组成加法计数器,手动加1计数。 2021-04-27 07:21:40 二进制大小是否限于IRAM大小?在文档中写道,如果启用闪存加密,加密后的二进制文件将存储到 IRAM 中。如果存储了整个二进制文件或以某种方式部分执行,我找不到更多详细信息。因此,我会问是否启用了加密,二进制大小是否限于 IRAM 大小? 2023-04-11 06:35:01 二进制显示数组请教各位大神如何将一个十进制数组变成二进制显示??我是初学者,在数组属性里的显示格式里,二进制不可选,是不是需要数据转换???请各位大神不吝赐教,谢谢!!!!!!! 2014-11-28 11:21:16 二进制格雷码与自然二进制码的互换位、13位、14位或更高位等多种。其中采用循环二进制编码的绝对式编码器,其输出信号是一种数字排序,不是权重码,每一位没有确定的大小,不能直接进行比较大小和算术运算,也不能直接转换成其他信号,要经过一次 2011-03-08 14:16:59 二进制码详解 Binary-Coded-Decimal,二进制编码的十进制码。 这种编码仅仅使用4位二进制数来表示十进制数中的0~9十个数码。二进制数码每位的值称为权或位权。 其中b0位的权为20=1,b1位 2009-04-06 23:55:36 二进制运算问题在LabVIEW中,如何实现一个十六进制的数取反后加1,如FFFFFFCB表示为二进制是11111111111111111111111111001011,取反后 2014-03-15 00:32:43 AD转换以后的二进制数怎么处理,和采集之前的模拟量对应?现在有个应变片,想测压力!! AD用的是HX711 有个问题是,AD 采集以后是一个二进制数,现在要将测出的压力显示在1602上,怎样将这个二进制数变成 压力值?? 2015-10-25 12:57:03 Labview图像二进制转换问题`各位大神,我想把一张图片通过变成二进制通过TCP传输,现在我把图片转换成二进制文件,但文件只有1KB大小。我想读取但是不知道二进制的图片数据类型。能否帮我画一个简易的读取二进制图片的程序,谢谢` 2017-12-29 09:26:42 Labview种如何将一个数字转换为5位二进制,8位二进制以及任意位的二进制表示呢Labview种如何将一个数字转换为5位二进制,8位二进制以及任意位的二进制表示呢 2018-01-22 17:22:31 M451如何丢弃函数的二进制代码填入SRAM的二进制代码
应用程序 : 示例代码演示了如何丢弃函数的二进制代码, 然后填入 SRAM 的二进制代码, 然后调用它 。
BSP版本:M451系列BSP V3.01.001
硬件: 任何 M451 系列板块 2023-08-30 07:35:31 labview中的二进制存储我想把一个15000个点的一位数组存储为二进制文件,但是不知道是存储的速率不够还是其他什么原因,存储后我再读取只有5000个点。程序如图所示。请高人指点啊,我不知道二进制存储的速率到底是多大,是不是存储速率不够还是怎么的 2014-03-03 09:31:32 labview串口如何接收16位二进制数无论下位机发送的是何种数据,labview从串口接收的时候,总是将每8位二进制数进行接收。比如我现在下位机不停地给串口发送十六进制数:1A2B3C4D5E6F.......,labview从串口接收 2016-12-14 20:19:04 labview存储二进制文件问题`我现在将一个动态二维数组存到二进制文件中,这个二维数组的数值一秒变一次,每变一次就保存到二进制文件中,但是最后我发现保存下来的数只是最后一秒的,就好像每次保存都是替换文件所有内容,如何修改成不替换呢?` 2020-08-07 09:53:53 labview编程模拟十进制数到二进制数的转换过程模拟十进制数到二进制数的转换过程,以LED来模拟各个二进制位,并能以动画方式模拟计数的过程。 选择手动方式时,将8个LED变成滑动条中数字的二进制(基数2)表示。例如,如果滑动条设置为数字10(在 2018-12-07 22:20:10 xilinx网络服务器怎么将十六进制数转换为二进制数?嗨 在xilinx网络服务器应用程序中,我使用ml402板与xilinx 10.1版本...我能ping,但网页没有弹出将十六进制数转换为二进制数...请帮我解决这个问题.... 。上次我也没有得到任何回复我的问题....我正在等待一些有用的建议!!!! 2020-03-26 10:33:33 【小梅哥FPGA进阶教程】第二章 二进制转BCD情况下,我们需要将运算结果显示到某种显示设备上,如果直接以二进制的形式来显示的话,会非常不便于我们查看。因此,我们需要首先将二进制数转换为十进制数再进行显示。二进制到十进制的转换有很多种方法。这里,我们 2017-01-09 14:38:01 【梦翼师兄今日推荐】BCD转二进制程序设计讲解 本帖最后由 mengyi1989 于 2019-12-7 12:32 编辑
立即学习>>梦翼师兄的FPGA实战课程众筹写在前面的话在前面小节的学习中,我们已经掌握了将二进制数转换成 2019-12-03 21:48:59 关于Labview中二进制文件的读写在LABVIEW中使用二进制读写节点时,遇到一个奇怪的问题,当我通过新建文件创建二进制文件(见第一张图),之后将数据写入到二进制文件中(见第二张图),最后读取二进制文件(见第三张图)。现在问题是当我 2017-09-30 15:03:01 关于两位十进制数转换成二进制数的仿真 求助啊求助,不怎么懂这题该怎么做。求教。用两片四位全加器74283和必要的逻辑门设计一个数制转换电路,实现将输入的两位十进制数转换成二进制数,十进制数的输入采用8421BCD码来表示。用multisim仿真画图。 2016-07-01 20:13:27 十进制数65用8位二进制数表示时应为多少内。错选、多选或未选均无分。1.十进制数65用8位二进制数表示时应为 ( )A. 11000001B B.OlOOOOOIBC. OlOOlOllBD.O0111011B2.十进制数-2用二进制补码表示... 2021-09-10 06:18:39 十进制和二进制之间的转换原理十进制和二进制之间的转换 既然一个数可以用二进制和十进制两种不同形式来表示,那么两着之间就必然有一定的转换关系。 由十进制数的一般表示式: 可以得到整数的一般表达式: 将等式两边分别除以2 2009-04-06 23:54:14 单片机开发为什么要用二进制?找出一种具有十个不同稳定状态的电子元件则是相当困难的。在二进制中,只有二个数0和1,这正好和电子元件的两个不同稳定状态相对应。例如,以1代表高电平,则0代表低电平,这样,采用二进制后,就可以利用二值 2019-12-10 10:55:42 在FPGA中实现一种二进制转BCD码的电路设计字逻辑设计课程中,我们已经学过了BCD码的相关知识,它用4位二进制数来表示1位十进制数中的09,是二进制编码的十进制代码,常见的BCD码有8421BCD码,2421BCD码,5421BCD码,余3码以及格雷 2022-07-12 16:41:42 在labview2010中,怎么把十进制转二进制,求大神!!!!创建前面板,该前面板有8个led指示器和一个8位无符号十进制整数的垂直滑动条控件。显示滑动条带有数字指示器,确保led均匀分布并且排列在底部。要求实现8个led的亮灭状态与滑动条中的十进数的数字的二进制相对应。(即十进制向二进制转换) 2015-09-19 10:06:39 如何丢弃函数的二进制代码填入SRAM的二进制代码?
应用程序 : 示例代码演示了如何丢弃函数的二进制代码, 然后填入 SRAM 的二进制代码, 然后调用它 。
BSP版本:M451系列BSP V3.01.001
硬件: 任何 M451 系列板块 2023-08-23 06:34:10 如何使用USART接收二进制数我想制作一个以8个LED的形式实现二进制计数器。该计数器通过USART发送一个8位二进制数,并让8个LED显示数字(如果位为0,则指示灯熄灭,当位为1时指示灯亮)。这样做的最佳方法是什么? 2018-10-08 14:07:42 如何理解二进制运算规则 二进制是如何运算的:将二进制数(10011111011.11101100)2转换成十六进制数。(10011111011.11101100)2=(4FB.EC)16其他进制转换为二进制:(1)十进制转换为二进制整数转换 2019-12-11 17:49:02 如何用VHDL实现16位二进制数转化为相应的BCD码 downto 0));End;Architecture one of B_BCD isBeginProcess(B)begin(16位的二进制码)转化为(相应的BCD码);比如说1234这个十进制数,它 2014-04-10 09:46:42 怎么将16位二进制数转换成十进制数的函数?有没有人建立一个将16位二进制数转换成十进制数的函数?谢谢,JB 以上来自于谷歌翻译 以下为原文Has anyone built a function(s) that converts a 16-bit binary number into decimal?Thanks,JB 2019-03-26 11:21:54 怎么用单片机通过串口发送一串二进制数?我想用单片机通过串口发送一串二进制数(例如:0100101,不是8位也不是16位的数),我只会C语言,但是c语言好像不能发二进制的,求高手指点。类似这种:#include#define uchar 2019-10-11 06:00:49 把数组中的十进制数按字符串合并,怎么再表示成二进制.....`把数组中的十进制数按字符串合并,怎么再表示成二进制?最终把二进制数再转成十进制输出?看下图:上图十进制的数组如第一列0 1 0怎样把它看成二进制010,然后转化为2?其他列也这们处理 ,怎么实现?` 2013-04-05 18:50:14 提取一个8位二进制数的低3位和另一个8位二进制数的高5位组合成一个新的8位二进制数,用C语言怎么实现?提取一个8位二进制数的低3位和另一个8位二进制数的高5位,然后组合成一个新的8位二进制数,用C语言怎么实现? 2019-01-17 06:35:14 格雷码简介及格雷码与二进制的转换程序科学的发展。/*格雷码与二进制的转换程序 * 本程序采用递推的方法进行推导,可以转换0~2147483647之间的数(1~31位) * 推导方式如下(以三位格雷码为例): * 序号 格雷码 格雷码实值 2011-04-22 09:00:58 请问bcd码和二进制有什么关系?这个bcd码和二进制有什么关系?
bcd 表示0011001是19(十进制)
二进制表示0011001是25(十进制)
这个怎么确定是哪个??? 2023-10-07 06:02:17 什么是二进制计数器,二进制计数器原理是什么?什么是二进制计数器,二进制计数器原理是什么?
计数器是数字系统中用得较多的基本逻辑器件。它不仅能记录输入时钟脉冲的个数,还可以实现 2010-03-08 13:16:3430352 二进制电平,什么是二进制电平二进制电平,什么是二进制电平
在二进制数字通信系统中,每个码元或每个符号只能是“1”和“0”两个状态之一。若将每个码元可能取的状态增 2010-03-17 16:51:582255 本的二进制加法/减法器,本的二进制加法/减法器原理本的二进制加法/减法器,本的二进制加法/减法器原理
两个二进制数字Ai,Bi和一个进位输入Ci相加,产生一个和输出Si,以及一个进位输 2010-04-13 11:11:555132 格雷码与二进制的转换格雷码,又叫循环二进制码或反射二进制码,格雷码是我们在工程中常会遇到的一种编码方式,它的基本的特点就是任意两个相邻的代码只有一位二进制数不同,这点在下面会详细讲解到。格雷码的基本特点就是任意两个相邻的代码只有一位二进制数不同。 2018-03-02 15:48:5316613 |
评论
查看更多