首页 > 解决方案 > 非恢复除法算法 - 被除数小于除数

问题描述

我正在尝试使用非恢复除法算法将 10111110 除以 11000101。

请注意,除数小于除数。

按照我看过的教程中使用的流程图,我最终得到了一个(看似)荒谬的结果。我可能只是不知道如何正确解释我的结果。

希望帮助理解如何在这种情况下使用非恢复除法算法。

这是我使用流程图的尝试:

A = Q = 190 = 10111110
B = M = 197 = 11000101
Desc        A           Q           N
Init        00000000    10111110    8
shl         00000001    01111100    
A<A-M       00111100    01111100    
Q0=1, N-1   00111100    01111101    7
shl         01111000    11111010    
A<A-M       10110011    11111010    
Q0=0, N-1   10110011    11111010    6
shl         01100111    11110101    
A<A-M       10100010    11110101    
Q0=0, N-1   10100010    11110100    5
shl         01000101    11101001    
A<A-M       00110010    11101001    
Q0=1, N-1   00110010    11101001    4
shl         01100101    11010010    
A<A-M       10100000    11010010    
Q0=0, N-1   10100000    11010010    3
shl         01000001    10100101    
A<A-M       01111100    10100101    
Q0=1, N-1   01111100    10100101    2
shl         11111001    01001010    
A<A+M       10111110    01001010    
Q0=0, N-1   10111110    01001010    1
shl         01111100    10010101    
A<A-M       10110111    10010101    
Q0=0, N-1   10110111    10010100    0
A<A+M       01111100    10010100    
END

标签: mips

解决方案


您似乎忽略了部分余数和分母需要两倍于分子和商字宽的要求(参见非恢复除法),并且仅使用 8 位例如A是看似荒谬的结果的原因。


推荐阅读