NaN(非数)可以用任何满足NaN定义的位模式表示。在表2-5中显示的NaN十六进 制值只是可用于表示NN的众多位模式之一。 2.2.4 双精度扩展格式(SPARC) SPARC浮点环境的四倍精度格式符合双精度扩展格式的IEEE定义。四倍精度格式占用 32位字并包含以下三 个字段:112位小数f、15位偏置指数e和1位符号s。这三个字段 连续存储,如图2-3所示。 地址最高的32位字包含小数的32位最低有效位,用31:0表示。紧邻的两个32位字 95.64 面的 效 之,而第15位是 数的最高有效 6 包含15 将号中第16位是该宜指数的级低有效位,0位是高有效位:第 图2-3将这四个连续的32位字按一个128位字那样进行了编号,其中0111位存储小数 E:112126位存储15位偏置指数e: 而第127位存储符号位s se[126:1121 f[111:96] 127126 112111 96 f[95:64] 95 f[63:32] 63 32 £[31:0] 只 2-3 双精度扩展格式(SPARC) 、e和s三个字段中的位模式值将决定整个位模式所表示的值。 IEEE算法2-7
IEEE 算法 2-7 NaN(非数)可以用任何满足 NaN 定义的位模式表示。在表 2-5 中显示的 NaN 十六进 制值只是可用于表示 NaN 的众多位模式之一。 2.2.4 双精度扩展格式 (SPARC) SPARC 浮点环境的四倍精度格式符合双精度扩展格式的 IEEE 定义。四倍精度格式占用 32 位字并包含以下三个字段:112 位小数 f、15 位偏置指数 e 和 1 位符号 s。这三个字段 连续存储,如图 2-3 所示。 地址最高的 32 位字包含小数的 32 位最低有效位,用 f[31:0] 表示。紧邻的两个 32 位字 分别包含 f[63:32] 和 f[95:64]。下面的 0:15 位包含小数的 16 位最高有效位 f[111:96],其 中第 0 位是这 16 位的最低有效位,而第 15 位是整个小数的最高有效位。16:30 位包含 15 位偏置指数 e,其中第 16 位是该偏置指数的最低有效位,而第 30 位是最高有效位;第 31 位包含符号位 s。 图 2-3 将这四个连续的 32 位字按一个 128 位字那样进行了编号,其中 0:111 位存储小数 f ; 112:126 位存储 15 位偏置指数 e ;而第 127 位存储符号位 s。 图 2-3 双精度扩展格式 (SPARC) f、 e 和 s 三个字段中的位模式值将决定整个位模式所表示的值。 127 126 112 111 96 95 64 63 32 31 0 s e[126:112] f[111:96] f[95:64] f[63:32] f[31:0]
表2-6显示了三个组成字段的值与四倍精度格式位模式表示的值之间的对应关系。u意味 着“无关”,即指示字段的值与确定特定位模式的值无关 囊2-6 位模式表示的值(SPARC) 双精度扩震位横式(SPARC) 值 0<e<32767 (1×2e-163831.f(正规数) e=0、f≠0 (1P×2163820.(次正规数) (任中至少有一位不为零) e=0、f=0 (1)x0.0(有符号的零) (任中的所有位均为零) s=0、e=32767、f=0 +F(正无穷大) (E中的所有位均为零) s=1、e=32767:f=0 NF(负无穷大) (E中的所有位均为零) s=u、 e=32767、f≠0 NaN(非数) (任中至少有一位不为零) 表2-7中给出了重要的四倍精度双精度扩展存储格式位模式的示例。第二列中的位模式 显示为四个8位十六进制数。最左侧的数是地址最低的32位字的值,而最右侧的数是地 址最高的32位字的值。最大正正规数是以四倍精度格式表示的最大有限数。最小正次正 府式的品正斯 (最大利 2-7 双精度扩展格式位模式(SPARC) 通用名称 位式(SPARC) 十进制值 +0 00000000000000000000000000000000 0.0 0 80000000000000000000000000000000 -0.0 1 3fff00000000000000000000000000001.0 2 400000000000000000000000000000002.0 最大正规数 EEEEEEEEEEEEEEEEEEEEEEEE 1.1897314953572317650857593266280070e+4932 最小正规数 00010000000000000000000000000000 3.3621031431120935062626778173217526e-4932 盘大正规 3.3621031431120935062626778173217520e-4932 最正次正→0000600000000000000000000001 6.4751751194380251109244389582276466e-4966 2-8《数值计算指南》·2005年1月
2-8 《数值计算指南》 • 2005 年 1 月 表 2-6 显示了三个组成字段的值与四倍精度格式位模式表示的值之间的对应关系。u 意味 着 “无关”,即指示字段的值与确定特定位模式的值无关。 表 2-7 中给出了重要的四倍精度双精度扩展存储格式位模式的示例。第二列中的位模式 显示为四个 8 位十六进制数。最左侧的数是地址最低的 32 位字的值,而最右侧的数是地 址最高的 32 位字的值。最大正正规数是以四倍精度格式表示的最大有限数。最小正次正 规数是以四倍精度精度格式表示的最小正数。最小正正规数通常称为下溢阈值。(最大和 最小正规数和次正规数的十进制值是近似的;对于所示的数字来说,它们是正确的。) 表 2-6 位模式表示的值 (SPARC) 双精度扩展位模式 (SPARC) 值 0 < e < 32767 (1)s x 2e-16383 1.f (正规数) e = 0、 f ≠ 0 (f 中至少有一位不为零) (1)s x 2-16382 0.f (次正规数) e = 0、 f = 0 (f 中的所有位均为零) (1)s x 0.0 (有符号的零) s = 0、 e = 32767、 f = 0 (f 中的所有位均为零) +INF (正无穷大) s = 1、 e = 32767 ; f = 0 (f 中的所有位均为零) -INF (负无穷大) s = u、 e = 32767、 f ≠ 0 (f 中至少有一位不为零) NaN (非数) 表 2-7 双精度扩展格式位模式 (SPARC) 通用名称 位模式 (SPARC) 十进制值 +0 00000000 00000000 00000000 00000000 0.0 -0 80000000 00000000 00000000 00000000 -0.0 1 3fff0000 00000000 00000000 00000000 1.0 2 40000000 00000000 00000000 00000000 2.0 最大正规数 7ffeffff ffffffff ffffffff ffffffff 1.1897314953572317650857593266280070e+4932 最小正规数 00010000 00000000 00000000 00000000 3.3621031431120935062626778173217526e-4932 最大次正规 数 0000ffff ffffffff ffffffff ffffffff 3.3621031431120935062626778173217520e-4932 最小正次正 规数 00000000 00000000 00000000 00000001 6.4751751194380251109244389582276466e-4966
表2-7 双精度扩展格式位模式(SPARC)(续) 通用名称位捕式(SPARC) 十进制值 +00 7fff0000000000000000000000000000+∞ -00 ffff0000000000000000000000000000-∞ 非数 7fff8000000000000000000000000000NaN 在表2-7中显示的NaN十六进制值只是可用于表示NaN的众多位模式之一。 2.2.5 双精度扩展格式(x86) 该浮点环境双精度扩展格式符合双精度扩展格式的EEE定义。它包含四个字段:63位 小数E、1位显式前导有效数位、5位偏置指数e以及1位符号。 在x86体系结构系列中,这些字段连续存储在十个相连地址的8位字节中。由于UNX System V Application Binary Interface Intel 386 Process or Supplement(Intel ABD)要求 双精度扩展参数,从而占用堆栈中三个相连地址的32位字,其中地址最高字的16位最 高有效位未用,如图2-4所示. 地址最低的32位字包含小数的32位最低有效位E31:0,其中第0位是整个小数的最低 有效位,而第31位则是32位最低有效位的最高有效位。地址居中的32位字中,0:30位 包含小数的31位最高有效位[62:32](其中第0位是这31位最高有效位的最低有效位, 而第30位是整个小数的最高有效位):地址居中32位字的第31位包含显式前导有效数 位j。 地址最高的32位字中,0:14位包含15位偏置指数e,其中第0位是该偏置指数的最低 有效位,而第14 最高有效位:第15位包 符号位 ,虽然地址最高的32 位子的 高16位未被x86体系结构系列使用,但如上所述,它们对于符合intel ABI规定是至关 重要的。 图2-4将这三个连续的32位字按一个96位字那样进行了编号,其中0:62位存储63位 、粉 第63位存储显式前导有效数位1:64:78位存储15位偏置指数e:第79位 存储符号位 IEEE算法2-9
IEEE 算法 2-9 在表 2-7 中显示的 NaN 十六进制值只是可用于表示 NaN 的众多位模式之一。 2.2.5 双精度扩展格式 (x86) 该浮点环境双精度扩展格式符合双精度扩展格式的 IEEE 定义。它包含四个字段:63 位 小数 f、 1 位显式前导有效数位 j、 15 位偏置指数 e 以及 1 位 符号 s。 在 x86 体系结构系列中,这些字段连续存储在十个相连地址的 8 位字节中。由于 UNIX System V Application Binary Interface Intel 386 Processor Supplement (Intel ABI) 要求 双精度扩展参数,从而占用堆栈中三个相连地址的 32 位字,其中地址最高字的 16 位最 高有效位未用,如图 2-4 所示。 地址最低的 32 位字包含小数的 32 位最低有效位 f[31:0],其中第 0 位是整个小数的最低 有效位,而第 31 位则是 32 位最低有效位的最高有效位。地址居中的 32 位字中,0:30 位 包含小数的 31 位最高有效位 f[62:32](其中第 0 位是这 31 位最高有效位的最低有效位, 而第 30 位是整个小数的最高有效位);地址居中 32 位字的第 31 位包含显式前导有效数 位 j。 地址最高的 32 位字中, 0:14 位包含 15 位偏置指数 e,其中第 0 位是该偏置指数的最低 有效位,而第 14 位是最高有效位;第 15 位包含符号位 s。虽然地址最高的 32 位字的最 高 16 位未被 x86 体系结构系列使用,但如上所述,它们对于符合 Intel ABI 规定是至关 重要的。 图 2-4 将这三个连续的 32 位字按一个 96 位字那样进行了编号,其中 0:62 位存储 63 位 小数 f ;第 63 位存储显式前导有效数位 j ; 64:78 位存储 15 位偏置指数 e ;第 79 位 存储符号位 s。 + 7fff0000 00000000 00000000 00000000 + – ffff0000 00000000 00000000 00000000 – 非数 7fff8000 00000000 00000000 00000000 NaN 表 2-7 双精度扩展格式位模式 (SPARC)( 续 ) 通用名称 位模式 (SPARC) 十进制值 ∞ ∞ ∞ ∞
s e[78:641 96 807978 f[62:32] 6362 32 E[31:0] 31 0 图2-4 双精度扩展格式(x86) £、j、e和s四个字段中的位模式值将决定整个位模式所表示的值。 表28显示了四个组成字段的计数值与该位模式表示的值之间的对应关系。“意味着无 关,即指示字段的值与确定特定位模式的值无关。 表2:8 位模式表示的值(x86) 双精度扩晨位镇式(仅86) 值 j=0、0<e<32767 不支持 j=1、0<e<32767 (1yx216383x1.f(正规数) j=0、e=0:f≠0 (1yx2-16382x0.E(次正规数) (:中至少有一位不为零) j=1、e=0 (1P×2-16382x1.f(伪非正规数) 1=0、e=0、f=0 (1驴×0.0(有符号的零) (f中的所有位均为零) 中的所有均为7670 +NF(正无穷大) 中的所有均为7 =32767:f=0 -INF(负无穷大) j=1:s=4:e=32767:£=,1 u uu QnaN(静态NaN) j=1:s=:e=32767:£=.0/ulu≠0SnaN(信号NaN) (任中至少有一个不为零) 请注意,双精度扩展格式的位模式没有显式前导有效数位。在双精度扩展格式中,前导有 效数位在单独的字段j中明确给出。但当e≠0时,将不支持任何j=0的位模式,这是 因为将这种位模式用作浮点运算中的操作数将导致无效的运算异常。 2-10《数值计算指南》·2005年1月
2-10 《数值计算指南》 • 2005 年 1 月 图 2-4 双精度扩展格式 (x86) f、 j、 e 和 s 四个字段中的位模式值将决定整个位模式所表示的值。 表 2-8 显示了四个组成字段的计数值与该位模式表示的值之间的对应关系。 u 意味着无 关,即指示字段的值与确定特定位模式的值无关。 请注意,双精度扩展格式的位模式没有显式前导有效数位。在双精度扩展格式中,前导有 效数位在单独的字段 j 中明确给出。但当 e ≠ 0 时,将不支持任何 j = 0 的位模式,这是 因为将这种位模式用作浮点运算中的操作数将导致无效的运算异常。 表 2-8 位模式表示的值 (x86) 双精度扩展位模式 (x86) 值 j = 0、 0 < e <32767 不支持 j = 1、 0 < e <32767 (1)s x 2e-16383 x 1.f (正规数) j = 0、 e = 0 ; f ≠ 0 (f 中至少有一位不为零) (1)s x 2-16382 x 0.f (次正规数) j = 1、 e = 0 (1)s x 2-16382 x 1.f (伪非正规数) j = 0、 e = 0、 f = 0 (f 中的所有位均为零) (1)s x 0.0 (有符号的零) j = 1 ; s = 0 ; e = 32767 ; f = 0 (f 中的所有位均为零) +INF (正无穷大) j = 1 ; s = 1 ; e = 32767 ; f = 0 (f 中的所有位均为零) -INF (负无穷大) j = 1 ; s = u ; e = 32767 ; f = .1uuu uu QnaN (静态 NaN) j = 1;s = u;e = 32767;f = .0uuu uu ≠ 0 (f 中至少有一个 u 不为零) SnaN (信号 NaN) 31 0 63 62 32 96 80 79 78 64 f[31:0] f[62:32] s j e[78:64]
将双精度扩展格式中的分立字段j和f连接起来称为有效数字。当e<32767和j=1 的最高效2入有是道过以下方法形在有效数位了和小 在x86双精度扩展格式中,前导有效数位j是0并且偏置指数字段e也是0的位模式表 示次正规数,而前导有效数位1是1并且偏置指数字段ē是非零数的位模式表示正规 数。由于前导有效数位是明确表示出来的,而不是从指数的值推导出来的,所以该格式还 接受偏置指数是0(与次正规数相似),而前导有效数位是1的位模式。每一个这样的 本芳厥非都炮对产的偏学指数字段是 的 立模式表示相同的值,即正想数,因此位榜 。(在EEE 标准 次正规数称为非正规化数字。)伪非正规数 X86 编码的人为概念,当显示为操作数时,您可以将其隐式转 表29中给出了重要的双精度打扩展存储格式位模式的示例。第二列中的位模式显示为一 个4位十六进制计数,它是地址最高的32位字的16位最低有效位的值(还记得上述该 地址最高的32位字的16位最高有效位是未用的,所以未显示其值) 后面是两个8位 六进制计数,其中左侧是地址居中的32位字的值 右侧是地址最低的32位字的值 最大 规数 双精度打扩 展格 最大有 小正次 精 为 最大和最小正规数和次正 规数的十进制值是近似的:对于所示的数字来说,它们是正确的。) 表2-9 双精度扩展格式位模式及其值(x86) 通用名称 位模式(x86) 十进制值 +0 00000000000000000000 0.0 -0 80000000000000000000 -0.0 2 3fff8000000000000000 1.0 2 40008000000000000000 2.0 最大正规数 7ffe ffffffEf EEEEEEEE 1.18973149535723176505e+4932 正最小正规数 00018000000000000000 3.36210314311209350626e-4932 最大次正规数 0000 7EEEEEEE EEEEEEEE 3.36210314311209350608e-4932 最小正次正规数 00000000000000000001 3.64519953188247460253e-4951 +0∞ 7fff8000000000000000 ffff8000000000000000 带有最大小数的静态NaN QNaN 带有最小小数的静态NaN 7fffc000000000000000 QNaN 带有最大小数的信号NaN 7fEf bfffffff SNaN 带有最小小数的信号NaN 7fff8000000000000001 SNaN IEEE算法2-11
IEEE 算法 2-11 将双精度扩展格式中的分立字段 j 和 f 连接起来称为有效数字。当 e < 32767 和 j = 1 时,或当 e = 0 和 j = 0 时,有效数字是通过以下方法形成的:在前导有效数位 j 和小数 的最高有效位之间插入二进制基数点。 在 x86 双精度扩展格式中,前导有效数位 j 是 0 并且偏置指数字段 e 也是 0 的位模式表 示次正规数,而前导有效数位 j 是 1 并且偏置指数字段 e 是非零数的位模式表示正规 数。由于前导有效数位是明确表示出来的,而不是从指数的值推导出来的,所以该格式还 接受偏置指数是 0(与次正规数相似),而前导有效数位是 1 的位模式。每一个这样的位 模式实际上都与对应的偏置指数字段是 1 的位模式表示相同的值,即正规数,因此位模 式称为伪非正规数。(在 IEEE 标准 754 中,次正规数称为非正规化数字。)伪非正规数 仅是一个 x86 双精度扩展格式编码的人为概念,当显示为操作数时,您可以将其隐式转 换为相应的正规数,不能将其生成为结果。 表 2-9 中给出了重要的双精度扩展存储格式位模式的示例。第二列中的位模式显示为一 个 4 位十六进制计数,它是地址最高的 32 位字的 16 位最低有效位的值 (还记得上述该 地址最高的 32 位字的 16 位最高有效位是未用的,所以未显示其值),后面是两个 8 位 十六进制计数,其中左侧是地址居中的 32 位字的值,右侧是地址最低的 32 位字的值。 最大正正规数是以 x86 双精度扩展格式表示的最大有限数。最小正次正规数是以双精度 扩展格式表示的最小正数。最小正正规数通常称为下溢阈值。(最大和最小正规数和次正 规数的十进制值是近似的;对于所示的数字来说,它们是正确的。) 表 2-9 双精度扩展格式位模式及其值 (x86) 通用名称 位模式 (x86) 十进制值 +0 0000 00000000 00000000 0.0 -0 8000 00000000 00000000 -0.0 1 3fff 80000000 00000000 1.0 2 4000 80000000 00000000 2.0 最大正规数 7ffe ffffffff ffffffff 1.18973149535723176505e+4932 正最小正规数 0001 80000000 00000000 3.36210314311209350626e-4932 最大次正规数 0000 7fffffff ffffffff 3.36210314311209350608e-4932 最小正次正规数 0000 00000000 00000001 3.64519953188247460253e-4951 + 7fff 80000000 00000000 + – ffff 80000000 00000000 – 带有最大小数的静态 NaN 7fff ffffffff ffffffff QNaN 带有最小小数的静态 NaN 7fff c0000000 00000000 QNaN 带有最大小数的信号 NaN 7fff bfffffff ffffffff SNaN 带有最小小数的信号 NaN 7fff 80000000 00000001 SNaN ∞ ∞ ∞ ∞