给定浮点数表示的正尾数范围

计算科学 浮点 计算机算术
2021-12-24 16:35:24

我是一名学生,我在解决有关浮点数的问题时遇到了这个问题。

a 16 bit floating point number format is given as;
1 bit for sign
9 bits for mantissa
6 bits for exponent.

mantissa is normalized fraction denoted in sign magnitude form and exponent is in 2's complement form.
base of the system is 2 and and biasing is (2^e-1) - 1. What is the range of positive mantissa?

答案是

0.5 to 1 - 2^-9

尾数的最大值将为 .111111111 即。1 - 2^-9。但我没有得到尾数的最小值。假设 .100000000 是最小正尾数。

我的问题是为什么它不是 .000000001?

1个回答

您没有告诉我们这个问题的原始来源,也没有准确地引用它,所以问题的陈述中可能缺少一些关键的东西。解决方案也很可能是错误的。

但是,对您的困惑的一个可能解释是归一化二进制浮点数的想法,其中包含隐式前导一位。该方案在 IEEE-754 浮点中使用最为显着。

这个想法是,虽然我们只会在内存中存储 9 位尾数,但我们将始终对指数进行归一化,以便尾数的第一位是 1。我们将隐式假设(不显式存储该位)第一位尾数的个数是 1。这在尾数中为我们提供了额外的位,而无需存储成本。10 位尾数的范围从

.1000000000(在内存中存储为 000000000)

.1111111111(在内存中存储为 111111111)

在该方案中,具有最小可能指数的数被认为是非规范化的(或次规范的),因此不假定隐式前导一位。这允许尾数一直到

.000000001(注意这里只有 9 位!)

这扩展了浮点数的范围,但以低端精度为代价。在许多处理器上,对非规范化数字的算术可能比对规范化 IEEE 浮点数的算术慢得多。在某些情况下(这在 GPU 上很常见),处理器将简单地将所有非规范化结果四舍五入到 0,而不是进行额外的处理来正确处理它们。