当前位置:第二章 运算方法与运算器

第三节 定点数乘除法运算与实现

※定点原码一位除法的实现方案

定点原码一位除法的实现方案有恢复余数和加减交替法。在两定点一位原码数相除时,仍分两个步骤进行,先作数值位的除法,后算商的符号(为相除二数的符号的半加和),最后把两者结合得正确答案。

恢复余数:在除法中,数据大小的比较是通过减法实现的,当发现被除数(或部分余数)不够减时减法的结果已形成,这时再用加法恢复原来的部分余数,这样形成恢复余数的方法。这种除法的过程是先作减法,若余数为正,表示够减;若余数为负,表示不够减,此时用加法恢复原来余数,以便继续进行运算。

 

例2-20:设 X=0.1011,Y=0.1101,求[X/Y]

解:X=0.1011,Y=0.1101,则[X]=001011,[Y]=001101,[-Y]=110011(被除数使用双符号位)

除法计算结束,二数符号异或为0,商是+0.1101,余数为0.0111×2-4,余数0111是移4次得到的结果,所以真正的结果为这个值乘上2-4。若最后一次的余数为负,正确余数应为+Y恢复后的正余数乘上2-4

 

加减交替法当余数为正时,商上1,求下一位商的办法,是余数左移一位,用减去除数的方案得到;当余数为负时,商上0,求下一位商的办法,是余数左移一位,再加上除数的方案得到。

 

例2-21:设 X=0.1011,Y=0.1101,求[X/Y]

解:X=0.1011,Y=0.1101,[X]=00 1011,[Y]=00 1101,[-Y]=11 0011。

运算结果,商的数值位为1101,符号位为相除二数符号的异或值0,结果为+0.1101。

需说明的是:在两种除法方案中使用了补码运算但运算结果仍然是原码值。

 

定点补码一位除法的实现方案

定点补码一位除法(加减交替法)是符号位、数值位同时参加运算一步完成。补码除法的规则比原码除法的规则复杂,其运算规则如下:

(1)如果被除数与除数同号,用被除数减去除数;若两数异号,用被除数加上除数。如果所得余数与除数同号上商1 ,若余数与除数异号,上商0,该商即为结果的符号位。

(2)求商的数值部分。如果上次上商1 ,将余数左移一位后减去除数;如果上次上商O , 将余数左移一位后加上除数。然后判断本次操作后的余数,如果余数与除数同号上商1;若余数与除数异号上商0。如此重复执行n-1 次(设数值部分有n 位)。

(3)商的最后一位一般采用恒置1 的办法,并省略了最低位+1 的操作,此时最大误差为士2-n。

 

例2-22:设[X]=1.0111, [Y]=0.1101 ,求[X/Y]

解:[-Y]=11.0011