怎么将十进制数2746.12851转换成二进制、八进制和十六进制数?
1: 选定二进制数的小数部分为16位,那么将其乘以65536(2^16)进行整数化。
2: (2746.12851)10*(2^16)10
=(2746.12851)10*(65536)10
=(179970278.03136)10
取整数部分。
>(179970278)10
=(ABA20E6)16
=(1010 1011 1010 0010 0000 1110 1110)2
3: 因为最初乘了65536,即2的16次方,所以换算成二进制时应右移十六位,即最终结果(101010111010.0010000011101110)2。
4: PS:为什么要换算成十六进制?一个十六进制数就等于四个二进制位,一次性就计算了四个二进制位的结果,这当然是相对比较有效率的做法。一个八进制数就等于三个二制位。
5: 以(101010111010.0010000011101110)2可按每三位进行一次分割,缺的位补零。
6: 即:(101 010 111 010.001 000 001 110 111)2=(5272.10167)8
7: 一个十六进制数就等于四个二制位。
8: 所以(1010 1011 1010.0010 0000 1110 1110)2可按每四位进行一次分割,缺的位补零。
即:(ABA.20E6)16
2746.12851(十进制)
二进制:101010111010.001000001
八进制:5272.101
十六进制:aba.20f
转换步骤为:
1)将整数部分转换为二进制数,采用辗转除以2并取余数
2746/2 = 1373 余0
1373/2 = 686 余1
686/2 = 343 余0
343/2 = 171 余1
171/2 = 85 余1
85/2 = 42 余1
42/2 = 21 余0
21/2 = 10 余1
10/2 = 5 余0
5/2 = 2 余1
2/2 = 1 余0
1/2 = 0 余1 (结束)
所以,整数部分的二进制数为(自下而上):101010111010
2)将小数部分转换成二进制数,采用辗转乘以2并取整数
0.12851*2 = 0.25702 整数部分:0
0.25702*2 = 0.51404 整数部分:0
0.51404*2 = 1.02808 整数部分:1
0.02808*2 = 0.05616 整数部分:0 (这一步只取上一步的小数部分)
0.05616*2 = 0.11232 整数部分:0
……(如此一直算下去,直到满足小数点后的位数精度)
所以,整数部分的二进制数为(自上而下):00100...
3)将得到的二进制结果101010111010.00100转换为8进制
从小数点开始往左,每三个二进制为一组,将整数部分转换为8进制数:
101 010 111 010 --> 5272
从小数点开始往右,每三个二进制为一组,将小数部分转换为8进制数:
001 000 001 --> 101
所以8进制的结果为:5272.101
4)将得到的二进制结果101010111010.00100转换为16进制
从小数点开始往左,每四个个二进制为一组,将整数部分转换为16进制数,如果不够4位二进制数,在最左边补0:
1010 1011 1010 --> aba
从小数点开始往右,每四个二进制为一组,将小数部分转换为16进制数,如果不够4位二进制数,在最右侧补1:
0010 0000 11111 --> 20f
所以16进制结果为:aba.20f