定点数乘除运算及实现

上传人:m**** 文档编号:587806779 上传时间:2024-09-06 格式:PPT 页数:31 大小:688.51KB
返回 下载 相关 举报
定点数乘除运算及实现_第1页
第1页 / 共31页
定点数乘除运算及实现_第2页
第2页 / 共31页
定点数乘除运算及实现_第3页
第3页 / 共31页
定点数乘除运算及实现_第4页
第4页 / 共31页
定点数乘除运算及实现_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《定点数乘除运算及实现》由会员分享,可在线阅读,更多相关《定点数乘除运算及实现(31页珍藏版)》请在金锄头文库上搜索。

1、 定点乘法运算可定点乘法运算可采用采用:原码进行原码进行,又有原,又有原码码一位乘法两位乘法一位乘法两位乘法。补码补码进行进行,也有补码,也有补码一位乘法两位乘法一位乘法两位乘法阵列乘法器阵列乘法器来实现。来实现。2.3定点乘定点乘除法运算及其实现除法运算及其实现定点乘法运算及其实现定点乘法运算及其实现原码原码一位一位乘法乘法运算规则运算规则:被乘数被乘数: : X原原f f . .n n1 11 10 0 乘乘 数数: : Y原原f f . .n n1 11 10 0 则积则积:X*Y原原=(X Y)+( X * Y )式中式中: X为被乘数符号为被乘数符号, , Y为乘数符号。为乘数符号。

2、 1 1 原码乘法原码乘法乘积符号的运算法则是:乘积符号的运算法则是:“异或异或”(按位加按位加)运算得到。运算得到。数值部分的运算数值部分的运算方法与普通的十进制小数乘法类似。方法与普通的十进制小数乘法类似。下面通过一个具体例子从来说明:下面通过一个具体例子从来说明:例:例:设设A0.1101,B0.1011,则,则AB的的手工运算过程为:手工运算过程为:将将多数一次相加多数一次相加,机器,机器难以实现难以实现。一般的加法器,只能。一般的加法器,只能把两个输入数相加,多个位积的同时输入是无法实现的把两个输入数相加,多个位积的同时输入是无法实现的机器字长机器字长(即加法器)(即加法器)只有只有

