怎么将十进制数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

温馨提示:答案为网友推荐,仅供参考
相似回答