数字电子技术基础
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2 数制

人们在日常生活中经常遇到计数问题,并且习惯于用十进制数。而在数字系统,例如计算机中,通常采用二进制数,有时也采用十六进制数或八进制数。这种多位数码的构成方式以及从低位到高位的进位规则称为数制。

1.2.1 十进制

人们在日常生活中习惯以10为基数的计数体制。十进制计数体制有0、1、2、3、4、5、6、7、8、9十个数码来表示,其计数规律是“逢十进一”。

十进制数4587.29可以表示为

(4587.29)10=4×103+5×102+8×101+7×100+2×10-1+9×10-2

式中,103、102、101、100、10-1和10-2分别为各数码的权值。一般任意十进制数用下标10或D(Decimal)来表示,如式(1.2.1)所示。

式中,K为基数“10”的第i次幂的系数,它可以是0~9中任何一个数字。

如果将式(1.2.1)中的10用字母R来代替,就可以得到任意进制数的表达式,如式(1.2.2)所示。

用数字电路来存储或处理十进制数是不方便的。因为构成数字电路的基本思路是把电路的状态与数码对应起来。而十进制的十个数码要求电路有十个完全不同的状态,这样使得电路很复杂,因此在数字电路中不直接使用十进制数。

1.2.2 二进制

二进制计数体制中,只有0和1两个数码,其计数规律是“逢二进一”,即1+1=10(读为“壹零”),这里的“10”与十进制数的“10”是完全不同的,它并不代表数“拾”,左边的“1”表示21系数,右边的“0”表示20系数,二进制数用下标2或B(Binary)表示,二进制数10表示为(10)2=(10)B=1×21+0×20,因此,二进制就是以2为基数的计数体制。

任意二进制数的表示如式(1.2.3)所示。

式中,Ki为基数“2”的第i次幂的系数,它可以是0或1。式(1.2.3)也可以作为二进制数转换为十进制数的转换公式。

例1.2.1 将二进制数1010110.01转换为十进制数。

:将每1位二进制数与其位权相乘,然后相加,便得相应的十进制数。

(1010110.01)2=1×26+0×25+1×24+0×23+1×22+1×21+0×20+0×2-1+1×2-2=(86.25)10

与十进制相比较,二进制具有以下优点,因此,它在计算机技术中被广泛采用:

1)二进制的数字电路装置简单可靠,所用元件少。

二进制只有两个数码0和1,因此它的每1位数都可用任何具有两个不同稳定状态来表示,例如,半导体开关器件的饱和与截止,继电器触点的闭合和断开,灯泡的亮和不亮等。只要规定其中一种状态表示1,另一种状态则表示0,就可以表示二进制数。这样,数码的存储、分析和传输,就可以用简单而可靠的方式进行。

2)二进制的基本运算规则简单,运算操作方便。

采用二进制也有一些缺点。用二进制表示一个数时,位数多,例如,十进制数49表示为二进制数时,即为110001,使用起来不方便也不习惯。因此,在运算时原始数据多用十进制数,在用数字系统处理时,需要将十进制原始数据转换成数字系统能接受的二进制数。而在运算结束后,再将二进制数转换为十进制数表示最终结果。

1.2.3 十-二进制之间的转换

十进制数转换成其他进制数的整数转换,采用基数连除法。把十进制整数N转换成R进制数的步骤如下:

1)将N除以R,记下所得的商和余数。

2)将上一步所得的商再除以R,记下所得商和余数。

3)重复做第2)步,直到商为0。

4)将各个余数转换成R进制的数码,并按照和运算过程相反的顺序把各个余数排列起来,即为R进制的数。

十进制小数转换成其他进制小数时,采用基数连乘法。把十进制小数m转换成R进制数的步骤如下:

1)将m乘以R,记下所得的积,取出积的整数部分,小数部分待用。

2)将上一步所得的小数值再乘以R,取出所得积的整数部分,小数部分待用。重复该过程直到积的小数部分为0,或达到有要求的准确度为止。

3)按照运算过程的顺序把各步骤中的整数排列在小数点后,即为R进制的小数。

