IEEE 754标准
IEEE 754标准浮点数格式:
- 阶码用移码表示
- 移码=阶码真值+偏置值
- 阶码真值=移码-偏置值
- 偏置值的公式为:
- 移码(这里的
移码看作无符号数
)的表示范围为: - 尾数用原码表示
隐含最高数位1
- 阶码全1和阶码全0用作特殊用途
IEEE 754浮点数格式:
浮点数的最大值和最小值
IEEE 754规格化浮点数的最大值和最小值,可以先根据最大绝对值,改变符号位即可
浮点数的最大绝对值
浮点数规格化的阶码决定了数值的大小,因此找最大绝对值,就需要首先确认最大的阶码真值,然后再确定尾数部分最大
因此找最大绝对值需要确定最大阶码和确定最大尾数
我们拿短浮点数(单精度、float型)举例。
已经知道阶码真值=移码-偏偏置值,因此
最大的阶码=最大的移码-偏置值`。
短浮点数得阶码占8
位,根据移码公式可以算出:
由于全1和全0用作特殊用途,所以我们能取得最大的移码是254
;
根据偏置值公式可以算出:
偏置值为127
由公式阶码真值=移码-偏移量
可以求出最大阶码真值能取得254-127=127
。求出最大阶码,再求最大尾数部分
短浮点数的尾数部分占23位,我们把23位数值位全部取1
就是最大值,再加上隐含的最高位1
,得出:
组合到一块就是:
但是这么多位1存在很麻烦,我们化简一下:
最后得到:
浮点数的最小绝对值
和最大绝对值一样,只需要让阶码真值最小,尾数部分最小即可
继续拿短浮点数举例。
上面已经求出短浮点数移码的表示范围
和偏置值为127
由于移码的全1和全0用作特殊用途,所以我们能取得最小的移码是1
;
由公式阶码真值=移码-偏移量
可以求出最大阶码真值能取得1-127=-126
。求出最小阶码,再求最小尾数部分
短浮点数的尾数部分占23位,我们把23位数值位全部取0
就是最小值,再加上隐含的最高位1
,得出:
最后得到:
浮点数的最大值
将绝对值改变符号即可
短浮点数所能表示的最大规格化正数:
短浮点数所能表示的最大规格化负数:
浮点数的最小值
将绝对值改变符号即可
短浮点数所能表示的最小规格化正数:
短浮点数所能表示的最小规格化负数: