原码除法:
原码除法与原码乘法一样,符号位是单独处理的。
商的符号位由参与运算的两个数的符号位进行异或运算求得,商的值由两个数的绝对值进行相除求得。
实现除法运算时,应该避免除数为0(结果为无穷大)和被除数为0(结果为0,做无用功)的情况,商的位数一般跟操作数的位数相同。
对于小数定点除法,必须满足:0<|被除数|<=|除数|。
对于整数除法,则要求:0<|除数|<=|被除数|
根据对余数的处理不同,原码除法可以分为“恢复余数法”和“不恢复余数法(或称加减交替法)”。
(1)恢复余数法
当余数为负时,需加上除数,将其恢复成原来的余数,余数左移1位,再减除数(余数就是被除数经过若干次减除数运算后的结果)。
(2)加减交替法
对恢复余数法进行进一步改进,归纳出:
<1>当余数Ri>0时,上商“1”,再对Ri左移1位后减除数,即做2Ri-|y|运算(-|y|用补码加法代替);
<2>当余数Ri<0时,上商“0”,然后先Ri+|y|恢复余数,再做2(Ri+|y|)-|y|,即做2Ri+|y|的运算。
通过这个,就不必进行余数恢复的问题,只做+|y|、-|y|的运算。
n位小数的除法共上商n+1次,第一次“上商”用来判断是否溢出,为“1”时即溢出。
阅读(2608) | 评论(0) | 转发(0) |