首页 > 解决方案 > 将 IEEE 754 的浮点数转换为十六进制的最简单方法

问题描述

有人可以解释执行上述操作的分步程序吗?

标签: floating-pointieee-754

解决方案


以下是 IEEE-754 基本 32 位二进制浮点,具有舍入到最近关系到偶数:

  1. 从输入数字x开始。
  2. 如果x为 0,则产生 0x00000000(对于 0)并停止。
  3. e设置为 0。
  4. 如果 0 ≤ x则设置s为 0,如果x < 0 则设置为 1,并将x设置为 | x |。
  5. 在 2 ≤ x时重复:将x除以2 并将 1 添加到e
  6. 在x < 1时重复:将x乘以 2 并从e中减去 1 。
  7. 将x乘以2 23
  8. 如果e < -126,将x除以 2 -126-<em>e并将e设置为 -126。
  9. 如果x的小数部分小于 ½,则将其更改为 0。
  10. 如果x的小数部分大于 ½,则将其更改为 0 并将 1 添加到f
  11. 如果x的小数部分是 ½,则将其更改为 0。然后,如果x为奇数,则将x加 1 。
  12. 将x除以2 23
  13. 如果 2 ≤ x,将f除以 2 并将 1 加到e
  14. 如果 127 < e
    • 如果s为 1,则产生 0xff800000(对于 -∞)并停止。
    • 否则,产生 0x7f800000(对于 +∞)并停止。
  15. 如果 1 ≤ x
    • 将 127 加到e并从x中减去 1 。
    • 否则,将e设置为 0。
  16. 产生s •2 31 + e •2 23 + x •2 23十六进制并停止。

以上内容来自记忆,未经测试,因此应仔细检查。


推荐阅读