问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

分数相乘的booth算法怎么算

发布网友 发布时间:2022-05-29 21:10

我来回答

1个回答

懂视网 时间:2022-09-05 16:09

1、Booth算法是一种适合于通过硬件实现的简便算法。将乘数看作从最低位开始的一串二进制数字。Booth算法的基本思路是:对于具有连续0和1的组,需要产生的部分积较少。对于乘数中每个0,仅需要将前面的累加的部分积向右移动一位。

2、简介:利用移位和加法,可以实现二进制无符号数的乘法,在无符号数乘法的基础上,加上适当的符号处理,很容易得到带符号数的原码乘法器。但是,在计算机中,带符号数都以补码表示,若采用原码乘法器进行带符号数的乘法运算,则首先要将乘数和被乘数转换成原码,相乘后再将负的乘积转换成补码,致使运算过程比较复杂。

3、不少处理器直接采用补码相乘的方法,以避免运算过程中的码制转换,提高处理器的工作效率。然而,二进制无符号的乘法并不能直接推广到补码的乘法运算,比较普遍采用的是布斯(Booth)补码相乘算法。

热心网友 时间:2024-11-23 01:52

比较好的带符号数乘法的方法是布斯(Booth)算法.它采用相加和相减的操作计算补码数据的乘积.Booth算法对乘数从低位开始判断,根据两个数据位的情况决定进行加法、减法还是仅仅移位操作.判断的两个数据位为当前位及其右边的位(初始时需要增加一个辅助位0),移位操作是向右移动.在上例中,第一次判断被乘数0110中的最低位0以及右边的位(辅助位0),得00;所以只进行移位操作;第二次判断0110中的低两位,得10,所以作减法操作并移位,这个减法操作相当于减去2a的值;第三次判断被乘数的中间两位,得11,于是只作移位操作;第四次判断0110中的最高两位,得01,于是作加法操作和移位,这个加法相当于加上8a的值,因为a的值已经左移了三次.
  一般而言,设y=y0,yly2…yn为被乘数,x为乘数,yi是a中的第i位(当前位).根据yj与yi+1的值,Booth算法表示如下表所示,其操作流程如下图所示.在Booth算法中,操作的方式取决于表达式(yi+1-yi)的值,这个表达式的值所代表的操作为:
  0 无操作
  +1 加x
  -1 减x
  Booth算法操作表示
  yi yi+1 操作 说明
  0 0 无 处于0串中,不需要操作
  0 1 加x 1串的结尾
  1 0 减x 1串的开始
  1 1 无 处于1串中,不需要操作
  乘法过程中,被乘数相对于乘积的左移操作可表示为乘以2,每次循环中的运算可表示为对于x(yi+1-yi)2^31-i项的加法运算(i=3l,30,…,1,0).这样,Booth算法所计算的结果 可表示为:
  x×(0-y31)×2^0
  +x×(y31-y30)×2^1
  +x×(y30-y29)×2^2
  …
  [1] +x×(y1-y0)×2^31
  =x×(-y0×231 +y1×2^30 +y2×2^29+y31×2^0)
  =x×y
  例:用Booth算法计算2×(-3).
  [2]补=0010, [-3]补=1101,在乘法开始之前,R0和R1中的初始值为0000和1101,R2中的值为0010.
  在乘法的第一个循环中,判断R1的最低位和辅助位为10,所以进入步骤1c,将R0的值减去R2的值,结果1110送人R0,然后进入第二步,将R0和Rl右移一位,R0和R1的结果为11110110,辅助位为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 01011,辅助位为1.
  第四次循环时,因两个判断位为11,所以不作加减运算,向右移位后的结果为1111 1010,这就是运算结果(—6).
  这个乘法的过程描述如下表所示,表中乘积一栏表示的是R0、R1的内容以及一个辅助位P,黑体字表示对两个判断位的判断.
  用Booth补码一位乘法计算2 ×(-3)的过程
  循环
  步骤
  乘积(R0,R1, P)
  0
  初始值
  0000 1101 0
  第一次循环
  1c:减0010
  1110 1101 0
  2:右移1位
  1111 0110 1
  第二次循环
  1b:加0010
  0001 0110 1
  2:右移1位
  0000 1011 0
  第三次循环
  1c:减0010
  1110 1011 0
  2:右移1位
  1111 0101 1
  第四次循环
  1a:无操作
  1111 0101 1
  2:右移1位
  1111 1010 1
  4.补码两位乘
  补码两位乘运算规则是根据补码一位乘的规则,把比较yiyi+1的状态应执行的操作和比较yi-1yi 的状态应执行的操作合并成一步,便可得出补码两位乘的运算方法.
  补码两位乘法运算规则如下
  判断位yi-1y iyi+1
  操作内容
  000
  [zi+1]补=2-2[zi]补
  001
  [zi+1]补=2-2{[zi]补+[x]补}
  010
  [zi+1]补=2-2{[zi]补+[x]补}
  011
  [zi+1]补=2-2{[zi]补+2[x]补}
  100
  [zi+1]补=2-2{[zi]补+2[-x]补}
  101
  [zi+1]补=2-2{[zi]补+ [-x]补}
  110
  [zi+1]补=2-2{[zi]补+-x}补}
  111
  [zi+1]补=2-2[zi]补
  由上表可见,操作中出现加2[x]补和加2[-x]补,故除右移两位的操作外,还有被乘数左移一位的操作;而加2[x]补和加2[-x]补,都可能因溢出而侵占双符号位,故部分积和被乘数采用三位符号位.
  例:[x]补=0.0101,[y]补=1.0101 求: [x? y]补.
  求解过程如下表所示.其中乘数取两位符号位即11.0101,[-x]补=1.1011取三符号位为111.1011.
  部分积
  乘数
  说 明
  000.0000
  + 000.0101
  1101010
  判断位为010,加[x]补
  000.0101
  000.0001
  + 000.0101
  0111010
  →2位
  判断位为010,加[x]补
  000.0110
  000.0001
  + 111.1011
  01
  1001110
  →2位
  判断位为110,加[-x]补
  111.1100
  1001
  最后一步不移位,得[x? y]补
  故[x? y]补=1.11001001
  可见,与补码一位乘相比,补码两位乘的部分积多取一位符号位(共3位),乘数也多取一位符号位(共2位),这是由于乘数每次右移2位,且用3位判断,故采用双符号位更便于硬件实现.可见,当乘数数值位为偶数时,乘数取2位符号位,共需作n/2次移位,最多作n/2+1次加法,最后一步不移位;当n为奇数时,可补0变为偶数位,以简化逻辑操作.也可对乘数取1位符号位,此时共作n/2+1次加法和n/2+1次移位(最后一步移一位).
  对于整数补码乘法,其过程与小数乘法完全相同.为了区别于小数乘法,在书写上可将符号位和数值位中间的“.”改为“,”即可.
  再补充一道例子,增加一下理解.呵呵
  例1.37 设被乘数M=0111(7),乘数Q=0011(3),相乘过程如下:(其中的①②……是我自己加上去的)
  A Q Q-1
  ①0000 0011 0 初始值
  ②1001 0011 0 A=A-M
  ③1100 1001 1 右移(第1次循环)
  ④1110 0100 1 右移(第2次循环)
  ⑤0101 0100 1 A=A+M
  ⑥0010 1010 0 右移(第3次循环)
  ⑦0001 0101 0 右移(第4次循环)
  乘法运算结束后,所得结果共8位,A寄存器中是乘积的高位部分,Q寄存器中是乘积的低位部分,即乘积=0010101=(21)(十进制)
  例1.38 设被乘数M=0111(7),乘数Q=1101(-3),相乘过程如下:
  A Q Q-1
  0000 1101 0 初始值
  1001 1101 0 A=A-M
  1100 1110 1 右移(第1次循环)
  0011 1110 1 A=A+M
  0001 1111 0 右移(第2次循环)
  1010 1111 0 A=A-M
  1101 0111 1 右移(第3次循环)
  1110 1011 1 右移(第4次循环)
  乘积=11101011=(-21)(十进制)
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
苹果手机微信怎么换漂亮字体(苹果手机微信怎么换行输入) 有什么好用的app转换字体 手写转文字的软件 erp可以看评论地址吗 淘宝评论url是什么意思? 揭秘:码牌支付风控升级,背后真相揭秘 电脑电视直播软件哪个好用什么软件好电脑看电视直播 潼南子同街学区是哪些 三极管BU406价格和参数? 火锅料放在冰柜忘了插电一个星期给会坏了吗 火锅的设备有哪些 写出两个分数相加的算法 我手机怎么下载连连看下不来呢 包装桶的定义 austria音标及读音是什么? 郑州哪里,有考驾驶证E证的地方? 郑州考驾照要什么条件? 包装桶的分类 想考个驾驶证,郑州的。 斯洛伐克语难吗? 输尿管大还是尿道口大? 外地户口在郑州考驾照需要什么证件?? 如何用spss做一般多元线性回归 捷克斯洛伐克中文拼音 频谱分析仪测量谐波时,都出现了哪些频谱分量 线性回归的一般步骤有什么,要做哪些检验,什么含义? 喜欢中岛美嘉的人进来,求一首歌 谁给推荐几首好听的中国古典乐器演奏的曲子? 在调制假彩色编码实验过程中,输出像出现颜色不纯现象,主要是什么原因... 求一首泰语歌 《月夜》 泰语泰语的 结婚生辰八字测算 通分简单算法 贴现利率多少PP是什么意思 这些分数计算怎么算?填出答案并要算法或定义或窍门! 分数加减的算法 pet食品用塑料包装桶保质期 2012款奔驰s300无钥匙进入设置 icon格式是什么格式呀?? 贾这个字念什么 中国古代计时器的介绍 中国古代计时器有哪些?它们都是怎么计时的? 中国古代计时器的发展 媒介组合、媒介策略、广告创意的来源和方法? 关于清欢的诗句有哪些? 清欢的诗句有哪些? 和清欢有关的诗句 像人间有味是清欢这样的禅意诗句 现在结婚需要哪些条件? 结婚要准备哪些东西 临沂琨茂汽车租赁公司怎么样? 《楚汉传奇》里陈道明演的刘季就是刘邦吗?