布斯(Booth)补码乘法:原理推导与实站案例讲解
布斯(Booth)乘法
文章目录
- 布斯(Booth)乘法
- 1.背景
- 2.公式推导
- 2.1 补码算真值公式
- 2.2[ X × Y ] 补 [X \times Y]_{\text{补} }[X×Y]补的布斯乘法递推公式
- 2.3 部分积P~i~递归公式
- 2.4 联立 (2) (3) 式
- 2.5 结果
- 3 案例
1.背景
在了解了手动补码运算之后 ——> 计算机内部是如何进行补码的乘法的运算 ——>布斯(Booth)乘法
A. D. Booth(安德鲁·唐纳德·布斯,Andrew Donald Booth) 提出了一种补码相乘算法,可以将符号位和数值位合在一起参与运算,直接得出用补码表示的乘积,且正数和负数同等对待。这种算法别乘法布斯(Booth)乘法
注:[ X × Y ] 补 ≠ [ X ] 补 × [ Y ] 补 [X \times Y]_{\text{补}} \neq [X]_{\text{补}} \times [Y]_{\text{补}}[X×Y]补=[X]补×[Y]补
2.公式推导
2.1 补码算真值公式
2.2[ X × Y ] 补 [X \times Y]_{\text{补} }[X×Y]补的布斯乘法递推公式
这里简单解释下这个过程:在上面得到了求一个数补码的真值的形式 ----> 把它凑成一个递推的形式 —–> 拆分构造( Y i − 1 − Y i ) (Y_{i-1}-Y_i)(Yi−1−Yi)差分结构
看粉色画线部分 即 之后的每一项都整理成 —–>后一位置二进制数减去当前位二进制数的形式
2.3 部分积Pi递归公式
这里简单解释下这个过程 —> 其实就是把 (2)式展开 然后再合并一下 —–> 自己手写一下展开过程 很简单
2.4 联立 (2) (3) 式
(2)式从P1到Pn每次都要乘一个1/2乘n次就是 2-n
2.5 结果
对(2)的补充
Yi- Yi-1> 0 则 + [ x ]补
Yi- Yi-1< 0 则 - [ x ]补
Yi- Yi-1= 0 则 + 0
3 案例
P 是乘积寄存器,Y是乘数寄存器
简单解释下这个计算过程 —–>
第一行:初始化,乘积寄存器P和辅助位Y-1初始化为0 放入乘数Y
第二行: Yi- Yi-1= 0 则 + 0 然后再右移一位 P为 0000 0 Y为 011 Y-1为0
第三行: Yi- Yi-1< 0 则 - [ x ]补然后再右移一位 P为 0001 10 Y为 01 Y-1为1
第四行: Yi- Yi-1= 0 则 + 0 然后再右移一位 P为 0000 110 Y为 0 Y-1为1
第五行: Yi- Yi-1> 0 则 + [ x ]补然后再右移一位 P为 1110 1110 Y为空 Y-1为0
最后即得到[ X × Y ] 补 [X \times Y]_{\text{补} }[X×Y]补的乘积 即为P中的内容 1110 1110
嘻嘻嘻嘻布斯乘法部分到此结束😆😆
(有错误欢迎指出) (疑问也是)❤️❤️😍😍💖💖
持续更新中… …
