二进制数及其他
0题记
本文引用地址:http://www.amcfsurvey.com/article/187198.htm在学习计算机基础或者是数字电子技术、微机原理、单片机、C 语言等课程的时候,都会讲到一个概 念:二进制数。就是这个二进制数难倒了很多的英雄汉,上面罗列的这些课程我都教过,这些课程有一个共 同的知识点就是二进制数,十进制数,十六进制数,还有八进制数以及他们的相互转换,而对于电子类专业 的一门比较重要的课程--单片机,更是要用到二进制数和十六进制数。故而每次我讲课时都会尽量详细的 给学生讲解这些内容。今天上午刚刚结束了两个班的第一堂课,又勾起了我的回忆,让我有一种把这部分知 识点写下来的冲动,给那些刚刚开始学习数字电子技术、单片机、C 语言的学生们。以上是为这篇文章的来历。
1引子
随着电的使用,电器应用越来越广泛,人们对于电器的要求也越来越高,要求功能强大,还要智能
化,使用简单化,这些要求让数字电子技术应用范围越来越广泛,原先很多采用模拟电路的地方都被数字电 路取代了,特别是对于信号处理方面,随着计算机科学与技术突飞猛进地发展,用数字电路进行信号处理的 优势也更加突出。信号处理的一般方法都是先将模拟信号按比例转换成数字信号,然后送到数字电路进行处 理,最后再将处理结果根据需要转换为相应的模拟信号输出。从一般的模拟信号到数字信号,要经过采样、 量化、编码,最终一个连续的模拟信号波形就变成了一串离散的、只有高低电平之分“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 | 2.5V | 5 |
0.5V | 1 | 3V | 6 |
1V | 2 | 3.5V | 7 |
1.5V | 3 | 4V | 8 |
2V | 4 | 4.5V | 9 |
接下来就是要制造一个能够精确的实现 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 取整法,然后要列竖式来求解。一般来说,我们在进行应用的时 候,譬如数字电路,单片机中使用的数字都是整数,而且只需要我们快速的计算出这个数据即可,若按照除
评论