IBM公司生产的大多计算机系统中,32位短浮点数的表示方式如图2.3所示。这种尾数的基值rm=16,尾数字长为16进制6位,即二进制24位,阶码基值rm=2,阶码字长6位,尾数用原码、小数表示,阶码用移码、整数表示。

图2.3 IBM的短浮点数表示方式

  对于这种浮点数表示方式,表示数的精度为:
          
  表示数的范围是:
          
  粗略表示为:  
  表示数的效率为:
  Intel公司生产的计算机系统,如Pentium微处理机等,其32位短浮点数的表示方式如图2.4所示。这种尾数的基值rm=2,尾数字长为二进制24位,阶码基值rm=2,阶码字长7位,尾数用原码、小数表示,阶码用移码、整数表示。


  
首先,假设没有隐藏位,比较IBM的短浮点数格式与Intel的短浮点数格式的主要性质。
对于这种浮点数表示方式,表示数的精度为:

          
  表示数的范围是:
          
  粗略表示为:  
  表示数的效率为:

  下面,我们来比较上述两种浮点数表示方法的优点与缺点,在比较过程中可以得出很重要得结论。
  从直观上看,IBM短浮点数的表示数的范围大,表示数的效率高,而IBM短浮点数的表示数的精度高。
  为了便于进一步比较,假设Intel短浮点数的阶码增加2位,总共为9位;为了保持总字长不变,把尾数部分缩短2位,总共为21位。这种浮点数的表示数的精度和表示数的范围如下:
  表示数的精度:
          
  表示数的范围:
          
  从这个例子看出,在浮点数的总字长和表示数的精度要求一定的情况下,尾数基值rm=2比尾数基值rm=16有更大的表示数范围。这个结论也可以这样来解释:取尾数基值rm=16时的表示数的精度与尾数基值rm=2时的表示数的精度相比损失了3个二进制位,而为了使尾数基值rm=2时的表示数范围能够与尾数基值rm=16时相同,阶码的字长只要在原来6位的基础上再增加2位,即
  因此,为了达到与IBM短浮点数表示方式同样的表示数的范围和表示数的精度,如果采用尾数基值rm=2,浮点数的总字长只要31个二进制位即可。
  发生上述情况的根本原因是:当浮点数的尾数基值从rm=2增大时,表示数的精度按尾数字长的指数关系变低,而表示数的范围却按阶码字长的指数的指数关系变大。因此,为了保持同样的表示数的精度和表示数的范围,损失的尾数字长大于节省的阶码字长,从而造成浮点数的总字长增加。
  上面的结论告诉我们,从浮点数的表示数的范围和表示数的精度看,尾数基值rm取2最好,但从(2.5)式中得到,当尾数基值rm=2时,表示数的效率最低,只有50%。为了在尾数基值rm取2时提高浮点数的表示数的效率,目前在许多机器中采用了隐藏位表示方法。具体做法是:因为在尾数基值rm=2时,规格化浮点数尾数的最高位一定是1(如果尾数用补码表示,规格化浮点数尾数最高位一定与尾数符号位相反),所以,浮点数在存储和传送的过程中,尾数最高位可以不表示出来,只在计算时恢复这一个隐藏位,或采用某种方法对运算结果进行修正。
  在采用采用隐藏位表示方法之后,当取尾数基值rm=2时,浮点数的表示数的效率能够达到最大值100%,而且节省了一个二进制。在总字长一定的情况下,浮点数的表示数的精度或表示数的效率将更高。
  
综上所述,浮点数的尾数基值rm取2,并采用隐藏位表示方法是最佳的浮点数表示方式。这种浮点数表示方式能做到表示数的范围最大、表示数的误差最小、表示数的效率最高。
  目前,IBM公司的IBM 360系列机、IBM 370系列机、IBM 4300系列机等,浮点数的尾数基值rm=16。Burroughs公司的B6700、B7700等大型计算机,浮点数的尾数基值rm=8。DEC公司的VAX-11和Alpha等计算机,CDC公司的CDC6600、CYBER70等大型计算机及应用最广泛的Intel公司的x86系列机等的浮点数均采用尾数基值rm=2。
  浮点数的尾数基值不取2的原因可能是设计人员在早期对浮点数的本质研究不深,后来虽然弄明白了尾数基值取2最好,但是为了系列计算机之间具有兼容性,也只能如此了。