tooth算法实现
0赞
发表于 2016/9/27 22:04:55
阅读(1401)
用Booth算法计算2×(-3)。
解:[2]补=0010,[-3]补=1101,在乘法开始之前,R0:0000 R1:1101,R2:0010。
在乘法的第一个循环中,判断R1的最低位和辅助位为10,所以进入步骤1c,将R0的值减去R2的值,结果1110送人R0,然后进入第二步,将{R0,R1}算术右移一位,R0和R1的结果为1111、0110,移出的那一位放做辅助位l
在第二个循环中,首先判断Rl的最低位和辅助位为0l,所以进入步骤1b,作加法,
R0+R2=1111+0010,结果0001送入R0,这时R0R1的内容为0001 0110,在第二步右移后变为0000 1011,辅助位为0。
在第三次循环中,判断位为10,进入步骤lc,R0减去R2,结果1110送入R0,R1不变;步骤2移位后R0和R1的内容为1111 0101,辅助位为1。
第四次循环时,因两个判断位为11,所以不作加减运算,向右移位后的结果为1111 1010,这就是运算结果(—6)。(结果result={R0,R1}) 在每次移位都是{R0,R1}同时移位
移位的次数依照被移位数的 位数决定
来自http://zhidao.baidu.com/link?url=6YYdaovFtpuRnqO1mWe31pyhG1B5gczImsAZP7uepyr_HxEK62CEd7u-c_heVwT9NIJ0FZNKXtTGHXfm8PTxArGfTz23LGoZElFPBExC9nq