2024年5月9日发(作者:)
我们曾经指出为了便于二进制数和十进制数的转换,也为了在书
写时更加简便易读,二进制数经常要转换成8进制数和16进制数。
这里我们考查2进制数和8进制数之间的转换关系。
设有一个9位二进制数(k
8
k
7
k
6
k
5
k
4
k
3
k
2
k
1
k
0
)
2
,根据数制的定
义,我们知道:
(k
8
k
7
k
6
k
5
k
4
k
3
k
2
k
1
k
0
)
2
=k
8
×2
8
+k
7
×2
7
+k
6
×2
6
+k
5
×2
5
+k
4
×2
4
+
k
3
×2
3
+k
2
×2
2
+k
1
×2
1
+k
0
×2
0
(式2-16)
式2-16可以进一步写成:
k
8
×2
8
+k
7
×2
7
+k
6
×2
6
+k
5
×2
5
+k
4
×2
4
+k
3
×2
3
+k
2
×2
2
+k
1
×2
1
+
k
0
×2
0
=(k
8
×2
2
+k
7
×2
1
+k
6
×2
0
)×2
6
+(k
5
×2
2
+k
4
×2
1
+k
3
×2
0
)×2
3
+k
2
×2
2
+k
1
×2
1
+k
0
×2
0
=(k
8
×2
2
+k
7
×2
1
+k
6
×2
0
)×8
2
+(k
5
×2
2
+k
4
×2
1
+k
3
×2
0
)×8
1
+(k
2
×2
2
+k
1
×2
1
+k
0
×2
0
)×8
0
(式2-17)
上面的式子中,k
8
×2
2
+k
7
×2
1
+k
6
×2
0
相当于(k
8
k
7
k
6
)
2
,假定
其等于十进制数h
2
;k
5
×2
2
+k
4
×2
1
+k
3
×2
0
相当于(k
5
k
4
k
3
)
2
,假定
其等于十进制数h
1
;k
2
×2
2
+k
1
×2
1
+k
0
×2
0
相当于(k
2
k
1
k
0
)
2
,假定
其等于十进制数h
0
。则式2-17可以改写为:
h
2
×8
2
+h
1
×8
1
+h
0
×8
0
(式2-18)
由于h
2
、h
1
、 h
0
是三位二进制数的值,因此,其值的范围在0~
7之间。根据数制的定义,我们惊奇地发现式2-18相当于(h
2
h
1
h
0
)
8
。这就是说:
(k
8
k
7
k
6
k
5
k
4
k
3
k
2
k
1
k
0
)
2
=(h
2
h
1
h
0
)
8
(式2-19)
这里,h
2
=(k
8
k
7
k
6
)
2
;h
1
=(k
5
k
4
k
3
)
2
;h
0
=(k
2
k
1
k
0
)
2
。
这就是说,我们只要把一个九位的二进数从低位开始三位一组,
分成三组,将这三组二进制数分别转换成10进制数,所得的三个数
就是该二进制数所对应的8进制数的码。这种关系可以一直往高位推
导,即不管二进制数有多少位我们都可以用这种方法把它转换成一个
8进制数。
例2-6:将二进制数(1)
2
转换为8进制数。
解:将二进制数三位一组分组,计算每组的值如下:
1 0 1 1 1 0 0 1 0 1 0
2 7 1 2
则:(1)
2
=(2712)
8
需要注意的是,整数的分组是从最低位开始,向最高位延伸。如
果最高位的组不足三位,则在前面补0。另外,这种转换同样适用于
小数的转换。小数的分组,是从最高小数位开始,向低位延伸。如果
最低位的组不足3位,在后面补0。
例2-7:将二进制数(1.10101)
2
转换为8进制数。
解:将二进制数三位一组分组,计算每组的值如下:
1 0 1 1 1 0 0 1 0 1 0 。1 0 1 0 1 0
2 7 1 2 。 5 2
则:(1.10101)
2
=(2712.52)
8
仿照2进制转8进制数的推导方法,我们不难得到二进制数与
16进制数的转换方法(有关演算留作习题,这里从略)。具体来说就
是,将二进制数的整数和小数部分每四位分成一组。整数部分从最低
位向最高位顺序分组,如果最高位组不够4位,就在前面补0;小数
部分从最高位向最低位顺序分组,如果最低位组不够4位,在后面补
0。求出每一组4位二进制数的十进制值(在0~15之间),然后用
16进制符号表示,就得到了相应的16进制数。
例2-8:将二进制数(1.10101)
2
转换为16进制数。
解:将上述二进制数四位一组分组,计算每组的值如下:
0 1 0 1 1 1 0 0 1 0 1 0 。1 0 1 0 1 0 0 0
5 12 10 。 10 8
则:(1.10101)
2
=(5CA.A8)
16
上面将二进制数转换为8进制数和16进制数的规则,反过来也
可以用来将8进制和16进制数转换为2进制数。请看下面的例子。
例2-9:将8进制数(567.72)
8
转换为2进制数。
解:将上述八进制数的每一位分解成一个3位二进制数,最后得到就
是该8进制数对应的二进制数。具体计算如下:
5 6 7 . 7 2
1 0 1 1 1 0 1 1 1 . 1 1 1 0 1 0
则:(567.72)
8
=(101110111.111010)
2
例2-10:将16进制数(9F.B6)
16
转换为2进制数。
解:将上述16进制数的每一位分解成一个4位二进制数,最后得到
就是该16进制数对应的二进制数。具体计算如下:
9 F . B 6
1 0 0 1 1 1 1 1 . 1 0 1 1 0 1 1 0
则:(9F.B6)
16
=(10011111.1011011)
2
现在,作为练习,请检验例2-1到例2-5中同一个十进制数的2
进制与8进制、16进制之间的对应关系是否符合上面的转换规律。
发布者:admin,转转请注明出处:http://www.yc00.com/web/1715262483a2590975.html
评论列表(0条)