- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
新型定点乘法运算
2.3 定点乘法运算;乘积符号的运算法则是:同号相乘为正,异号相乘为负。由于被乘数和乘数和符号组合只有四种情况(xfyf=00,01,10,11),因此积的符号可按“异或”(按位加)运算得到。
数值部分的运算方法与普通的十进制小数乘法类似,不过对于用二进制表达式的数来说,其乘法规则更为简单一些。
设x=0.1101,y=0.1011.让我们先用习惯方法求其乘积,其过程如下: ;如果被乘数和乘数用定点整数表示,我们也会得到同样的结果。
人们习惯的算法对机器并不完全适用。原因之一,机器通常只有n位长,两个n位数相乘,乘积可能为2n位。用这种被乘数左移的方法,则需要2n位长的加法器,不仅不适于定点机的形式,而且还必须设法将n个位积一次相加起来,为了简化结构,机器通常只有n位长,并且只有两个操作数相加的加法器.为此,必须修改上述乘法的实现方法,将x·y改写成适于如下定点机的形式:
0. 1 1 0 1 x
? 0. 1 0 1 1 y
0. 0 0 0 0 1 1 0 1 x共右移4次
0. 0 0 0 1 1 0 1 x共右移3次
0. 0 0 0 0 0 0 x共右移2次
+ 0. 0 1 1 0 1 x共右移1次
0. 1 0 0 0 1 1 1 1 (z)
为了适合于两个操作数相加的加法器,将x?y进一步改写成如下形式: ; x?y=x?(0.1011)
=0.1?x+0.00?x+0.001?x+0.0001?x
=0.1{x+0.1[0+0.1(x+0.1?x)]}
=2-1{x+2-1[0+2-1(x+2-1?x)]}
根据此式,按照式中括号所表达的层次.从内向外逐次进行移位累加.每算完一层括号2-1(部分积),就得到一个新的部分积,最后的一个部分积即为乘积.
一般而言,设被乘数x,乘数y都是小于1的n位定点正数:
x=0.x1x2…xn y=0.y1y2…yn
其乘积为
x?y=x(0.y1y2…yn)
=x(y12-1+y22-2+…+yn2-n)
=2-1(y1x+2-1(y2x+2-1(…+2-1(yn-1x+2-1(ynx+0))…)));令Zi表示第i次部分积,则上式可写成如下递推公式:
z0=0
z1=2-1(ynx+z0)
z2=2-1(yn-1x+z1)
:
zi=2-1(yn-i+1x+zi-1) (2.28)
:
zn=x?y=2-1(y1x+zn-1)
显然,欲求x·y,则需设置一个保存部分积的累加器.乘法开始时,令部分积的初值z0=0,然后求ynx加上z0,右移1位得第1个部分积z1.又将yn-1加上z1,再右移1位得第2个部分积z2.依此类推,直到求得y1x加上zn-1并右移1位得最后部分积zn,即得乘积x·y一zn。显然,两个n位数相乘,需重复进行n次“加”及“有移”操作,·才能得到最后乘积.这就是实现原码一位乘法的规则.;[例1] x=0.1101, y=0.1011,求 x· y.; 实现原码一位乘法的硬件逻辑原理示于图2.5.这里需要三个寄存器,其中R0存放部分积z(乘法开始前R0应清“0”,因为z0=0),R2存放被乘数x,Rl存放乘数y.由于乘法开始时先从乘数的最低位yn开始,以后则使用yn-1,yn-2,…,yl,因此乘数寄存器R1应当是具有右移功能的移位寄存器.假定加法器不具备右移功能,那么由于部分积需要右移,R0也应当是具有右移功能的移位寄存器.
文档评论(0)