定点除法运算

深碍√TFBOYSˉ_ 2024-03-23 12:53 228阅读 0赞

目录

一、原码除法运算

1.原码比较法和恢复余数法

⑴比较法

⑵恢复余数法

2.原码不恢复余数法(原码加减交替法)

二、补码除法运算

1、够减的判断

2、上商规则

3、商符的确定

4、求新部分余数

5、末位恒置1

乘法的逆运算,思想相似,n位除转化成若干次“减法-移位”

3f0a41724a064630b912a5b6373fd2b3.jpeg

一、原码除法运算

1.原码比较法和恢复余数法

⑴比较法

类似于手工运算,将除数右移改为部分余数左移,每一位的上商直接写到寄存器的最低位。

设A寄存器中存放被除数(或部分余数),B寄存器中存放除数,C 寄存器用来存放商Q。

若A≥B,则上商1,并减除数;若A<B,则上商0。比较法需要设置比较线路,从而增加了硬件的代价。

  • 比较过程的流程图:

94efddde6258437aa2e9487979490814.png

⑵恢复余数法

直接作减法试探方法,不管被除数(或部分余数)减除数是否够减,都先做减法

部分余数为正,够减,该位商上“1”

部分余数为负,不够减,该位商上“0”,并要恢复余数

  • 恢复余数过程的流程图:

5fdf7755c8e843799dc41ff2aa3e8250.png

部分余数的正、负是根据不同的操作数组合随机出现的,恢复余数法会使除法运算操作次数不固定,导致控制电路复杂。在恢复余数时,要多作一次加法,降低了除法的执行速度。因此很少采用。

#

2.原码不恢复余数法(原码加减交替法)

是对恢复余数法的改进,减少了加法时间,运算的次数固定,广泛采用。

  • 在恢复余数法中,若第i-1次求商的部分余数为ri-1,则第i次求商操作为:r\_\{i\}=2r\_\{i\}-1-Y,
  • 若够减,部分余数ri=2ri-1-Y>0,商1

若不够减,部分余数ri=2ri-1-Y<0,商0

  • 恢复余数后,ri’=ri+Y=2ri-1,然后再左移一位,进行第i+1次操作:

0fa5ae60e9654650a7a3357d32f0dde6.png

由通式表示: r\_\{i\}+1=2r\_\{i\}+(1-2Q\_\{i\})Y

Qi为第i次所得的商

若部分余数为正,则Qi=1,部分余数左移一位,下一次继续减除数;

若部分余数为负,则Qi=0,部分余数左移一位,下一次加除数。

加减运算交替进行,故称为原码加减交替法。

a1048499260c46738594368e98e5790e.png

注意:减去一个数等于加上这个数的变补

9ad575ece591420b86dc8f7e48a70415.png

需要3个寄存器。

A和B存放被除数和除数,C寄存器用来存放商,它的初值为0。

运算过程中A寄存器的内容为部分余数,不断地变化,最后剩下的是扩大了若干倍的余数,只有将它乘上2-n才是真正的余数。

  • 原码加减交替除法流程图:d167b40bb1654a5cb05dbb6ab07bfcff.png
  • 三个寄存器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。

因此第一次减除数不够减,如果采用先移位后减除数的方法,得到的结果也是相同的。

在原码加减交替法中,当最终余数为负数时,必须恢复一次余数,使之变为正余数,注意此时不需要再左移了。

6b23f8dfa6414d01b9570c56ce7e877d.png

  • A、B寄存器n+2位,C寄存器n+1位,n+2位的加法器、n+2个与或门、一个计数器和一个异或门。
  • A和C级联,都有左移一位功能,C寄存器最高位值移入A寄存器最低位。A寄存器初值是被除数,在运算中变为部分余数。C寄存器最低位保存每次运算得到的商值,商值同时也作为下一次操作是做加法还是做减法的控制信号。

二、补码除法运算

先来看一个有关例题

a385d6ab83534924aae428f99c3135c4.png

2cd17ce27ea34b8a895c17d2a2fb9dfc.png

  • 补码加减交替除法流程图:

3ee82be025b145e39477c54065035b8e.png

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]

发表评论

表情:
评论列表 (有 0 条评论,228人围观)

还没有评论,来说两句吧...

相关阅读

    相关 定点除法运算

    目录 一、原码除法运算 1.原码比较法和恢复余数法 ⑴比较法 ⑵恢复余数法 2.原码不恢复余数法(原码加减交替法) 二、补码除法运算 1、够减的判断

    相关 定点加法,减法运算

    对于数在计算机里的加减法,由于有了补码这个编码之后,其在计算机里的加减法就变得容易许多,毕竟减法用补码处理的时候可以转化为加法解决,这也是为什么不直接用原码处理加减法的一个原因

    相关 FPGA定点小数运算

    谓定点小数,就是小数点的位置是固定的。我们是要用整数来表示定点小数,由于小数点的位置是固定的,所以就没有必要储存它(如果储存了小数点的位置,那就是浮点数了)。既然没有储存小数点