Oracle® Solaris Studio 12.4:数值计算指南

退出打印视图

更新时间: 2015 年 1 月
 
 

2.2.2 单精度格式

IEEE 单精度格式由三个字段组成:23 位小数 f;8 位偏置指数 e;以及 1 位符号 s 这些字段连续存储在一个 32 位字中,如下图所示。0:22 位包含 23 位小数 f,其中第 0 位是小数的最低有效位,第 22 位是最高有效位;23:30 位包含 8 位偏置指数 e,第 23 位是偏置指数的最低有效位,第 30 位是最高有效位;最高的第 31 位包含符号位 s

图 2-1  单精度存储格式

image:单精度存储格式位的表示法。

Table 2–2 显示一侧的三个组成字段 sef 的值与另一侧的单精度格式位模式表示的值之间的对应关系;u 意味着所指示的字段的值与确定特定单精度格式位模式的值无关。

表 2-2  IEEE 单精度格式位模式表示的值
单精度格式位模式
0 < e < 255
(–1)s × 2e–127 × 1.f(正规数)
e = 0; f ≠ 0
f 中至少有一位不为零)
(–1)s × 2126 × 0.f(次正规数)
e = 0; f = 0
f 中的所有位均为零)
(–1)s × 0.0(有符号的零)
s = 0; e = 255; f = 0(f 中的所有位均为零)
+INF(正无穷大)
s = 1; e = 255; f = 0(f 中的所有位均为零)
–INF(负无穷大)
s = u; e = 255; f ≠ 0
f 中至少有一位不为零)
NaN(Not-a-Number,非数值)

注意,当 e < 255 时,为单精度格式位模式分配的值是使用以下方法构成的:将二进制基数点插入到紧邻小数最高有效位的左侧,将一个隐含位插入到紧邻二进制点的左侧,因而以二进制位置表示法来表示一个带分数(整数加小数,其中 0 ≤ 小数 < 1)。

如此构成的带分数称为单精度格式有效数字。之所以称为隐含位的原因是,在单精度格式位模式中没有显式指定其值,但偏置指数字段的值隐式指定了该值。

对于单精度格式,正规数和次正规数的差别在于正规数有效数字的前导位(二进制点左侧的位)为 1,而次正规数有效数字的前导位为 0。在 IEEE 标准 754 中,单精度格式次正规数称为单精度格式非规格化数。

在单精度格式正规数中 23 位小数加上隐含前导有效数位共提供了 24 位精度。

Table 2–3 中给出了重要的单精度存储格式位模式的示例。最大正正规数是以 IEEE 单精度格式表示的最大有限数。 最小正次正规数是以 IEEE 单精度格式表示的最小正数。最小正正规数通常称为下溢阈值。 (最大和最小正规数和次正规数的十进制值是近似的;对于所示的数字来说,它们是正确的。)

表 2-3  单精度存储格式位模式及其 IEEE 值
公用名称
位模式(十六进制)
十进制值
+0
00000000
0.0
–0
80000000
–0.0
1
3f800000
1.0
2
40000000
2.0
最大正规数
7f7fffff
3.40282347e+38
最小正正规数
00800000
1.17549435e–38
最大次正规数
007fffff
1.17549421e–38
最小正次正规数
00000001
1.40129846e–45
+∞
7f800000
无穷
–∞
ff800000
负无穷
非数字
7fc00000
NaN

NaN(Not a Number, 非数)可以用任何满足 NaN 定义的位模式表示。在Table 2–3 中显示的 NaN 十六进制值只是可用于表示 NaN 的众多位模式之一。