计算机组成原理 - 浮点数偏移量为127的理解


计算机组成原理 - 浮点数偏移量为127的理解

问题描述

学习浮点数时,发现 IEEE 754 浮点数的阶码偏移量规定为 127,而移码偏移量一般为 128。

例如对于 8 位的数,映射关系为:

-128 - 0 - 127 (真值)

|         |      |

0 - 128 - 255 (移码值)

即偏移 128。

为什么此处规定为 127 呢?

释疑

关于移码

以 8 位数为例,总共能表示 256 个数,把这些数加上一个固定的值,从而形成新的码值(还是 8 位),这就是移码的定义。例如,可以把有符号数映射到 0 - 255 的段上。

移码的优势:原来的大小关系不变,且一一对应(没有两种表示的 0),很容易判断大小(如判断是最小值或者最大值)。

关于浮点数

对于 256 个数,有两个(相对)均衡的范围:

-127 - 128

-128 - 127

两个范围使用移码表示,去掉 00000000 和 11111111,也即去掉最小值和最大值(因为有特殊含义),为

-126 - 127

-127 - 126

反映到浮点数(32bit)上,第一种表达其范围为:

\(\text{min}=1.0\times 2^{-126}=1.175\times 10^{-38}\)
\(\text{max}=(2-2^{-23})\times 2^{127}=3.4\times 10^{38}\)

第二种表达范围为:

\(\text{min}=1.0\times 2^{-127}=5.877\times 10^{-39}\)
\(\text{max}=(2-2^{-23})\times 2^{126}=1.7\times 10^{38}\)

显然第一种更为对称。

因此使用 -126 - 127 的范围,也即 -127 - 128 的范围。此时要映射到 0 - 255 上,偏移值即为 127。

结论

使用 127 的偏移值,只是因为需要使用 -127 - 128 的值范围,此时浮点数的表示范围更为均衡而已。
注:这也只是对标准的一种猜测,但不失为一个合理的猜测。

后记

移码关键在于保持原来的大小关系,因此对于一个特定的范围,必须要将最小值映射成 0。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM