定点数除法
话不多说,继续上例子🙃
eg:已知X=0.1001,Y=-0.1101,用原码一位除法求X/Y。
方法一:原码加/减法交替除法运算(不恢复余数法)
这里面我们要把符号位单独拿出来进行异或运算,数值部分单独做运算。
而且要说明一个点,X-Y=X+[-Y]补。
既然单独运算了,你现在把Y当作0.1011😊
还是把他们都双符号位,就是前面再添个0。
第一次要先做一次减Y的判断哦~
若左移的新数是正数,就减Y,即继续判断,
若左移的新数是负数,就加Y,恢复余数,
左移后的新数再判断正负来看加减Y。
这里要注意的就是商最后要结合符号位,且最后一步移商不是减商,上面写错啦🙃,余数进行几次算术左移就是扩大了2ⁿ倍,最后要缩小回去。
方法二:原码恢复余数除法
还是先把符号位给单独拿出去,最后进行符号异或运算,把Y当作0.1011,减Y就是加[-Y]补,[-Y]补=1.0101。
首先要进行减Y判断:
若新余数<0,商0,且加Y恢复余数
若新余数>0,商1,且减Y继续判断
得到余数为负数之后,加Y恢复余数后左移一位继续减Y运算,而正数直接左移一位再减Y运算。
最后要进行符号异或哦~而且余数要缩小回去,这个方法存在的不足就是运算步数不确定。