例1.2.1介绍了二进制数转换为十进制数的方法。十进制数转换为二进制数时,整数部分和小数部分的方法不同,下面分别介绍。

1.十进制数的整数部分转换为二进制数的方法

将十进制数整数每除以一次2,就可以根据余数得到二进制的1位数字,因此,只要连续除以2直到商为0。

例1.2.2 将十进制数37转换为二进制数。

:将十进制数37每除以一次2,得到的余数和商如图1.2.1所示。

由上可得:(37)10=(100101)2

当十进制数较大时,不需要逐次除以2,而是将十进制数和与其相当的2乘幂项对比,使转换过程简化。

2.十进制数的小数部分转换为二进制数的方法

将十进制小数乘以2,可以得到2-1的系数b-1,将十进制小数每次除去上次所得积中的整数,再乘以2,直到满足误差要求继续“四舍五入”为止。

例1.2.3 将十进制数小数0.706转换为二进制数,要求其误差不大于2-10

:按上面的方法计算,可得b-1b-2b-3、…、b-9,如图1.2.2所示。

图1.2.1 十进制数37转换为二进制数

图1.2.2 十进制数小数0.706转换为二进制数

由于最后的小数小于0.5,根据“四舍五入”的原则,b-10应为0,所以由上可得:(0.706)10=(0.101101001)2,其误差小于2-10

1.2.4 十六进制

用二进制数来表示十进制数需要的位数较多,不便于书写和记忆,因此,在数字计算机中常采用十六进制数或八进制数来表示。

十六进制是以16为基数的计数体制。十六进制计数体制有0、1、2、3、4、5、6、7、8、9、A(10)、B(11)、C(12)、D(13)、E(14)、F(15)十六个数码,其计数规律是“逢十六进一”。十六进制数用下标16或H(Hexadecimal)表示,任意十六进制数的表示如式(1.2.4)所示。

(BD2.3C)16=B×162+D×161+2×160+3×16-1+C×16-2=11×162+13×161+2×160+3×16-1+12×16-2

例1.2.4 将十六进制数2A.8转换成十进制数。

:(2A.8)16=2×161+10×160+8×16-1=32+10+0.5=(42.5)10

例1.2.5 将十六进制数4E2转换为十进制数。

(4E2)16=4×162+14×161+2×160=(1250)10

例1.2.6 将十六进制数F25.6转换为二进制数。

:将每位十六进制数用4位二进制数代替,即得相应的二进制数,当第1位和最后1位为0时,0可以不写。

(F25.6)16=(1111 0010 0101.011)2

例1.2.7 将二进制数10110011011.01001转换为十六进制数。

:从小数点分别向左右将4位二进制数分为1组,小数点左边不足4位的在前面加0,小数点右边不足4位的在后面加0,每4位分别用相应的十六进制数代替即可。

(101 1001 1011.01001)2=(0101 1001 1011.0100 1000)2=(59B.48)16

1.2.5 八进制

八进制是以8为基数的计数体制。八进制计数体制有0、1、2、3、4、5、6、7八个数码,其计数规律是“逢八进一”。八进制数用下标8或O(Octal)表示,任意八进制数的表示如式(1.2.5)所示。

(752.34)8=7×82+5×81+2×80+3×8-1+4×8-2

例1.2.8 将八进制数315.4转换为十进制数。

:(315.4)8=3×82+1×81+5×80+4×8-1=(205.5)10

例1.2.9 将八进制数315.6转换为二进制数。

:将每位八进制数用3位二进制数代替,即得相应的二进制数,当第1位和最后1位为0时,0可以不写。

(315.6)8=(011 001 101.110)2=(11 001 101.11)2

例1.2.10 将二进制数10110011011.01001进制数转换为八进制数。

:从小数点分别向左右将3位二进制数分为1组,小数点左边不足3位的在前面加0,小数点右边不足3位的在后面加0,每3位分别用相应的八进制数代替即可。

(10110011011.01001)2=(010 110 011 011.010 010)2=(2633.22)8

几种数制之间的关系如表1.2.1所示。

表1.2.1 几种数制之间的关系对照表