![计算机与嵌入式系统架构](https://wfqqreader-1252317822.image.myqcloud.com/cover/90/37157090/b_37157090.jpg)
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)可将给定基数的数字转换为十进制数
![](https://epubservercos.yuewen.com/708F4A/19693668208466106/epubprivate/OEBPS/Images/Chapter-2.jpg?sign=1738913963-r5S4gYoI7KPo8kRVKjjWx0XcObZ9NkRl-0-9c220323ccb6ab03ee3198a6b1b63ef1)
【例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)代表任意二进制数。
![](https://epubservercos.yuewen.com/708F4A/19693668208466106/epubprivate/OEBPS/Images/Chapter-4.jpg?sign=1738913963-ce3GTmAdLkeaY7r6LCahxKn8WHtGQs5E-0-ae051373caf1b90e7ddee595aba3b270)
其中,ai为二进制数或位(0或1),式(1-2)可以通过式(1-1)转换为十进制数为
![](https://epubservercos.yuewen.com/708F4A/19693668208466106/epubprivate/OEBPS/Images/Chapter-3.jpg?sign=1738913963-biIoZnuKxkxnhDaslfDjXw5QCe40FYwO-0-4d0c8cd1a1f5b7de3d255955af4126bb)
【例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
或
![](https://epubservercos.yuewen.com/708F4A/19693668208466106/epubprivate/OEBPS/Images/Chapter-5.jpg?sign=1738913963-aYaluC8OjINSaTZco18xTnGGGbl5cuge-0-82ee499cf839d3d7a9fe25d9ae5778ee)
二进制数是基数为2的数,由0和1表示。二进制数字0或1,称为比特。8位为一个字节,不同的计算机系统对字的定义不同,在8086微机系统中,4个字节为一个字。
(2)十进制整数转换为二进制数
将十进制整数转换为二进制数,需将整数部分不断地除以2(2表示二进制基数),得到一个商数和一个余数(0或1),直到被除数的商数变为0为止。第一个余数是二进制数的最低有效位。
【例1-4】 将十进制数34转换为二进制数。
![](https://epubservercos.yuewen.com/708F4A/19693668208466106/epubprivate/OEBPS/Images/Chapter-7.jpg?sign=1738913963-M9vAKlwPqRcsThUNoJ6oPcVqkxTcBjwZ-0-d9e66e804fd17a2f4d21a86b9500255e)
因此,(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转换为二进制数。
![](https://epubservercos.yuewen.com/708F4A/19693668208466106/epubprivate/OEBPS/Images/Chapter-6.jpg?sign=1738913963-GwxHDEZ6i0FLNz5ywOi4WhmAFOX6CEtE-0-2a0ab4a7bf01e1d328581c3a64f8e698)
则(0.35)10 = (0.01011)2
十六进制的基数为16,具有16个码元(0~9及A~F)。表1-1为十进制数对应的二进制和十六进制等效值。
表1-1 十进制数对应的二进制和十六进制等效值
![](https://epubservercos.yuewen.com/708F4A/19693668208466106/epubprivate/OEBPS/Images/Chapter-8.jpg?sign=1738913963-SYHJhotYHXKWyQ0SXSyLiy7B74udsbz0-0-14c12394a896fe6e6d29c48c24ef3bc8)
2.二进制与十六进制的转换
表1-1可用于十六进制与二进制之间的相互转换。
【例1-6】 将(001010011010)2转换为十六进制数。
从右向左每4位为一组,通过使用表1-1,每个4位组可以转换为其十六进制等效值。
![](https://epubservercos.yuewen.com/708F4A/19693668208466106/epubprivate/OEBPS/Images/Chapter-9.jpg?sign=1738913963-GraRTafamzq2SKFZ8MytfNOM0UN0nsny-0-6f5ad05b573badadf64103d55a8df1bf)
则得到的十六进制数是(29A)16。
【例1-7】 将(3D5)16转换为二进制数。
通过使用表1-1,二进制的结果是
![](https://epubservercos.yuewen.com/708F4A/19693668208466106/epubprivate/OEBPS/Images/Chapter-10.jpg?sign=1738913963-LSlyd24sgrg0B4hUnqT600C8zrHUqSzS-0-6807b4aba683344d7f85a1069c3ab9a4)
得到的二进制数是(001111010101)2。