loc*_*obe 3 floating-point exponent
我知道这个问题对你来说太常见(或无聊)。但是,我不明白为什么选择 127 而不是 128 作为偏差指数。
作为 IEEE-754 标准,浮点数的指数部分有 8 位。据我所知,对于 8 位整数,我们将有一个范围:
好的,现在,为了移位(或偏置),通常我们必须将有符号整数加上 128 以将它们转换为无符号整数。例如,
但是,IEEE-754 标准选择 127 作为偏差,而 -128 + 127 = - 1 < 0。这符合逻辑吗?
我显然不明白背后的原因。因此,我需要你们的帮助,并感谢大家。
为什么选择 127 而不是 128 作为偏差指数。
binary32的偏差选择与有符号整数到无符号整数的转换无关。
该选择基于所需的浮点编码范围。
max 3.402...e+38
min normal 1.175...e-38
min subnormal 1.401...e-45
Run Code Online (Sandbox Code Playgroud)
偏差的选择有些随意。为了实现平衡范围,偏差为 127,1.0/max 不为零(某些次正常指数接近最小正常),并且 1.0/min_normal <= max。这些都是不错的属性。所有 1.0/正常值都在 binary32 非零有限范围内。
如果偏差为 128,这些值将减半,并且我们将失去 1.0/min_normal <= max 属性。