📜  无符号整数的非恢复除法

📅  最后修改于: 2021-09-27 14:34:22             🧑  作者: Mango

在之前的帖子中,Restoring Division 了解了恢复分裂。现在,这里执行非恢复除法,它比恢复简单,因为涉及更简单的操作,即加法和减法,现在也执行恢复步骤。在该方法中,依赖于最初包含零的寄存器的符号位,命名为 A。

这是下面给出的流程图。

让我们选择涉及的步骤:

  • 步骤 1:首先用相应的值初始化寄存器(Q = 股息,M = 除数,A = 0,n = 被除数的位数)
  • 步骤 2:检查寄存器 A 的符号位
  • Step-3:如果是AQ的内容左移1,执行A=A+M,否则AQ左移执行A=AM(意思是将M的2的补码加到A上,存入A)
  • 步骤 4:再次是寄存器 A 的符号位
  • 步骤 5:如果符号位为 1 Q[0] 变为 0 否则 Q[0] 变为 1(Q[0] 表示寄存器 Q 的最低有效位)
  • 步骤 6:将 N 的值减 1
  • 第 7 步:如果 N 不等于零,则转到第 2 步,否则转到下一步
  • 步骤 8:如果 A 的符号位为 1,则执行 A = A+M
  • 步骤 9:寄存器 Q 包含商,A 包含余数

    示例:对无符号整数执行 Non_Restoring 除法

    Dividend =11
    Divisor  =3  
    -M =11101
    
    N M A Q Action
    4 00011 00000 1011 Start
    00001 011_ Left shift AQ
    11110 011_ A=A-M
    3 11110 0110 Q[0]=0
    11100 110_ Left shift AQ
    11111 110_ A=A+M
    2 11111 1100 Q[0]=0
    11111 100_ Left Shift AQ
    00010 100_ A=A+M
    1 00010 1001 Q[0]=1
    00101 001_ Left Shift AQ
    00010 001_ A=A-M
    0 00010 0011 Q[0]=1
    Quotient  = 3 (Q)
    Remainder = 2 (A)