Floating point 如何完成从单精度浮点到十进制的转换?

Floating point 如何完成从单精度浮点到十进制的转换?,floating-point,floating-point-conversion,Floating Point,Floating Point Conversion,我正在将C22E8300从单精度IEEE 754浮点转换为十进制 首先,我转换成二进制:1100 0010 0010 1110 1000 0011… 将指数计算为5。尾数为0.24762 现在如何完成转换?让我们成为第一位,e是接下来的八位(解释为二进制数字),f是剩余的23位(解释为二进制数字) 如果e为零,则表示的值为(−1) s•f/223•2−126 如果e为255,f为零,则表示的值为+∞ 或−∞, 分别根据s是0还是1 如果e为255且f不为零,则对象为NaN 否则,表示的值为(−1

我正在将C22E8300从单精度IEEE 754浮点转换为十进制

首先,我转换成二进制:1100 0010 0010 1110 1000 0011…

将指数计算为5。尾数为0.24762

现在如何完成转换?

让我们成为第一位,e是接下来的八位(解释为二进制数字),f是剩余的23位(解释为二进制数字)

如果e为零,则表示的值为(−1) s•f/223•2−126

如果e为255,f为零,则表示的值为+∞ 或−∞, 分别根据s是0还是1

如果e为255且f不为零,则对象为NaN


否则,表示的值为(−1) s•(1+f/223)•2e−127.

我强烈建议您阅读更多有关计算机数值表示和IEEE 754规范的信息。这项工作很复杂,不可低估。下面的链接可能会帮助您走上正确的道路(请参阅常见问题解答)。建议大家看看C标准库源代码。顺便说一句,我对尾数有疑问(除非我们中有人错过了一些尾数技巧)。您对有效位(首选术语而不是“尾数”)的值是不正确的。