各种进制之间的转换方法
⑴二进制B转换成八进制Q:以小数点为分界线,整数部分从低位到高位,小数部分从高位到低位,每3位二进制数为一组,不足3位的,小数部分在低位补0,整数部分在高位补0,然后用1位八进制的数字来表示,采用八进制数书写的二进制数,位数减少到原来的1/3。
例:◆二进制数转换成八进制数: = 110 110 . 101 100B
↓↓ ↓ ↓
6 6 . 5 4 =
◆八进制数转换成二进制数:
3 6 . 2 4Q
↓ ↓ ↓ ↓
011 110 . 010 100 =
◆
低位,每4位二进制数为一组,不足4位的,小数部分在低位补0,整数部分在高位补0,然后用1位十六进制的数字来表示,采用十六进制数书写的二进制数,位数可以减少到原来的1/4。
例:◆二进制数转换成十六进制数:
.100111B = 1011 0101 1010 . 1001 1100B
↓ ↓ ↓ ↓ ↓
B 5 A . 9
C = 5A
◆十六进制数转换成二进制数:
= A B . F EH
↓ ↓ ↓ ↓
1010 1011. 1111 1110 = .1111111B
先把八进制数Q转换成二进制数B,再转换成十六进制数H。
例:◆八进制数转换成十六进制数:
= 111 100 000 010 . 100 101B
= .100101B
= 1111 0000 0010 . 1001 0100B
= F 0 2 . 9 4H
=
◆十六进制数转换成八进制数:
= 0001 1011 . 1110B
=
= 011 011 . 111B
= 3 3 . 7Q
=
⑷二进制数B转换成十进制数D:利用二进制数B按权展开成多项式和的表达式,取基数为2,逐项相加,其和就是相应的十进制数。
例:◆二进制数转换成十进制数:
= 1×25+1×24+0×23+0×22+1×21+0×20+1×2-1
= 32+16+2+
=
◆求8位二进制数能表示的最大十进制数值:
最大8位二进制数是B
B = 1×27+1×26+1×25+1×24+1×23+1×22+1×21+1×20
= 255
⑸十进制数D转换成二进制数B:十进制数转换成二进制数时,整数部分和小数部分换算算法不同,
需要分别进行。
整数部分用除基取余法转换,小数部分用乘基取整法转换。
①除基取余法(整数部分):需要转换的整数除以基数2,取其商的余数就是二进制数最低位的系数
K 0,将商的整数部分继续除以基数2,取其商的余数作二进制数的高一位的系数K
1
,……,这样逐
次相除直到商为0,即得到从低位到高位的余数序列,便构成对应的二进制整数。
例:◆十进制数233转换成二进制数:
▲竖式表示:
十进制整数余数系数K
i
位
2∟233
2∟116 1 K
最低位
2∟58 0 K
1
2∟29 0 K
2
2∟14 1 K
3
2∟7 0 K
4
2∟3 1 K
5
2∟1 1 K
6
0 1 K
7
最高位
▲线图表示:
233÷2→ 116 → 58 → 29 → 14 → 7 → 3 → 1 → 0
↓ ↓ ↓ ↓↓ ↓↓↓
余数: 1 0 0 1 0 1 1 1
位:最低位最高位
从最后一次余数开始向上(向左)顺序(即从最高位向最低位)写出,得到换算结果:233D = B ②乘基取整法(小数部分):把要转换的小数乘以基数2,取其积的整数部分作对应二进制小数的最高
位系数K
-1,将积的小数部分继续乘以基数2,新得到积的整数部分作二进制下一位的系数K
-2
,……,
这样逐次乘基,即得到从高位到低位积的整数序列,便构成对应的二进制小数。
例:◆十进制小数转换成二进制小数:
▲竖式表示:
十进制小数积的整数部分系数位
× 2
1 K-1最高位
× 2
1 K-2
× 2
0 K-3
× 2
1 K-4最低位
▲线图表示:
× 2 → → → → 0
↓ ↓ ↓↓
积的整数部分: 1 1 0 1
位:最高位最低位
将乘积的整数部分从上到下(左到右)顺序写出,得到换算结果: =
③综合结论:一个既有整数又有小数部分的十进制数被送入计算机后,转换将分三步进行:1、由
机器把整数部分按除基取余法进行转换;2、小数部分按乘基取整法进行转换;3、将已转换的两部分合在一起就是所求的二进制数值。
但并不是所以的十进制小数都能转化成有限位的二进制小数,有时整个过程会无限进行下去。
(例如:=…B)此时,可以根据精度的要求并考虑计算机字长位数取一定位数后,“0舍1入”,得到原十进制数的二进制近似值。
例:◆求输入计算机后转换成二进制数的形式:
解∵14D = 1110B =
∴ =
⑹十进制数与任意进制的转换:1、任意进制数转换成十进制数的方法和二进制数转换成十进制数一样,把任意进制数按权展开成多项式和的表达式,再把各位的权与该位上系数相乘,乘积逐项相加,其和就是相应的十进制数。
2、十进制数转换成任意进制数时,整数部分用“除基取余法”,小数部分用“乘基取整法”,然后将得到的任意进制的整数与小数拼接,即为转换的最后结果。
例:◆十二进制数转换成十进制数:
解()
12
= 4×123+6×122+0×121+2×120+3×12-1
= 6912+864+0+2+
=
◆将转换成十六进制,小数精度取2位:
解整数部分取余数系数小数部分取整数系数
16∟414
16∟25 E K
× 16
16∟1 9 K
1 B K
-1
0 1 K
2
× 16
3 K
-2
× 16
3 K
-3转换结果: =。