铁画轩款识:查看文本资源

来源:百度文库 编辑:中财网 时间:2024/05/06 03:47:07
定点数的除法运算

 1. 原码一位除法

 原码除法是将符号位与数值部分分开进行运算,商的数值部分是两相除数的数值部分相除之后的结果,而商的符号位则是两相除数的符号位的异或。

设[x]=x0 x1 x2 … xn,[ y ]=y0 y1 y2 … yn,则

    [x/y]=(x0⊕y0)|(x1 x2 … xn)/(y1 y2 …yn)        (2-24)

 手工进行二进制除法的方法是:判断余数(第一次为被除数)与除数的大小,若余数小,则商0,并在余数末尾补0,再用余数和右移一位的除数比较,若余数大,则商1,并做减法,得新余数。重复上述步骤,直到除尽或已得到的商的位数满足精度要求为止。

 在计算机中实现原码一位除需要对手工过程做如下的改进。(1)硬件实现时需要使用三个寄存器分别存放被除数(余数)、除数和商。(2)为使加法器的位数不增加,可以将手工中的右移除数改为左移余数,左移出去的余数的高位都是无用的0,对运算不会产生任何影响。(3)手工中的商0或1是通过计算者用观察比较的办法确定的,而在计算机中,只能用做减法后判断结果的符号位来确定。当差为负时,则商0,同时还应把除数加回到差上去,恢复余数为原来的正值之后再将其左移一位。若差为正,则商1,并将余数左移一位。这种方法称为原码一位除的恢复余数法

 恢复余数法的缺点是,每次当将余数减去除数得到的差为负数时,又要将除数加回到差上去,多增加了运算步骤。

 对恢复余数法改进的一种方法是加减交替法,其运算规则如下:每次将余数(第一次为被除数)减去除数,若余数为正,则商1,并将余数左移一位,减除数,得新余数;若余数为负,则商0,并将余数左移一位,加除数,得新余数。

 如下例2.24是原码一位除的加减交替法的运算过程。

【例2.24】x=0.1011,y=0.1101,计算x/y。

 解:商初值为0,被除数(余数)使用双符号位。[ y ]=00.1101,[-y ]=11.0011

实现原码一位除的逻辑电路原理框图如图2-9所示。

 2. 补码一位除法

 进行补码一位除时,被除数和除数的符号位一起参加运算。

 相对原码除来讲,补码除的运算规则更复杂。当除数和被除数用补码表示时,判别是否够减,要比较它们的绝对值的大小。因此,若两数同符号,要用减法,若异号,则要用加法。对于判断是否够减,及确定本次商1或商0的规则,还与结果的符号有关。当商为正时,商的每一位上的值与原码表示一致;而当商为负时,商的各位应是补码形式的值,一般先按各位的反码值上商,除完后,再用在最低位上加1的办法求出正确的补码值。

 在被除数的绝对值小于除数的绝对值(即商未溢出)的情况下,补码一位除法的运算规则若下:(1)如果被除数与除数同号,用被除数减去除数;若两数异号,用被除数加上除数。如果所得余数与除数同号,则商1,否则商0,此即商的符号位。(2)求商的数值部分。如果上次商1,将余数左移一位后减去除数;如果上次商0,将余数左移一位后加上余数。然后判断本次操作后的余数,如果余数与除数同号,则商1,否则商0。(3)如此重复执行n-1次(设数值部分有n位)。