3、n位位,而乘积位数增长了一倍,而乘积位数增长了一倍,即即2n问题问题:解决方案解决方案:(a)把一次求和的操作,变成把一次求和的操作,变成逐步累加求部分积逐步累加求部分积的操作的操作(b)将求积过程中左移位积的操作,改为将求积过程中左移位积的操作,改为位积不动位积不动,而是,而是上次部分积右移上次部分积右移的的操作操作手工运算过程手工运算过程计算机内运算的实现方法计算机内运算的实现方法 例例已知已知:X0101,Y0110,用原码一位乘法求用原码一位乘法求XY原原?X原原1101Y原原1110XY原原 +(0101)(0110)则(则(0101)(0110)的过程为:的过程为:00000000

4、00000X01010101000000001010X01010111100011110解解:用原码:用原码一位乘法一位乘法实现实现XY过程过程为:为:所以:所以:XY原原0+00111100011110例:例:已知已知X=+01101,Y=-01011,求,求Z=XY。解:解:X原原=01101【Y】原】原=11011XY原原0 1+(01101)(01011)则则(01101)(01011)的过程为:的过程为:所以:所以:XY原原Z原原=1+0.10001111110001111Z=010001111原码一位乘法的原码一位乘法的乘法器乘法器结构框图结构框图如图:所示: 原码一位乘法的原码一

5、位乘法的乘法器乘法器工作原理:工作原理:乘法开始时,乘法开始时,“启动启动”信号使控制触发器信号使控制触发器Cx置置“1”,于是开启时序,于是开启时序脉冲脉冲T。当乘数寄存器当乘数寄存器R1最末位为最末位为“1”时,部分积时,部分积Zi和被乘数和被乘数X在加法器中在加法器中相加,相加,其结果输出至其结果输出至R0的输入端。的输入端。一旦打入控制脉冲一旦打入控制脉冲T到来,控制信号到来,控制信号LDR0使部分积右移一位,与使部分积右移一位,与此同时,此同时,R1也在控制信号也在控制信号LDR1作用下右移一位,且计数器作用下右移一位,且计数器i计数计数一次。一次。当计数器当计数器i=n时,计数器的

6、溢出信号使触发器时,计数器的溢出信号使触发器Cx置置“0”,关闭时序,关闭时序脉冲脉冲T,乘法宣告结束。乘法宣告结束。原码两位乘法原码两位乘法:基本原理类似基本原理类似:只是从最低位开始,每次:只是从最低位开始,每次取两位乘数与被乘数相乘,得到一次部分取两位乘数与被乘数相乘,得到一次部分积,与上次部分积相加后右移积,与上次部分积相加后右移2。有关。有关原原码两位乘法具体操作过程不再码两位乘法具体操作过程不再详细讨论详细讨论2补码乘法补码乘法3补码一位乘法补码一位乘法补码与真值的关系补码与真值的关系:例:例:已知已知【Y】补补=Y0Y1Y2Yn,证明真值:证明真值:Y(Y0)Yi2i=1n证明:

7、证明:当当Y0时,时,Y0=0则真值则真值Y(0)0Y1Y2Yni=1nYi2当当Y0时,时,Y0=1依补码的定义:依补码的定义:Y【Y】补】补21Y1Y2Yn210Y1Y2Yn1i=1nYi2所以:所以:Y(Y0)i=1nYi2例例已知已知:N补补11101,N补补10011,求求N补补,N补补具有具有的数值的数值N补补11101具有的数值为:具有的数值为:解:解:N120121122023124N补补10011具有的数值为:具有的数值为:N124023022121120(13)10(0.1875)10由补码与真值转换公式真值由补码与真值转换公式真值:Y=(0)i=1nYi2=-Y0*20+

8、Y1*2-1+Y2*2-2+Yn*2-n=-Y0*20+(Y1*20-Y1*2-1)+(Y2*2-1-Y2*2-2)+=(Y1-Y0)*20+(Yn+1-Yn)*2-n+(Y2-Y1)*2-1在最后在最后1位后再补位后再补1位位(Yi+1-Yi)*2-ii=0n =例例已知已知:N补补0.1101,N补补1.0011,求求N补补,N补补具有具有的数值。的数值。解解:N补补0.1101具有的数值为:具有的数值为:N(10)2-0(1-1)2-1(0-1)2-2(1-0)2-3(0-1)2-413/16N补补1.0011具有的数值为具有的数值为N(01)2-0(0-0)2-1(1-0)2-2(1-

9、1)2-3(0-1)2-413/16补码乘法公式补码乘法公式:XY补补=X补补Y补补=X补补Y证明过程:证明过程:略略由补码乘法公式由补码乘法公式及及补码与真值的关系补码与真值的关系得:得:XY补补=X补补Y=X补补【(Y1Y0)20(Y2-Y1)2-1(Yn+1Yn)2-n】(Yi+1-Yi)*2-ii=0n =X补补上式中上式中Yn+1Yn只有只有4中情况:中情况:000011101110下面通过下面通过例子例子来来熟悉补码一位乘法的操作过程熟悉补码一位乘法的操作过程:+0+-X补补+X补补+0例例已知已知:X0101,Y0110,用补码用补码一位乘法一位乘法求(求(XY)补补解:解:用补

10、码实现用补码实现XY过程过程为:为:X补补1011Y补补1010Y补补10100则用补码则用补码一位乘法一位乘法的过程为:的过程为:0000000000000X补补01010101000000001010X补补10111101101110110X补补0101X补补01010011110XY补补0.011110所以:所以:实现补码一位乘法的实现补码一位乘法的乘法器乘法器的逻辑框图的逻辑框图如图所示如图所示补码两位乘法:是补码两位乘法:是把补码的一位乘法的两个单步操作和并成一个操作。把补码的一位乘法的两个单步操作和并成一个操作。即:即: 【(Zi+2i+2)补补】=2-2【Zi i补】+ (Yn+

11、1+Yn2Yn n1 1) 】 【X】补3阵列乘法器阵列乘法器.不带符号的阵列乘法器不带符号的阵列乘法器例:例:44位不带符号的阵列乘法器逻辑图:位不带符号的阵列乘法器逻辑图:2.3.2 定点除法运算及其实现定点除法运算及其实现除法除法运算可采用:运算可采用:原码进行原码进行,又有,又有恢复余数法恢复余数法和和不恢复余数法不恢复余数法补码补码进行进行,采用,采用加减交替法加减交替法阵列阵列除法除法器器1.原码除法运算:原码除法运算:是指是指用原码表示两数相除,求出原码表示的商用原码表示两数相除,求出原码表示的商运算规则运算规则:设有设有n位定点小数位定点小数(定点整数也同样适用定点整数也同样适

12、用):被除数:被除数:原原f.n110除数:除数:原原f.n110则有商则有商q其原码为:其原码为:q原原(f f)+(0.n110/0.n110)原码除法中据原码除法中据对余数的处理不同,又对余数的处理不同,又可分为:可分为:恢复余数法恢复余数法和和加减交替法加减交替法例例:X=0.1001,Y=0.1101,手算手算X/Y的过程为:的过程为:恢复余数法的计算过程恢复余数法的计算过程和手算相似和手算相似:原码恢复余数法原码恢复余数法解解:符号位为:符号位为:1数码的手算过程为:数码的手算过程为:最后:最后:余数余数:R0.000124商:商:Q0.1011(1)每次每次都是都是由心算来比较余

13、数和除数的大小由心算来比较余数和除数的大小,余数大时,商,余数大时,商1;余数小时,商余数小时,商0。第一次比较时,余数就是被除数。第一次比较时,余数就是被除数。(2)每做一次减法,总是每做一次减法,总是保持余数不动保持余数不动,而,而除数向右移一位除数向右移一位。(3)最后最后据符号位据符号位运算的结果运算的结果给商给商以以正确的符号正确的符号对上述手算计算过程分析得:对上述手算计算过程分析得:为适应机器运算,需要进行改进为适应机器运算,需要进行改进:(1)用用减法减法来比较余数和除数的大小来比较余数和除数的大小(2)除数右移改为余数左移除数右移改为余数左移。(3)定点除法运算必须要求定点除

14、法运算必须要求被除数的高被除数的高n位小于除数位小于除数,否则益处,否则益处下面就通过下面就通过例子例子讲一下讲一下原码恢复余数法的在计算机的操作过程原码恢复余数法的在计算机的操作过程:例例:X=0.1001,Y=0.1101,用原码恢复余数法,用原码恢复余数法求求X/Y?解:解: 0.1001/0.1101用原码恢复余数的过程为:用原码恢复余数的过程为:/y原原0 11(f f)+|x|/|y|符号:符号:QS|x|补补|Y|补补|Y|补补0.10010.11011.0011余数余数0 商商1即即q3=1所以所以0.1001/0.1101用原码恢复余数的过程为:用原码恢复余数的过程为:0.1

15、001y+|y|补补1.00111.1100余数余数0商商1即即q1=1左移左移1位位0.1010-|Y|+|y|补补1.00111.1101余数余数0 商商1即即q4=1所以:商:所以:商:Q0.1011,余数余数:R0.000124用用原码恢复余数法原码恢复余数法:求求|X|/|Y|的的解题步骤:解题步骤:y*=Y先先将将被除数被除数/余数余数减去减去除数除数得新余数得新余数Ri若若Ri0:商商“1”,再将,再将Ri左移一位后减除数左移一位后减除数(即即2Riy*),得新余数得新余数Ri若若Ri0:商商“0”,先将先将Riy*,即完成恢复余数的运算,再对即完成恢复余数的运算,再对Riy*左

16、左移移一一位后减除数,即位后减除数,即2(Riy*)-y*,得得新的余数新的余数Ri 再将再将上述过程上述过程重复重复n(除数位数)除数位数)次次,共,共上上n位商位商最后最后所得的商和余数即为所得的商和余数即为|X|/|Y|的的商及余数商及余数原码恢复余数法算法:原码恢复余数法算法:XY=R0商商2RY=R0商商02(R+Y)Y=R 分析原码恢复余数法得知:分析原码恢复余数法得知:当余数当余数Ri0时,商时,商“1”,再对,再对Ri左移一位后减除数,即左移一位后减除数,即2Riy*当余数当余数Ri0时,商时,商“0”,先将,先将Ri+y*,再,再2(Ri+y*)-y*,也即,也即2Ri+y*

17、。原码恢复余数法可归纳为原码恢复余数法可归纳为:当余数当余数Ri0时时,商商“1”,做,做2Riy*运算运算当余数当余数Ri0时,商时,商“0”,做,做2(Ri+y*)-y*运算运算用用原码原码加减交替法加减交替法:求求|X|/|Y|的的解题步骤:解题步骤:先先将将余数余数减去减去除数除数得新余数得新余数Ri若若Ri0:商商“1”,做,做2Riy*运算运算若若Ri0:商商“0”,做做2Ri+y*运算运算 再将再将上述过程上述过程重复重复n(除数位数)除数位数)次次,共,共上上n位商位商最后最后所得的商和余数即为所得的商和余数即为|X|/|Y|的的商及余数商及余数原码不恢复余数法(加减交替法)原

