(防止有些小伙伴学糊涂了,x/y,x是被除数,y是除数嗷嗷嗷嗷)
符号位:通过异或运算得到
恢复余数法:
x/y都先取绝对值,然后默认先上商1,如果计算的余数符号位为1,说明余数为负数,表示搞错了,计算机要恢复余数,加上[|y|]补,然后把商改为0,左移一位。
加减交替法:如下图所示,
如果余数为负将商改为0然后直接跳到下一次上商1的地方,忽略恢复余数的过程,其中操作直接等价于先将余数左移一位,再加上|余数|,得到下一个余数。
若余数为正,直接左移,再+[-|y|]补码,得到新的下一个余数。
值得注意的是:加减交替法最后一次如果余数为负,要改商为0,并且要加[|y|]补码来恢复余数。
补码的除法运算和原码的除法运算的加减交替法非常类似,但是符号位不用单独计算,商看余数和除数的符号是否相同,同号,商1;异号,商0。开始时除数加y的补码还是-y的补码看被除数和除数是否同号,同号,被除数减去除数,异号,被除数加上除数,这里都是补码。但是跟原码除法不同是最后一位商恒置为1,也不用回复余数,这样做的目的其实就是方便啦