怎么将十进制数2746.12851转换成二进制、八进制和十六进制数?

2024-11-27 16:06:54
推荐回答(1个)
回答1:

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

  1. 2746.12851(十进制)

  2. 二进制:101010111010.001000001

  3. 八进制:5272.101

  4. 十六进制:aba.20f

  5. 转换步骤为:

  6. 1)将整数部分转换为二进制数,采用辗转除以2并取余数

  7. 2746/2 = 1373 余0

  8. 1373/2 = 686 余1

  9. 686/2 = 343 余0

  10. 343/2 = 171 余1

  11. 171/2 = 85 余1

  12. 85/2 = 42 余1

  13. 42/2 = 21 余0

  14. 21/2 = 10 余1

  15. 10/2 = 5 余0

  16. 5/2 = 2 余1

  17. 2/2 = 1 余0

  18. 1/2 = 0 余1 (结束)

  19. 所以,整数部分的二进制数为(自下而上):101010111010

  20. 2)将小数部分转换成二进制数,采用辗转乘以2并取整数

  21. 0.12851*2 = 0.25702 整数部分:0

  22. 0.25702*2 = 0.51404 整数部分:0

  23. 0.51404*2 = 1.02808 整数部分:1

  24. 0.02808*2 = 0.05616 整数部分:0 (这一步只取上一步的小数部分)

  25. 0.05616*2 = 0.11232 整数部分:0

  26. ……(如此一直算下去,直到满足小数点后的位数精度)

  27. 所以,整数部分的二进制数为(自上而下):00100...

  28. 3)将得到的二进制结果101010111010.00100转换为8进制

  29. 从小数点开始往左,每三个二进制为一组,将整数部分转换为8进制数:

  30. 101 010 111 010 --> 5272

  31. 从小数点开始往右,每三个二进制为一组,将小数部分转换为8进制数:

  32. 001 000 001 --> 101

  33. 所以8进制的结果为:5272.101

  34. 4)将得到的二进制结果101010111010.00100转换为16进制

  35. 从小数点开始往左,每四个个二进制为一组,将整数部分转换为16进制数,如果不够4位二进制数,在最左边补0:

  36. 1010 1011 1010 --> aba

  37. 从小数点开始往右,每四个二进制为一组,将小数部分转换为16进制数,如果不够4位二进制数,在最右侧补1:

  38. 0010 0000 11111 --> 20f

  39. 所以16进制结果为:aba.20f