将 IEEE754 转换为十进制的方程(标准化形式)

Posted

技术标签:

【中文标题】将 IEEE754 转换为十进制的方程(标准化形式)【英文标题】:Equation to convert IEEE754 to decimal (normalised form) 【发布时间】:2020-11-22 16:12:32 【问题描述】:

任何帮助将不胜感激! 我一直在使用 IEEE754 浮点数(32 位单精度),我正在尝试将其转换为十进制规范化格式。我找到了两个方程式,但我不确定哪个是正确的。

N= (-1)^s * 1.F *2^(e-127) 
    OR 
    N= (-1)^s * 1+F * 2^(e-127) 

s= sign bit
F= fraction/mantissa
e=exponent

上面哪个等式是正确的?换句话说,它是 1*F 还是 1+F

【问题讨论】:

请注意,点中有一个句点,表示“二进制点”,即小数点的二进制等效项。它不是乘法符号。如果 F 是 [0, 1) 中的小数,则 (1+F) 是正确的。如果 F 是作为位串的有效数字,则 1.F 是正确的,意思是解释“1”。后跟 F 的位作为二进制数字。除非 e 为零,在这种情况下它应该是 (0+F) 或 0.F 【参考方案1】:

自从我完成浮点转换以来已经有一段时间了,但这是一个加号,而不是乘号(所以 1+F,而不是 1*F)。

关于这个主题的***文章非常好,也说这是一个加号:https://en.wikipedia.org/wiki/Single-precision_floating-point_format

来自爱荷华州,描述更简洁:http://class.ece.iastate.edu/arun/CprE281_F05/ieee754/ie5.html

另一种有趣的解决方法:How to convert an IEEE 754 single-precision binary floating-point to decimal?

【讨论】:

是的,刚刚确认它是一个+。谢谢

以上是关于将 IEEE754 转换为十进制的方程(标准化形式)的主要内容,如果未能解决你的问题,请参考以下文章

使用 IEEE 754 标准(32 位)将数字转换为二进制

将十进制数表示成ieee754标准的32浮点规格化数 27/64

IEEE-754浮点标准简介

Ruby 将 64 位 IEEE 754 十六进制转换为双精度

IEEE754是啥

将十进制转换为 IEEE-754 格式