表示小于单精度最小值的数

问题描述 投票:0回答:1

我正在做我的硬件但卡住了。我需要计算出数字 2 * 2^{-151} 的单精度表示。

我认为这是一个次正规/非正规化数字,因此我需要将指数部分设置为全零;对于尾数部分,由于我只有 23 位,所以我可以设置的最小位数是 2^{-23}。因此,我可以表示的最小非规范化数是

2^{-23} * 2^{-126} = 2^{-149}。

如何表示 2 * 2^{-151} ?在这种情况下我会得到 0 吗?我们可以使用 C/C++ 来验证这一点吗?

floating-point binary subnormal-numbers
1个回答
0
投票

IEEE-754 二进制 32 格式(“单精度”二进制浮点)无法表示数字 2−151

如果执行操作将 2−151 从另一种格式(例如源代码中的文字或二进制 64 [“双精度”] 格式)转换为 binary32,则结果将根据选择进行舍入舍入规则。一般默认规则是舍入到最近的联系到偶数。最接近 2−151 的二进制 32 表示的两个数字是 0 和 2−149。 0 最接近,所以就是结果。采用“向上”舍入规则,向 +∞ 方向舍入,结果将为 2−149

© www.soinside.com 2019 - 2024. All rights reserved.