2.1.3 浮点数尾数基值的选择
从上一节的分析中看到,浮点数的表数范围、表数精度和表数效率三个主要性质都与尾数的基值有关。因此,本节专门介绍在设计一种浮点数表示方式时,尾数基值应当如何选择。 实际上,在表示浮点数的6个参数中,只有尾数基值、尾数长度p和阶码长度q这三个参数与浮点数的表数范围、表数精度和表数效率三个主要性质有关。另外,在通用计算机中,浮点数的总字长通常是确定的,目前多为32或64个二进制位,而在总字长中,除了尾数符号和阶码符号各个占去一个二进制位之外,其余就是尾数长度p与阶码长度q之和。所以,设计一种浮点数表示方式的关键是要解决两个问题,一是在浮点数的总字长(主要是尾数长度p与阶码长度q之和)给定的情况下,如何选择尾数基值,使浮点数的表数范围最大、表数精度和表数效率最高;二是在尾数基值确定之后,如何根据表数范围和表数精度的要求具有确定尾数长度p与阶码长度q;本节主要介绍前一个问题,下一节介绍后一个问题。 从(2.5)中看到,浮点数的表数范围主要与阶码长度q和尾数基值有关,从(2.6)中看到,表数精度主要与尾数长度p和尾数基值有关。我们假设有两种浮点数表示方式F1和F2,它们二进制字长相同,尾数都用原码或补码、小数表示,阶码都用移码、整数表示,阶码的基均为2,而尾数的基不同。 浮点数表示方式F1:尾数基值=2,尾数长度p1,阶码长度q1,二进制字长:L1=p1+q1+2。 浮点数表示方式F2:尾数基值=2k(k为正整数),尾数长度p2,阶码长度q2,二进制字长:L2=k p2+q2+2。 由F1与F2的二进制字长相同,即L1=L2,得: p1+q1=k p2+q2 (2.10) 下面,首先介绍浮点数字长和表数范围一定时,尾数基值与表是精度的关系。 由上一节的(2.5)知道:F1的表数范围是: , 同样,F2的表数范围是: ,即: 因为F1与F2的表数范围相同,所以F1与F2的阶码应当相等: 两边分别取以2为底的对数,得到: (2.11) 把(2.11)式代入(2.10)式,得到: (2.12) 由上一节的(2.6)知道:F1的表数精度是: (2.13) 把(2.12)代入(2.13)得到: F1的表数精度是: 为了考察F1与F2的表数精度之间的关系,取它们的比值: (2.14) 从(2.14)式中可以看出,只有k=1(表示尾数基值=2)或k=2(表示尾数基值=4)时,比值T=1,当k取其它任何值时,比值T都大与1(T>1表示F2的精度低于F1)。 因此,可以得出结论:在浮点数的字长和表数范围一定时,尾数基值取2或4具有最高的表数精度。