附录A IEEE浮点运算标准 在数值计算中,小数在内存中是以浮点数格式表示和参与运算的.浮点数是数字(或者说数 值)在内存中的一种存储格式,它和定点数是相对的. A1浮点数与定点数 浮点数和定点数中的“点”指的是小数点 所谓定点数,就是指小数点的位置是固定的,不会向前或者向后移动.比如我们用4个字节 (32位字长)来存储无符号的定点数x(通常用4个字节存储单精度数),并且约定:前16位表示整 数部分,后16位表示小数部分,如下图所示: 一整数部分一 ·小数部分 这种表示方法的优点是:整数部分和小数部分一目了然,非常直观 白对于整数,所有位都用来存储整数部分,所以一般采用定点数格式存储 但定点数格式有个很大的缺点,就是所能表示的数的取值范围比较小.比如在前面的例子中 (4个字节),所能表示的最大值和最小值(非零)是 xmx=1111111111111111.11111111111111112≈216=65536, xmin=0000000000000000.00000000000000012=2-16≈1.5×10-5. 这在科学计算中显然是远远不够的.比如电子的质量大约是9×10-28克,用4位定点数格式就无 法表示.即使是采用8个字节(通常用8个字节存储双精度数),假定前32位表示整数,后32位表 示小数,则所能表示的的数的范围为(0除外) xm≈22≈4.3×109,xmin=2-32≈2.3×10-10. 为了克服这个缺点,人们发明了一种更加科学的存储格式,即浮点数格式,也就是通常所说的 科学计数法.该格式以指数形式存储数字,不但节省内存,也非常直观,而且所能表示的数的范围 也大大增加, A.2IEEE中的浮点数的表示方法 自计算机发明以来,曾出现许多中不同的浮点数表示方式,但目前最通用的是EEE二进制浮 点数算术标准(IEEE Standard for Binary Floating-Point Arithmetic,简称IEEE754标准). IEEE754标准的主要起草者是加州大学伯克利分校数学系的William Kahan教授,他帮助Intel 公司设计了8087浮点处理器,并以此为基础形成了EEE754标准,Kahan教授也因此获得了1987 年的图灵奖 299仅供课堂教学使用,请勿外传 附录 A IEEE 浮点运算标准 在数值计算中, 小数在内存中是以浮点数格式表示和参与运算的. 浮点数是数字(或者说数 值)在内存中的一种存储格式, 它和定点数是相对的. A.1 浮点数与定点数 浮点数和定点数中的“点”指的是小数点. 所谓定点数,就是指小数点的位置是固定的, 不会向前或者向后移动. 比如我们用 4 个字节 (32 位字长) 来存储无符号的定点数 x (通常用 4 个字节存储单精度数), 并且约定: 前 16 位表示整 数部分, 后 16 位表示小数部分, 如下图所示: 这种表示方法的优点是: 整数部分和小数部分一目了然, 非常直观. b 对于整数, 所有位都用来存储整数部分, 所以一般采用定点数格式存储. 但定点数格式有个很大的缺点, 就是所能表示的数的取值范围比较小. 比如在前面的例子中 (4 个字节), 所能表示的最大值和最小值 (非零) 是 xmax = 1111111111111111.11111111111111112 ≈ 2 16 = 65536, xmin = 0000000000000000.00000000000000012 = 2−16 ≈ 1.5 × 10−5 . 这在科学计算中显然是远远不够的. 比如电子的质量大约是 9 × 10−28 克, 用 4 位定点数格式就无 法表示. 即使是采用 8 个字节 (通常用 8 个字节存储双精度数), 假定前 32 位表示整数, 后 32 位表 示小数, 则所能表示的的数的范围为 (0 除外) xmax ≈ 2 32 ≈ 4.3 × 109 , xmin = 2−32 ≈ 2.3 × 10−10 . 为了克服这个缺点, 人们发明了一种更加科学的存储格式, 即浮点数格式, 也就是通常所说的 科学计数法. 该格式以指数形式存储数字, 不但节省内存, 也非常直观, 而且所能表示的数的范围 也大大增加. A.2 IEEE 中的浮点数的表示方法 自计算机发明以来, 曾出现许多中不同的浮点数表示方式, 但目前最通用的是 IEEE 二进制浮 点数算术标准 (IEEE Standard for Binary FloatingPoint Arithmetic, 简称 IEEE 754 标准). IEEE 754 标准的主要起草者是加州大学伯克利分校数学系的 William Kahan 教授, 他帮助 Intel 公司设计了 8087 浮点处理器, 并以此为基础形成了 IEEE 754 标准, Kahan 教授也因此获得了 1987 年的图灵奖. 299