目录
一、原码除法运算
1.原码比较法和恢复余数法
⑴比较法
⑵恢复余数法
2.原码不恢复余数法(原码加减交替法)
二、补码除法运算
1、够减的判断
2、上商规则
3、商符的确定
4、求新部分余数
5、末位恒置1
乘法的逆运算,思想相似,n位除转化成若干次“减法-移位”
一、原码除法运算
1.原码比较法和恢复余数法
⑴比较法
类似于手工运算,将除数右移改为部分余数左移,每一位的上商直接写到寄存器的最低位。
设A寄存器中存放被除数(或部分余数),B寄存器中存放除数,C 寄存器用来存放商Q。
若A≥B,则上商1,并减除数;若A<B,则上商0。比较法需要设置比较线路,从而增加了硬件的代价。
- 比较过程的流程图:
⑵恢复余数法
直接作减法试探方法,不管被除数(或部分余数)减除数是否够减,都先做减法。
若部分余数为正,够减,该位商上“1”;
若部分余数为负,不够减,该位商上“0”,并要恢复余数。
- 恢复余数过程的流程图:
部分余数的正、负是根据不同的操作数组合随机出现的,恢复余数法会使除法运算操作次数不固定,导致控制电路复杂。在恢复余数时,要多作一次加法,降低了除法的执行速度。因此很少采用。
2.原码不恢复余数法(原码加减交替法)
是对恢复余数法的改进,减少了加法时间,运算的次数固定,广泛采用。
- 在恢复余数法中,若第i-1次求商的部分余数为ri-1,则第i次求商操作为:,
- 若够减,部分余数ri=2ri-1-Y>0,商1
若不够减,部分余数ri=2ri-1-Y<0,商0
- 恢复余数后,ri’=ri+Y=2ri-1,然后再左移一位,进行第i+1次操作:
由通式表示:
Qi为第i次所得的商
若部分余数为正,则Qi=1,部分余数左移一位,下一次继续减除数;
若部分余数为负,则Qi=0,部分余数左移一位,下一次加除数。
加减运算交替进行,故称为原码加减交替法。
注意:减去一个数等于加上这个数的变补
需要3个寄存器。
A和B存放被除数和除数,C寄存器用来存放商,它的初值为0。
运算过程中A寄存器的内容为部分余数,不断地变化,最后剩下的是扩大了若干倍的余数,只有将它乘上2-n才是真正的余数。
- 原码加减交替除法流程图:
- 三个寄存器A、B、C,分别存放被除数、除数和商,其中A,B是n+2位,C是n+1位
- 一个n+2位的加法器
- n+2个与或门
- 一个计数器
- 一个异或门
- A寄存器和C寄存器级联,具有左移一位的功能。C寄存器最高位的值将移入A寄存器的最低位。A寄存器中的初值是被除数,运算过程中变为部分余数。C寄存器最低位保存每次运算得到商值,商值同时也作为下一次操作是做加法还是做减法的控制信号。
定点除法,为防止溢出,要求被除数的绝对值小于除数的绝对值,|X|<|Y|(|X|=|Y|除外),且除数不能为0。
因此第一次减除数不够减,如果采用先移位后减除数的方法,得到的结果也是相同的。
在原码加减交替法中,当最终余数为负数时,必须恢复一次余数,使之变为正余数,注意此时不需要再左移了。
- A、B寄存器n+2位,C寄存器n+1位,n+2位的加法器、n+2个与或门、一个计数器和一个异或门。
- A和C级联,都有左移一位功能,C寄存器最高位值移入A寄存器最低位。A寄存器初值是被除数,在运算中变为部分余数。C寄存器最低位保存每次运算得到的商值,商值同时也作为下一次操作是做加法还是做减法的控制信号。
二、补码除法运算
先来看一个有关例题
- 补码加减交替除法流程图:
1、够减的判断
被除数(或部分余数)的绝对值大于或等于除数的绝对值,够减;反之不够减。当两数同号时,实际应作减法;两数异号时,实际应作加法。
方法:被除数(或部分余数)与除数同号时,如果得到的新部分余数与除数同号,够减,否则不够减;当被除数(或部分余数)与除数异号时,如果得到的新部分余数与除数异号,够减,否则为不够减。
2、上商规则
补码除法的商也用补码表示,上商规则:[X]补和[Y]补同号,则商为正数,够减时上商“1”,不够减时上商“0”;[X]补和[Y]补异号,则商为负数,够减时上商“0”,不够减时上商“1”。
归结为: 部分余数[ri]补和除数[Y]补同号,商上“1”,反之,商上“0”。
3、商符的确定
在求商的过程中自动形成,按补码上商规则,第一次得出的商,就是实际应得的商符。
为防止溢出,有|X|<|Y|,第一次肯定不够减。
被除数与除数同号,部分余数与除数必然异号,商上“0”,恰好与商符一致;
被除数与除数异号,部分余数与除数必然同号,商上“1”,也恰好就是商的符号。
4、求新部分余数
[ri+1]补的通式如下: [ri+1]补=2[ri]补+(1-2Qi)×[Y]补
Qi表示第i步的商。商上“1”,部分余数左移,减去除数;商上“0”,部分余数左移,加上除数。
5、末位恒置1
商的最末一位恒置为“1”,运算的最大误差为2-n。此法操作简单,易于实现。
- 补码加减交替除法规则
[X]补与[Y]补 | 第一次操作 | [ri]补与[Y]补 | 上商 | 求新余数[ri+1]补的操作 |
同号 | [X]补-[Y]补 | ①同号 (够减) | 1 | [ri+1]补=2[ri]补-[Y]补 |
②异号 (不够减) | 0 | [ri+1]补=2[ri]补+[Y]补 | ||
异号 | [X]补+[Y]补 | ①同号 (不够减) | 1 | [ri+1]补=2[ri]补-[Y]补 |
②异号 (够减) | 0 | [ri+1]补=2[ri]补+[Y]补 |