加减交替法:
又称为不恢复余数法,是恢复余数法的一种算法的提升!
步骤示例:
例题:
已知x=-0.1011,y=0.1101,求[x/y]原?
[y*]补=0.1101;[-y*]补=1.0011;
例题:
已知x=-0.1011,y=0.1101,求[x/y]原?
[y*]补=0.1101;[-y*]补=1.0011;
被除数 商 操作
0.1011 00000
+1.0011 +[-y*]补=1.0011;//当被除数为正数时, +[-y*]补;
--------------------------------------------------------------------------------------------------------
1.1110 0 余数为负数,上商0;
1.1100 <<向左移动一位;
+0.1101 +[y*]补=0.1101;//当被除数为负数时, +[y*]补;
--------------------------------------------------------------------------------------------------------
0.1001 01 余数为正数,上商1;
1.0010 <<向左移动一位;
+1.0011 +[-y*]补=1.0011;//当被除数为正数时, +[-y*]补;
--------------------------------------------------------------------------------------------------------
0.0101 011 余数为正数,上商1;
0.1010 <<向左移动一位;
+1.0011 +[-y*]补=1.0011;//当被除数为正数时, +[-y*]补;
--------------------------------------------------------------------------------------------------------
1.1101 0110 余数为负数,上商0;
1.1010 <<向左移动一位;
+0.1101 +[y*]补=0.1101;//当被除数为负数时, +[y*]补;
--------------------------------------------------------------------------------------------------------
0.0111 01101 余数为正数,上商1;
因为 异或运算:x@y=1@0=1;
所以: [x/y]原=1.1101 ;
总结两点:就是余数为负数就上商0,移位操作,然后加上除数的绝对值的([y*]补)补码;
若余数是正数就上商1,进行移位操作,然后再加上除数绝对值的负数[-y*]补)补码;
总结两点:
就是余数为负数就上商0,移位操作,然后加上除数的绝对值的([y*]补)补码。
若余数是正数就上商1,进行移位操作,然后再加上除数绝对值的负数[-y*]补)补码;
相比较恢复余数法少了专门用于余数的恢复阶段,步骤简化许多,所以加减交替法也被称为不恢复余数法。
觉得对你有所帮助的,点个赞赞~( ̄▽ ̄)~*涅!客官大大~