计算机中进制的转换
几种进位制的标识
|
标识字母
|
原文
|
注释
|
二进制
|
B
|
Binary
|
|
八进制
|
Q
|
Octal
|
避免字母O误认作数字0,标识改为Q
|
十进制
|
D
|
Decimal
|
|
十六进制
|
H
|
Hexadecimal
|
|
B—Q的对应关系
八进制数Q
|
0
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
二进制数B
|
000
|
001
|
010
|
011
|
100
|
101
|
110
|
111
|
H—D—B对应关系
十六进制数H
|
十进制数D
|
二进制数B
|
0
|
0
|
0000
|
1
|
1
|
0001
|
2
|
2
|
0010
|
3
|
3
|
0011
|
4
|
4
|
0100
|
5
|
5
|
0101
|
6
|
6
|
0110
|
7
|
7
|
0111
|
8
|
8
|
1000
|
9
|
9
|
1001
|
A
|
10
|
1010
|
B
|
11
|
1011
|
C
|
12
|
1100
|
D
|
13
|
1101
|
E
|
14
|
1110
|
F
|
15
|
1111
|
二进制转换成其它的进制
二进制到八进制的转换
八进制中的1位数对应于二进制的3位数,所以,从二进制转换成八进制时,以小数点为分界线,整数部分从低位到高位,小数部分从高位到低位,每3位二进制为一组,不足3位的,小数部分在低位补0,整数部分在高位补0,然后用1位八进制的数字来表示,这就是一个相应八进制数的表示。采用八进制书写二进制,位数约减少到原来的1/3
例1:将二进制数110110.1011B 按八进制书写。
解:110110.1011B = 110 110 101 100B
---小数部分后面补0
6 6 . 5 4
例2:将二进制数1001101B按八进制书写。
解:1001101B = 001 001 101B
---整数部分前面补0
1 1 5
二进制到十进制的转换
二进制转换成十进制利用二进制数按权展开成多项式和的表达式,取基数为2,逐项相加,其和就是相应的十进制数。
例1:将二进制数 110010.1B转换成十进制数。
解:110010.1B = 1*2
5+1*2
4+0*2
53+0*2
2+1*2
1+0*2
0+1*2
-1
= 32+16+2+0.5
= 50.5
例2:求8位二进制数能表示的最大十进制数值。
解:最大8位二进制数是11111111B
11111111B = 1*2
7+1*2
6+1*2
5+1*2
4+1*2
3+1*2
2+1*2
1+1*2
0
= 255
二进制到十六进制的转换
十六进制中的1位需要用4位二进制表示。二进制与十六进制之间的转换方法类似二进制与八进制之间的转换方法。采用十六进制书写二进制数,位数可以减少到原来的1/4
例1:将101101011010.100111B转换成十六进制缩写形式。
解:101101011010.100111B = 1011 0101 1010 . 1001 1000
B 5 A . 9 C
八进制与其它进制的转换
八进制到二进制的转换
八进制到二进制的转换直接将每个八进制数字转换成二制数就可以了。
例:将八进制32Q 转换成二进制。
解:32Q = 011 010B
八进制到十进制的转换
八进制到十进制的转换需通过二进制来实现。
参考上面的二进制到十进制的转换。
八进制到十六进制的转换
八进制到十六进制的转换需通过二进制来实现。
例1:将7402.45Q 转换成十六进制数。
解:7402.45Q = 111 100 000 010 .100 101B
= 1111 0000 0010.1001 0100 B
=F02.94H
十进制与其它进制的转换
十进制到二进制的转换
十进制数转换成二进制数时,整数部分与小数部分换算算法不同,需要分别进行。整数部分用除基取余法转换,小数部分用乘基取整法转换。
(1):除基取余法。
除基取余法是十进制整数转换成二进制数的方法。需要转换的整数除以基数2,取其商的余数就是二进制数最低位的系数K0,将商的整数部分继续除以基数2,取其商的余数作二进制数高一位的系数K1,…….,这样逐次相除直到商为0,即得到从低位到高位的余数序列,便构成对应的二进制整数。
例1:把十进制整流器数233转换成二进制数。
十进制整数
余数
系数K
i 位
2 |
233
2|116 1 K0 最低位
2|58 0 K1
2|29 0 K2
2|14 1 K3
2|7 0 K4
2|3 1 K5
2|1 1 K6
0 1 K7 最高位
从最后一次余数开始向上顺序写出,得到换算结果:233D = 11101001B
换算过程也可以用线图表示:
233 -----
à116----
à58----
à29----
à14----
à7----
à3----
à1----
à0
| | | | | | | |
余数:
1 0 0 1 0 1 1 1
最低位
最高位
将余数按从右到左的顺序写出来,得到同样的结果。
(2)乘基取整法。
乘基取整法是十进制小数转换成二进制的方法,这种方法把要转换的小数乘以基数2,取其积的整数部分作对应二进制小数的最高位系数K
-1,将积的小数部分继续乘以基数2,新得到积的整数部分作二进制下一位的系数K
-2,…… ,这样逐次乘基,即得到从高位到低位积的整数序列,便构成对应的二进制小数。
例:把十进制小数0.8125转换成二进制小数。
解:
十进制小数
积的整数部分
系数
位
0.8125
X 2
1.6250 1 K
-1
最高位
0.6250
X 2
1.250 1 K
-2
0.250
X 2
0.50 0 K
-3
X 2
1.0 1 K -4 最低位
将稊只的整数部分从上到下顺序写出,得到换算结果:0.8125D = 0.1101B
十进制与其它任意进制的转换
十进制与任意进制的转换与十进制到二进制的转换方法完全相同。即把任意进制数拕权展开成多项式和的形式,再把各位的权与该位上系数相乘,乘积逐项相加,其和便是相应的址进制数。十进制转换成任意进制的数时,整数部分用“除基取余”的算法,小数部分用“乘基取整”的方法,然后将得到的任意进制的整数与小数拼接,即为转换的最后结果。
例1:将十二进制 4602.3转换成十进制。
解:(4602.3)
12 = 4*12
3 + 6*12
2 + 0*12
1 + 2*12
0 + 3*12
-1
= 6912 + 864 + 2 + 0.25
= 7778.25D
例2:将414.7D转换成十六进制数,小数精度取2位。
解:因为基数为16,转换时整数部分除以16取余数,小数部分乘以16取其整数。因为0.7的十六进制值从第二位起无限循环,所以按题目要求计算3位取2位就可以了。计算过程如下.
整数部分
取余数
系数
小数部分
取整数
系数
16|414 0.7
16|
25
E K 0 x 16
16|
1
9 K 1 11.2 B K -1
0 1 K 2 0.2
X 16
3.2 3 K -2
0.2
X 16
3.2 3 K -3
转换结果 414.7D = 19E.B3H
十六进制与其它进制的转换
十六进制到二进制的转换
例:将十六进制数 AB.FEH 转换成二进制数。
解:AB.FEH = 10101011.1111111B
十六进制到八进制的转换
十六进制到八进制的转换需通过二进制的转换。
十六进制到十进制的转换
十六进制到十进制的转换需通过二进制的转换。