1、基于减法的除
N / D = Q + R
设N共M位。
step1:将R各位置零,令n = 0。
step2:将R左移一位,并将N[M-n]移入R的最低位。
step3:R - D。
step4:若R - D为正或零,令Q[M-n] = 1,R = R-D;
若R - D为负,令Q[M-n] = 0,R = R。
step5:n++。
step6:重复step2~step5,直到填满Q。
理解:step2相当于将N右移M-n-1位,即除以2^(M-n-1),并将值与D比较,若大于D,表示N/2^(M-n-1)的值除以D商为1(tip1),则N'/D的商Q的Q[M-n]=1,而余数则为R-D,并将此余数应用于下一次移位。
tip1:n=0时因为只有一位,商不会大于1,n>0时因为上一步如果R>D,R会减去D,确保下一步商不会大于1。
2、基于乘法的除
N = D * (Q + R)
设N共M位。
step1:令Q[M-n]=1,M-n后的为设为0。
step2:D*Q。
step3:计算N-D*Q。若为非负,N>D*Q,则令Q[M-n]=1;
若为负,N<D*Q,则令Q[M-n]=0。
step4:n++。
step5:重复step1~step4。