为什么指数IEEE754(单个)限制在2 ^ { - 126}< = e< = 2 ^ {127}之间?

时间:2018-04-22 17:08:42

标签: floating-point ieee-754

我指的是这个问题,但我对答案不满意:IEEE-754 32 Bit (single precision) exponent -126 instead of -127

答案是否意味着实际上指数可以是enter image description here,但由于非规范化形式的表示,最小的正数为$1\cdot2^{-127}\cdot1.\cdots$等于$1\cdot2^{-126}\cdot0.1\cdots$

这是否意味着最小的可表示正数是:

$1\cdot2^{-126}0.1(21\cdot0)1$

最后两个选项中的哪一个?

非常感谢你。

再次感谢大家,你们都给出了很好的解释!

3 个答案:

答案 0 :(得分:2)

在IEEE-754基本32位二进制浮点中,每个有限值都具有以下形式:

  

±x.xxxxxxxxxxxxxxxxxxxxxxx•2 e

其中x.xxxxxxxxxxxxxxxxxxxxxxx是二进制数字,-126≤ e ≤+ 127。

对于正常数字,第一个x为1, e 可以是-126≤ e ≤+ 127的任何值。由于第一个x始终为1,因此未明确存储 - 浮点格式包含符号的一位,其他x的23位和指数的8位。指数存储为 e +127的二进制数。因此,对于 e ,从-126到+127,存储的值为1到254.即0和255。

指数字段中的

0是次正规数的代码。对于次正规数,指数 e 与最低正常指数-126相同,但第一个x为0.因此,次正规值的形式为:

  

±0.xxxxxxxxxxxxxxxxxxxxxxx•2 -126

因此,可以表示的最小正值是:

  

+ 0.00000000000000000000001•2 -126

是2 -149

(指数字段中的255用于表示无穷大和NaN。)

答案 1 :(得分:2)

  

为什么指数IEEE754(单个)限制在2 ^ { - 126}< = e< = 2 ^ {127}之间?   改写:
  为什么指数IEEE754(单个)限制在-126< = exponent< = 127?

之间

binary32有一个8位偏置指数字段,允许256个值。可以选择更宽/更小的指数字段,但这里是8。 2个值0和255具有特殊含义,留下254.

在20世纪70年代,人们得出结论,对称分布这些偏置指数值+/-约为零,通过采用127偏移导致254值-126到+127。

正常值的形式为:sign *(1.xxx ...总计23 x' s ... xxx)* 2 指数 - 偏移量提供24位二进制精度。

由于各种数值计算的原因(经过多次辩论),得出的结论是|值|小于最小正常正数1.0 * 2 1 - 127 应该逐渐失去精确度。这些是次正常denormal数字。它们使用偏置指数 0和编码,其结果指数为-126 ,为最小正常数。

         v--------------------------------------- Implied valued              
         | v--------------------------v---------- Significant explicitly encoded
         | |                          |     v---- Biased exponent
         | |                          |     | v-v Implied offset  
2^-126 = 1.000 0000 0000 0000 0000 0000 * 2^1-127 // smallest normal
         0.111 1111 1111 1111 1111 1111 * 2^0-126 // largest sub-normal
2^-127 = 0.100 0000 0000 0000 0000 0000 * 2^0-126
2^-128 = 0.010 0000 0000 0000 0000 0000 * 2^0-126
2^-129 = 0.001 0000 0000 0000 0000 0000 * 2^0-126
...
2^-149 = 0.000 0000 0000 0000 0000 0001 * 2^0-126 // smallest sub-normal
0.0f   = 0.000 0000 0000 0000 0000 0000 * 2^0-126 // zero

因此,低至2 -127 的值具有24位精度,而低于2 -149 的值的精度不断下降。

答案 2 :(得分:1)

这很简单:-126被选择用于非正规数,因此在最小法线和最大法线之间没有步骤。

最低法线是

  

1.0000 ... bin ×2 -126

下面有一个“ULP”

  

0.1111 ... bin ×2 -126

如果它是2 -127 ,那么在这两个值之间将存在几个“ULP”(或甚至许多“ULP”)的步骤。