练习题:
(1) 20’d976.57 转换成2进制数
整数部分:基数连除法,竖式求解 10进制数976的2进制数,如图1
小数部分:基数连乘法,竖式求解10进制数0.57的2进制数,如图2
图1:竖式求解整数976的2进制数
图2:竖式求解小数0.57 的2进制数
由于20’d976.57 占20位2进制位,所以最后得出的2进制数为:(11_1101_0000.1001_0001_11)2
(2) 20’d976.57 转换成8进制数
10进制转换到8进制的方法: 先将10进制数转换为2进制数,再将2进制数转换为8进制数(每3位2进制数表示一位8进制数码,需要对2进制数进行分割:整数部分从小数点开始自右向左每3位2进制进行分割,左边不够3位补零;小数部分从小数点开始自左向右每3位2进制进行分割,右边不足3位补零),第一题已经求得其对应的2进制,所以可得:
(976.57)10= (11_1101_0000.1001_0001_11)2 = (001_111_010_000.100_100_011_100)2 =(1720.4434)8,将取值保留20位2进制位为:20’O1720.4434
(3) 20’d976.57 转换成16进制数
10进制抓换到16进制的方法:先将10进制数转换为2进制数,然后将2进制数转换为16进制数(每4位2进制数表示一位16进制数码,需要对2进制进行分割:整数部分从小数点开始自右向左每4位2进制进行分割,左边不够4位补零;小数部分从小数点开始自左向右每4位2进制进行分割,右边不足4位补零),第一题已经求得其对应的2进制,所以可得:
(976.57)10= (11_1101_0000.1001_0001_11)2 = (0011_1101_0000.1001_0001_1100)2 =(3D0.91C)8,将取值保留20位2进制位为:20’h3D0.91C
思考题: 如何利用基数连乘,基数连除直接将20’d19.56转换成16进制数。
整数部分基数连除法:基数连除法,竖式求解 10进制数19的2进制数,如图3
小数部分基数连乘法:基数连乘法,竖式求解10进制数0.56的2进制数,如图4
图3
图4
如图1 求得 16进制整数部分 (19)10 = (13)16 ——整数部分占5位2进制位
如图2 求得16进制小数部分 (0.56)10 = (8F5C28F5C2……)16 ,小数部分是无限循环小数,由于题目已经表明20’d19.56共占20位2进制小数位,所以最后的结果为:20’h13.8F5C
为了验证我们结果的准确性,我们可以先将10进制转换为2进制,然后再将2进制转换为16进制,对应的竖式求解如下:
图5 : 10进制整数求解2进制部分
得 (19)10 = (10011)2 —— 整数部分占5位2进制位
图6和图7 : 10进制小数求解2进制部分
根据竖式求解可得 (0.56)10 = (1000_1111_0101_11)2 , 由于10进制数20’d19.56总共占20位2进制位,最后的结果为 :20’h13.8F5C
最后求得的2进制 : (19.56)10 = (1_0011.1000_1111_0101_11)2 == (0001_0011.1000_1111_0101_1100)2 = (13.8F5C)16
可以看出两种方法求出的结果一致,说明我们用基数连除,基数连乘法直接将10进制转换为16进制的方法正确