1.4 数的定点与浮点表示
在计算机中,小数点不用专门的器件表示,而是按约定的方式标出。共有两种方法来表示小数点的存在,即定点表示和浮点表示。定点表示的数称为定点数,浮点表示的数称为浮点数。
1.定点表示
小数点固定在某一位置的数为定点数,包含两种格式:当小数点位于数符和第一数值位之间时,机器内的数为纯小数;当小数点位于数值位之后时,机器内的数为纯整数。采用定点数的机器称为定点机。数值部分的位数n决定了定点机中数的表示范围。若机器数采用原码,小数定点机中数的表示范围是-(1-2-n)~(1-2-n),整数定点机中数的表示范围是-(2n-1)~(2n-1)。在定点机中,由于小数点的位置固定不变,因此当机器处理的数不是纯小数或纯整数时,必须乘上一个比例因子,否则会产生“溢出”。
2.浮点表示
当一个数既有整数部分,又有小数部分时,如何在机器里表达呢?大家知道,可以将(353.75)10表示为0.35375×103的形式,所以在机器里也可以将二进制数表示为这种浮点数的形式。其一般形式为N=2J×S,其中2J称为N的指数部分,J称为阶码,表示小数点的位置,S为N的尾数部分,表示数的符号和有效数字。阶码的符号位称为阶符Jf,尾数的符号位称为尾符Sf。
如: N=-0.000011012=2-410×(-0.1101)2=2-1002×(-0.1101)2
规格化数是使尾数最高数值位非0,可以提高运算精度。例如:(1011)2=(10000)2×,如果表示成2101×0.01011的形式,则尾数需要更多的符号位才能保持精度不变。如果尾数的数值部分只有4位,则会产生误差。
在规格化数中,用原码表示尾数时,使小数点后的最高数据位为1;用补码表示尾数时,使小数点后的数值最高位与数的符号位相反。
两个浮点数作加减运算时要先对阶。
【例1-9】已知N1=2011×0.1001,N2=2001×0.1100,求N1+N2。
解:先对阶:N2=2001×0.1100=2011×0.0011 (小数点左移2位,阶码加2)
N1+N2=2011×0.1001+2011×0.0011
=2011(0.1001+0.0011)
=2011×0.1100
两个浮点数作乘除法,其规则如下。
若N1=2j1×S1,N2=2j2×S2,则
N1×N2=(2j1×S1)×(2j2×S2)
=2(j1+j2)×(S1×S2)
N1÷N2=2(j1-j2)×(S1÷S2)