根据大多数计算机的实际情况,我们假定:浮点数的尾数用原码、小数表示,阶码用移码、整数表示,尾数基值=2,阶码基值=2,并根据实际应用要求给出表数范围不小于N(N为能表示的最大的正数),表数精度不低于d,并且要求尾数和阶码都正、负对称。 由表数范围的要求,得到: 解这个不等式: 得到阶码字长: (2.11) 根据表数精度的要求,得到: 解这个不等式: 得到围数字长: (2.12) 由(2.11)和(2.12)两个不等式计算出浮点数的尾数字长p和阶码字长q,再加上一个尾数符号位和一个阶码符号位就构成了一种浮点数格式。应当注意的是在满足这两个不等式的前提下,通常要适当调整尾数字长p和阶码字长q的取值,使浮点数的总字长达到一个合理的数值。 下面我们举一个具体的例子。 要求设计一种浮点数格式,其表数范围不小于至,正、负数对称,表数精度不低于。 根据表数范围的要求,用(2.11)不等式计算: 取阶码字长q=7。 根据表数精度的要求,用(2.12)不等式计算: 如果取尾数字长p=54,则浮点数的总字长为:p+q+2=54+7+2=63,离8的整倍数64还差一位,这一位可以加到尾数字长p中用于提高浮点数的表数精度,也可以加到阶码字长q中用于提高浮点数的表数范围。在这里,暂且把它加到尾数字长p中以提高浮点数的表数精度。这样设计出来的浮点数的格式如图2.4所示,尾数55位。阶码7位,阶码符号和尾数符号各一位。
在浮点数的尾数用原码、小数表示,阶码用移码、整数表示,尾数基值=2,阶码基值=2,阶码字长q=7,尾数字长p=55,尾数符号和阶码符号各一位,总字长为64位。图2.4给出的这种浮点数表示方式的各项主要性能如下: 能表示的最大尾数值: ,即尾数数值部分的所有55个二进制位全部为都1; 绝对值最小的尾数值: ,尾数数值部分除最高一个二进制位为1之外,其余54个二进制位全部为0; 能表示的最大阶码: ,包括阶码符号位在内的所有8个二进制位全部为1; 能表示的最小阶码: ,包括阶码符号位在内的所有8个二进制位全部为0; 最大正数:; 最小正数: ; 最大负数: ; 最小负数: ; 表数精度: ; 浮点零:由于阶码采用移码表示,且正、负数对称,因此,浮点零与机器零相同,即64个二进制位全为0; 表数效率: ,如果采用隐藏位表数方法,则表数效率能达成最高 ; 能表示的浮点数个数: