[计算机组成原理] Booth算法 —— 补码一位乘法

Posted leocathyfelix

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[计算机组成原理] Booth算法 —— 补码一位乘法相关的知识,希望对你有一定的参考价值。

x * y = z

运算规则:

1.和原码一位乘法不同,补码一位乘法的符号位参加运算的,且运算结果和所有参加运算的数都是补码形式。

2.乘数 x 取双符号位参与运算,部分积的初始值为0;

   乘数 y 取单符号位参与运算。

3.乘数 y 首先在末尾添加一个辅助位 0 ,每次讨论都是取 y 的最后两位但每次移动仅移动一位

4.判断 y 的最后两位是规则如下:

  •    00 或者 11 时,直接右移一位;
  •    01 时,先加 x 的补,然后右移一位;
  •    10 时,先加 -x 的补,然后右移一位。

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算法 —— 补码一位乘法的主要内容,如果未能解决你的问题,请参考以下文章

计算机组成原理——补码乘法运算

booth算法 booth算法简介

求补码一位乘(booth乘法 比较法)计算x=11011y=-11111求x*y的详细过程

booth补码乘法算法中乘数的右移规则是啥?

(计算机组成原理)第二章数据的表示和运算-第二节5:定点数乘法运算(原码/补码一位乘法)

用Booth算法计算-4×3的4位补码乘法运算,要求写出每一步运算过程及运算结果 麻烦详细说明每一步的操作