[计算机组成原理] Booth算法 —— 补码一位乘法
2020-12-13 01:58
标签:不同 lin 直接 参与 判断 组成原理 符号 bsp 初始 x * y = z 运算规则: 1.和原码一位乘法不同,补码一位乘法的符号位是参加运算的,且运算结果和所有参加运算的数都是补码形式。 2.乘数 x 取双符号位参与运算,部分积的初始值为0; 乘数 y 取单符号位参与运算。 3.乘数 y 首先在末尾添加一个辅助位 0 ,每次讨论都是取 y 的最后两位,但每次移动仅移动一位。 4.判断 y 的最后两位是规则如下: 5.有个特例,最后一步不用右移了。 举个栗子: 设 x = -0.1101 , y = 0.1011 则 [x]补 = 11.0011 ,[-x]补 = 00.1101 一开始 部分积初始值:00.0000 先给y补一个辅助位0,得到 y = 0.10110 首先,从y的最后两位开始看,0.10110 ,为 10 ,对应规则 “先加[-x]补,再右移一位” : 部分积 00.0000 + 00.1101 = 00.1101 ,右移一位得到 00.01101 接着,y 右移一位再看,0.10110,为 11 ,对应规则“直接右移一位”: 部分积 00.001101 然后,y再右移一位再看,0.10110 ,为 01 ,对应规则“先加[x]补,再右移一位”: 00.001101 部分积 + 11.0011 [x]补 -------------------- = 11.011001 部分积 部分积 00.001101 + 11.0011 = 11.011001 ,右移一位得到 11.1011001 (注意这里符号位移动后,仍然保持为 11 ) 接着,y再右移一位再看,0.10110 ,为 10 ,对应规则“先加[-x]补,再右移一位”: 部分积 11.1011001 + 00.1101 = 00.1000001 ,右移一位得到 00.01000001 最后,y再右移一位再看,0.10110 ,为 01 ,对应规则“先加[x]补,再右移一位”: 部分积 00.01000001 + 11.0011 = 11.01110001 ,但这已经是最后一步,不用再右移了, 所以最后结果是 1.01110001 (注意:这是x*y的补码) [计算机组成原理] Booth算法 —— 补码一位乘法 标签:不同 lin 直接 参与 判断 组成原理 符号 bsp 初始 原文地址:https://www.cnblogs.com/LeoCathyFelix/p/11022465.html