浮点数运算(简单的加减运算,后面的下次学楼再补充)
V=(-1)s*(1+M)*2(E-127)(单精度)
V=(-1)s*(1+M)*2(E-1023)(双精度)
假定有两个浮点数 X=Mx * 2Ex , Y=My * 2Ey
(1)加减运算
实现X±Y运算,需要如下五步:
1.1 对阶操作,即比较两个浮点数的阶码值的大小.求△E=Ex-Ey。当其不等于零时,首先应使两个数取相同的阶码值。其实现方法是,将原来阶码小的数的尾数右移|△E|位,其阶码值加上|△E|,即每右移一次尾数要使阶码加1,则该浮点数的值不变(但精度变差了)。尾数右移时,对原码形式的尾数,符号位不参加移位,尾数高位补0;对补码形式的尾数,符号位要参加右移并使自己保持不变。为减少误差,可用另外的线路,保留右移过程中丢掉的一到几位的高位值,供以后舍入操作使用。
1.2 实现尾数的加(减)运算,对两个完成对阶后的浮点数执行求和(差)操作。
1.3 规格化处理,若得到的结果不满足规格化规则,就必须把它变成规格化的数,规格化处理规则如下:
当结果尾数的两个符号位的值不同时,表明尾数运算结果溢出。此时应 使结果尾数右移一位,并使阶码的值加1,这被称为向右规格化,简称右规。
当尾数的运算结果不溢出,但最高数值位与符号位同值,表明不满足规格化规则,此时应重复地使尾数左移、阶减减1,直到出现在最高数值位上的值与符号位的值不同为止,这是向左规格化的操作,简称左规。
1.4 **舍入操作。**在执行对阶