突然发现关于一些转换关系有些模糊,又重新复习一遍,现在记录下来加深下记录也和大家共享下。
一、十进制转换二进制的方法
整数部分除以二取余数,小数部分乘以二取整数。
eg1:整数 17 的二进制转换过程:
17 / 2 = 8 --------- 余数1
8 / 2 = 4 --------- 余数0
4 / 2 = 2 --------- 余数0
2 / 2 = 1 --------- 余数0 , 最后值为1
二进制从最后商值再到余数从下到上写出:10001
eg2:小数0.4 的二进制转换过程(保留4位):
0.4 * 2 =0.8 ------- 整数0
0.8 *2 = 1.6 ------- 整数1
0.6 * 2 = 1.2 ------- 整数1
0.2 * 2 = 0.4 ------- 整数0
0.4 * 2 = 0.8 -------- 整数0
二进制小数转换保留小数位数0舍1入(从上向下),即:0.0110
二、二进制转换十进制的过程:
1100.011 = 1*2^3 + 1*2^2 + 0*2^1 + 0*2^0 + 0*2^(-1) + 1*2^(-2) + 1*2^(-3) = 12.375
三、二进制与八进制的转换过程:
2^3 = 8 ,八进制就是用这种关系衍生而来,即三位二进制表示一位八进制。
(1)二进制转换为八进制:
3位二进制数按权展开相加得到一位八进制数(从右向左三位一体,不足再补0)。
eg1: 11001001 = 011 001 001 = 0*2^2+1*2^1+1*2^0 0*2^2+0*2^1+1*2^0 0*2^2+0*2^1+1*2^0 = 311
转换的八进制为:311
eg2: 1011011001.0111 = 001 011 011 001 . 011 100 = 0*2^2+0*2^1+1*2^0 0*2^2+1*2^1+1*2^0
0*2^2+1*2^1+1*2^0 0*2^2+0*2^1+1*2^0 . 0*2^2+1*2^1+1*2^0 1*2^2+0*2^1+0*2^0
= 1331.34
(2) 八进制转换为二进制:
把八进制从左到右每一位拆成3位二进制
eg: 67.5 = 6 7 . 5 = 110 111 . 101 = 110111.101
四、二进制与十六进制的转换过程:
2^4 = 16 ,十六进制就是用这种关系衍生而来,即四位二进制表示一位八进制。
(1)二进制转换为十六进制:
4位二进制数按权展开相加得到一位十六进制数(从右向左四位一体,不足再补0)。
eg: 11101001.1011 = 1110 1001 . 1011 = 1*2^3+1*2^2+1*2^1+0*2^0 1*2^3+0*2^2+0*2^1+1*2^0
. 1*2^3+0*2^2+1*2^1+1*2^0 = e9.b
(2) 十六进制转换为二进制:
把十六进制从左到右每一位拆成4位二进制
eg: a8.16 = a 8 . 1 6 = 1010 1000 . 0001 0110 = 10101000.0001011
五、八进制和十六进制的相互转换:
不能直接转换,需要通过二进制这个桥梁进行转换,逻辑和上面是相通的,就不再举例说明了。
六、八进制或十六进制与十进制的相互转换:
(1)八进制或十六进制转换为十进制:
把八进制或十六进制数按权展开相加即可得到十进制数。
eg1: 八进制数 552.3
552.3 = 5*8^2 + 5*8^1 + 2*8^0 + 3*8^(-1) = 362.375
eg2: 十六进制 e1f
e1f = 14*16^2 + 1*16^1 + 15*16^0 = 3615
(2) 十进制转换八进制或十六进制:
a. 间接法: 不直接转换,通过二进制这个中介进行转换,转换逻辑参考上面方法。
b.直接法: 八进制或十六进制转换为十进制的方法类似于二进制转化为十进制的方法,不过二进制的参考书是2,
八进制的参考数是8,十六进制的参考书是16。
eg1: 18 (十进制)
转换为二进制:除于2取余数 10010
转换为八进制:除于8取余数 22
转换为十六进制:除于16取余数 12
eg2: 29.12(十进制) ,保留3位小数
转换为二进制:11101.001
转换为八进制(3舍4入 , 小数部分*8取整数):35.075
转换为十六进制(7舍8入,小数部分*16取整数):1d.1ec
0.12 * 8 = 0.96 取整数0
0.96 * 8 = 7.68 取整数7
0.68 * 8 = 5.44 取整数5
七、在线任意进制转换工具 - aTool在线工具
到这关于进制间的转换就总结到这里了,希望对大家有用,也希望可以提出我的问题大家相互指正。。。