为啥我们不能在不添加偏差或将其转换为 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 文件