📜  无符号整数的非恢复部分

📅  最后修改于: 2021-06-28 09:12:19             🧑  作者: Mango

在较早的职位上,恢复司了解了恢复部门的知识。现在,在这里执行“非还原”分割,它比还原分割要简单,因为涉及到更简单的操作,即加法和减法,现在还执行还原步骤。在该方法中,依赖于寄存器的符号位,该符号位最初包含零,称为A。

这是下面给出的流程图。

让我们选择涉及的步骤:

  • 步骤1:首先用相应的值初始化寄存器(Q =股息,M =除数,A = 0,n =股息位数)
  • 步骤2:检查寄存器A的符号位
  • 步骤3:如果是AQ的左移内容并执行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包含余数

    示例:对无符号整数执行非还原除法

    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)