18、码不恢复余数法(加减交替法)原码不恢复余数法算法:原码不恢复余数法算法:XY=R0商商2RY=R0商商02R+Y=R 原码加减法可归纳为原码加减法可归纳为:当余数当余数Ri0时时,商商“1”,做,做2Riy*运算运算当余数当余数Ri0时,商时,商“0”,做,做2Ri+y*运算运算例:例:已知已知:X0101,Y0110求:【求:【x/y】原?用不恢复余数法解。】原?用不恢复余数法解。X/Y原原 0+(0101)(0110)X原原1101Y原原0110-Y补补110则(则(0101)(0110)的原码的原码不恢复余数法不恢复余数法的过程为:的过程为:11Y 10101111余数余数0商商1即即q

19、1=10100Y 10101110余数余数0商商1即即q2=11100Y 01100010余数余数0商商0即即q3=0x/y原原余数为:余数为:0.0102-3 11解:解:例:例:已知已知:x0.1011,y0.1101,求【求【x/y】原?用恢复余数及加减交替法解。】原?用恢复余数及加减交替法解。解解:|x|01011|y|01101(1)恢复余数法解恢复余数法解01011/01101的过程为:的过程为:【x/y】原】原0 0+|x|/|y|y|补补10011故故【x/y】原】原=0.1101余数为余数为:0.01112-故故:x/y原原=0.1101余数为:余数为:0.01112-(2)

20、不恢复余数法解不恢复余数法解01011/01101的过程为:的过程为:补补码码除除法法:指指“符符号号位位和和数数码码位位一一起起参参加加除除法法运运算算,参参加加运运算算的的操操作作数数 是补码,求得的商数和余数也是补码。是补码,求得的商数和余数也是补码。补码除法运算方法补码除法运算方法:采用采用加减交替法加减交替法。补码除法补码除法加减交替法加减交替法的的操作过程操作过程: 2.补码除法运算补码除法运算 重复第重复第步次步次 第次上商后,不再移位及,操作。第次上商后,不再移位及,操作。 若商为负数,则在商末尾加若商为负数,则在商末尾加 若余数与被除数异号,则要纠余:若余数与被除数异号,则要

21、纠余: 若,同号,用纠余,若,同号,用纠余, 若,异号,用纠余,若,异号,用纠余, 若若X,YX,Y同号,做同号,做- -得余数,商为商的符号位,再做得余数,商为商的符号位,再做+ +得得若若X,YX,Y异号,做异号,做+ +得余数,商为商的符号位,再做得余数,商为商的符号位,再做- -得得 若余数与同号,商,后做。若余数与同号,商,后做。 若余数与异号,商,后做。若余数与异号,商,后做。【X】补】补 【】补【】补【2-】补】补 【】补【】补, ,【】补【】补, ,【】补【】补/ /【】补的过程【】补的过程为:为:YNX,YX,Y同号?同号?Y商商“1”“1”再作再作得得商商“”再作再作, ,

22、同号?同号?商商“”再作再作商商“”再作再作 例:例:已知:已知:X0.10,Y+0.110,求【求【XY】补?】补?解:解:X 补补01 补补0110Y 补补1010运算过程如下:运算过程如下:1.0110.1100.001X,Y异号异号符号位符号位q0=0.0101.0101.100余数与余数与Y异号异号 商即商即q1=1.0000.1101.110余数与余数与Y异号异号 商即商即q2=1.1000.1100.010余数与余数与Y同号同号商商1即即q3=1余数余数0.0100.010与异号与异号, ,应纠余应纠余, ,又因为,异号用纠余即:又因为,异号用纠余即:0.010Y 补补0.010

23、+10101.100又因为又因为商商0,应在末尾,故商为:应在末尾,故商为:1.010所以所以【XY】补】补其其【余数【余数】补】补2-3对对补码加减交替法补码加减交替法说明如下:说明如下:不能自动判溢出不能自动判溢出,因此在补码除法运算之前,必须,因此在补码除法运算之前,必须先比较被除数高瑞先比较被除数高瑞n位与除数的绝对值,确认不会位与除数的绝对值,确认不会产产生除法溢出后,才可开始除法运算。生除法溢出后,才可开始除法运算。 符号位不需要单独运算符号位不需要单独运算,可自然得到商数和余数的,可自然得到商数和余数的正确符号。正确符号。若若最后最后一次一次余数与被除数异号余数与被除数异号,则,则需要纠余需要纠余:X、Y同号,则十同号,则十Y纠余,纠余,X、Y异号,则一异号,则一Y纠余。纠余。3.不恢复余数的阵列除法器不恢复余数的阵列除法器下图示出了4位除4位的不恢复余数阵列除法器的逻辑原理图:被除数0.123456 (双倍长)除数0.123商数0.q1q2q3余数0.00r3r4r5r6

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号