1.2 数制的转换、运算与编码

数字可以用不同的基数表示,如十进制数356 = 6 + 50 + 300 = 6×100 + 5×101 +3×102,356的基数为10,这是较常见的十进制。

通常,数字可以表示为(a5 a4 a3 a2 a1 a0 .a-1 a-2 a-3)r,其中r是数字的基数,ai必须小于r。

式(1-1)可将给定基数的数字转换为十进制数

【例1-1】 将(27.35)8转换为十进制数。

(27.35)8= 7 ×80 + 2 × 8 1+ 3 × 8-1 + 5 × 8-2 = 7 + 16 +0.375 +0.078125 =(23.453 125)10

【例1-2】 将(1101111)2转换为十进制数。

(1101111)2=1×20+1×21+1×22+1×23+0×24+1×25+1×26=1+2+4+8+32+64=(111)10

1.二进制与十进制的转换

(1)二进制数转换为十进制数

式(1-2)代表任意二进制数。

其中,ai为二进制数或位(0或1),式(1-2)可以通过式(1-1)转换为十进制数为

【例1-3】 将(110111.101)2转换为十进制数。

(110111.101)2=1×20+1×21+1×22+0×23+1×24+1×25+1×2-1+0×2-2+1×2-3=(55.625)10

二进制数是基数为2的数,由0和1表示。二进制数字0或1,称为比特。8位为一个字节,不同的计算机系统对字的定义不同,在8086微机系统中,4个字节为一个字。

(2)十进制整数转换为二进制数

将十进制整数转换为二进制数,需将整数部分不断地除以2(2表示二进制基数),得到一个商数和一个余数(0或1),直到被除数的商数变为0为止。第一个余数是二进制数的最低有效位。

【例1-4】 将十进制数34转换为二进制数。

因此,(34)10=(100010)2

(3)十进制小数转换为二进制数

十进制数字表示为(0.XY)10,可以转换成基数为2的表示式为(0.a-1 a-2 a-3…)2

小数乘以2,取整数部分为a-1,分数部分继续乘以2,分离出整数部分为a-2,持续该过程直到被乘数为零或达到所需的精度为止。

【例1-5】 将十进制数0.35转换为二进制数。

则(0.35)10 = (0.01011)2

十六进制的基数为16,具有16个码元(0~9及A~F)。表1-1为十进制数对应的二进制和十六进制等效值。

表1-1 十进制数对应的二进制和十六进制等效值

2.二进制与十六进制的转换

表1-1可用于十六进制与二进制之间的相互转换。

【例1-6】 将(001010011010)2转换为十六进制数。

从右向左每4位为一组,通过使用表1-1,每个4位组可以转换为其十六进制等效值。

则得到的十六进制数是(29A)16

【例1-7】 将(3D5)16转换为二进制数。

通过使用表1-1,二进制的结果是

得到的二进制数是(001111010101)2