为啥我们不能在不添加偏差或将其转换为 2 或 1 补码的情况下存储 IEEE 浮点数的指数? [复制]

Posted

技术标签:

【中文标题】为啥我们不能在不添加偏差或将其转换为 2 或 1 补码的情况下存储 IEEE 浮点数的指数? [复制]【英文标题】:Why can't we store exponent of IEEE floating point number without adding bias or converting it to 2's or 1's complement? [duplicate]为什么我们不能在不添加偏差或将其转换为 2 或 1 补码的情况下存储 IEEE 浮点数的指数? [复制] 【发布时间】:2017-01-26 15:13:06 【问题描述】:

为什么我们必须添加偏差或将 IEEE 浮点数的指数转换为 2 或 1 的补码形式? 为什么我们不能像这样以单精度存储它:

1.1 * 2^0 => 0 00000000 10000000000000000000000

而不是这个:

1.1 * 2^ (0 + 127) => 0 01111111 10000000000000000000000

谢谢

【问题讨论】:

我想你会找到一个很好的答案here 我的问题不同,你可以看到它的不同 负指数如何表示? @PatriciaShanahan 我会用 1 或 2 的补码表示它 【参考方案1】:

指数的偏差格式让你可以做到这一点:

给定一个浮点f,用f>表示它的二进制表示。 用 + 表示整数加法。

然后

<f> + 1 = nextafter(f) 

f的同一个符号的无穷大。

只要和不影响符号位,这是真的。

【讨论】:

它还简化了硬件比较。忽略 NaN,浮点数的数量级与位模式的无符号二进制顺序相匹配,而符号位被切掉。 @PatriciaShanahan 很好!

以上是关于为啥我们不能在不添加偏差或将其转换为 2 或 1 补码的情况下存储 IEEE 浮点数的指数? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

将 Javascript 数组转换为 PHP 数组或将其传递给 PHP 文件

转换值并计算stddev

为啥 math.inf 是浮点数,为啥我不能将其转换为整数?

uint 不能转换为 int

为啥我不能将其转换为自定义的 React 钩子?

如何对 Javascript 对象进行排序,或将其转换为数组?