首先先给大家介绍一下原码除法运算的理论知识
原码除法运算的规则是:
i. QS = XS ⊕YS ,RS = XS,|Q| = |X|÷|Y|-|R|÷|Y|(符号位和数值位分开计算)。
ii. 余数和被除数、除数均采用双符号位;初始余数为|X|。
iii.每次用余数减去|Y|(通过加上[-|Y|]补来实现),若结果的符号位为 0,则够减,上商 1,余数左移一位;若结果的符号位为 1,则不够减,上商 0,先加|Y|恢复余数,然后余数左移一位。
iv. 循环操作步骤 3,共做 n+1 次,最后一次不左移,但若最后一次 上商 0,则必须+|Y|恢复余数;若为定点小数除法,余数则为最后计算得到的余数右移 n 位的值。
注意:部分余数左移时,采用补码移位规则,最低位补0,最高符号位不变,最高有效位移入低符号位,可能临时发生溢出,但接着进行的减法将会使余数恢复正常。
简单来说就是:X/Y就是将X的数值为赋给余数R,一开始商Q为0,余数先+[-|y|]的补码,就相当于减去y,如果不够减 就让商上0,再加上|y|恢复余数,之后将余数R与商Q同步左移一位,若是够减,就让商上