用Booth算法计算x乘以y x=0.110111,y=-0.101110 求详细的解题步骤

如题所述

先求出[-x]补=1.0011

然后看[y]补=0.101(10),为10,所以要加[-x]补,得

0.0000

+ 1.0011

= 1.0011 再右移一位得0.10011

然后看[y]补=0.10(11),为11,所以直接右移一位得 0.010011

然后看[y]补=0.1(01)1,为01,所以要加[x]补,得

0.010011

+ 0.1101

= 1.000111 再右移一位得0.1000111

然后看[y]补=0.(10)11,为10,所以要加[-x]补,得

0.1000111

+ 1.0011

= 1.1011111 再右移一位得0.11011111

然后看[y]补=(0.1)011,为01,所以要加[x]补,得

0.11011111

+ 0.1101

= 1.10101111

因为是最后一步,所以不移位,得1.10101111

扩展资料:

Booth算法原理:

布斯算法将乘数看作从最低位开始的一串二进制数字。从最低位算起,只要这串数字为“0“,就不执行任何操作;当这串数字遇到第一个“1”时执行一次减法,即减被乘数与该位权值的乘积,而对于其后的“1”不执行任何操作;

当这串数字再变为“0”时,则遇到第一个“0”时执行一次加法,即加被乘数与该位权值的乘积,而对其后的“0”则不执行任何操作。如此一直进行到最高位 [1]  。

举例来说,假设被乘数是5,乘数是7,即进行二进制数00000101与00000111相乘。该算法将7看作为三个“1”后面跟有五个“0”的一串数字。对于第一个”1”,该算法将减去5×20,对于第二和第三个“1”,则不执行任何操作;当遇到第一个“0”时,加5×23,得到最后结果是35。

温馨提示:答案为网友推荐,仅供参考