IEEE 754规格化浮点数所能表示的最大值和最小值

简介: IEEE 754规格化浮点数所能表示的最大值和最小值

IEEE 754标准

IEEE 754标准浮点数格式:

image.png

  • 阶码用移码表示
  • 移码=阶码真值+偏置值
  • 阶码真值=移码-偏置值
  • 偏置值的公式为:

image.png

  • 移码(这里的移码看作无符号数)的表示范围为:
  • image.png
  • 尾数用原码表示
  • 隐含最高数位1
  • 阶码全1和阶码全0用作特殊用途

IEEE 754浮点数格式:

image.png

浮点数的最大值和最小值

IEEE 754规格化浮点数的最大值和最小值,可以先根据最大绝对值,改变符号位即可

浮点数的最大绝对值

浮点数规格化的阶码决定了数值的大小,因此找最大绝对值,就需要首先确认最大的阶码真值,然后再确定尾数部分最大

因此找最大绝对值需要确定最大阶码和确定最大尾数

我们拿短浮点数(单精度、float型)举例。

已经知道阶码真值=移码-偏偏置值,因此最大的阶码=最大的移码-偏置值`。

短浮点数得阶码占8位,根据移码公式可以算出:

image.png

由于全1和全0用作特殊用途,所以我们能取得最大的移码是254

根据偏置值公式可以算出:

image.png

偏置值为127

由公式阶码真值=移码-偏移量可以求出最大阶码真值能取得254-127=127。求出最大阶码,再求最大尾数部分

短浮点数的尾数部分占23位,我们把23位数值位全部取1就是最大值,再加上隐含的最高位1,得出:

image.png

组合到一块就是:

image.png

但是这么多位1存在很麻烦,我们化简一下:

image.png

最后得到:

image.png

浮点数的最小绝对值

和最大绝对值一样,只需要让阶码真值最小,尾数部分最小即可

继续拿短浮点数举例。

上面已经求出短浮点数移码的表示范围

image.png

和偏置值为127

由于移码的全1和全0用作特殊用途,所以我们能取得最小的移码是1

由公式阶码真值=移码-偏移量可以求出最大阶码真值能取得1-127=-126。求出最小阶码,再求最小尾数部分

短浮点数的尾数部分占23位,我们把23位数值位全部取0就是最小值,再加上隐含的最高位1,得出:image.png

最后得到:

image.png


浮点数的最大值

将绝对值改变符号即可

短浮点数所能表示的最大规格化正数:

image.png

短浮点数所能表示的最大规格化负数:

image.png

浮点数的最小值

将绝对值改变符号即可

短浮点数所能表示的最小规格化正数:

image.png

短浮点数所能表示的最小规格化负数:

image.png

长浮点数同理




目录
相关文章
|
9月前
wustojc1002求2个整数最大值
wustojc1002求2个整数最大值
26 0
|
算法 测试技术 C++
基于C++实现的大整数计算
基于C++实现的大整数计算
111 0
基于C++实现的大整数计算
35.数值的整数次方
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方
34 0
35.数值的整数次方
|
前端开发 JavaScript 程序员
数值的整数次方
数值的整数次方
数值的整数次方
076.计算高次方数的尾数
076.计算高次方数的尾数
93 0
|
存储 Java
从0.2+0.4不等于0.6说浮点数
从0.2+0.4不等于0.6说浮点数,浮点数我一直心存疑惑。
122 0
从0.2+0.4不等于0.6说浮点数
1413. 逐步求和得到正数的最小值
给你一个整数数组 nums 。你可以选定任意的 正数 startValue 作为初始值。
107 0
|
JavaScript 前端开发
1.0-0.9小数计算精度问题
parseFloat((1.0-0.7).toFixed(10)) toFixed() 方法可把 Number 四舍五入为指定小数位数的数字。 浮点数的精度问题不是JavaScript特有的,因为有些小数以二进制表示位数是无穷的。
1188 0
求浮点数的整数次幂
/** * 求浮点数的整数次幂 * pow(0.99, 365) = 0.025 (每天做少一点,每年积累的仅有40分之一) * pow(1.01, 365) = 37.
1329 0