定点数乘除运算及实现_第1页
定点数乘除运算及实现_第2页
定点数乘除运算及实现_第3页
定点数乘除运算及实现_第4页
定点数乘除运算及实现_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

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

3、时输入是无法实现的机器字长机器字长(即加法器)(即加法器)只有只有n位位,而乘积位数增长了一倍,而乘积位数增长了一倍, 即即2n问题问题:解决方案解决方案: (a) 把一次求和的操作,变成把一次求和的操作,变成逐步累加求部分积逐步累加求部分积的操作的操作 (b) 将求积过程中左移位积的操作,改为将求积过程中左移位积的操作,改为位积不动位积不动,而是,而是上次部分积右移上次部分积右移的的 操作操作手工运算过程手工运算过程计算机内运算的实现方法计算机内运算的实现方法 例例 已知已知: X0101,Y0 110,用原码一位乘法求用原码一位乘法求X Y 原原? X原原1 101 Y原原1 110 X

4、Y 原原 + (0 101) (0 110)则(则(0 101) (0 110)的过程为:的过程为: 0 0 0 00 0 0 0 0 0 0 0 0X 0 101 0 101 0 0 0 0 0 0 0 010 10X 0 101 0 111 10 0 0 11 110解解:用原码一位乘法实现:用原码一位乘法实现X Y过程为:过程为: 所以:所以:X Y 原原 0+ 00111100011110 例:例: 已知已知X=+01101,Y=-01011,求,求Z=XY。 解:解: X原原=01101 【Y】原】原=11011 X Y 原原 0 1+ (01101) (0 1011) 则则(011

5、01) (0 1011)的过程为:的过程为: 所以:所以: X Y 原原 Z原原=1+0.10001111110001111 Z= 010001111原码一位乘法的原码一位乘法的乘法器乘法器结构框图结构框图如图:所示: 原码一位乘法的原码一位乘法的乘法器工作原理:乘法器工作原理:乘法开始时,乘法开始时,“启动启动”信号使控制触发器信号使控制触发器Cx置置“1”,于是开启时,于是开启时序脉冲序脉冲T。 当乘数寄存器当乘数寄存器R1最末位为最末位为“1”时,部分积时,部分积Zi和被乘数和被乘数X在加法器在加法器中相加,中相加, 其结果输出至其结果输出至R0的输入端。的输入端。一旦打入控制脉冲一旦打

6、入控制脉冲T到来,控制信号到来,控制信号LDR0使部分积右移一位,与使部分积右移一位,与此同时,此同时,R1也在控制信号也在控制信号LDR1作用下右移一位,且计数器作用下右移一位,且计数器i计数计数一次。一次。当计数器当计数器i=n时,计数器的溢出信号使触发器时,计数器的溢出信号使触发器Cx置置“0”,关闭时,关闭时序脉冲序脉冲T, 乘法宣告结束。乘法宣告结束。 原码两位乘法原码两位乘法:基本原理类似基本原理类似:只是从最低位开始,每次:只是从最低位开始,每次 取两位乘数与被乘数相乘,得到一次部分取两位乘数与被乘数相乘,得到一次部分 积,与上次部分积相加后右移积,与上次部分积相加后右移2。有关

7、。有关原原 码两位乘法具体操作过程不再码两位乘法具体操作过程不再 详细讨论详细讨论2 补码乘法补码乘法 补码一位乘法补码一位乘法 补码与真值的关系补码与真值的关系:例:例:已知已知【Y】补补= Y0Y1 Y2 Yn, 证明真值:证明真值:Y(Y0) Yi 2 i=1n证明:证明:当当 Y 0时,时, Y 0=0则真值则真值Y (0) 0Y1 Y2 Yni=1nYi 2 当当 Y 0时,时, Y 0=1依补码的定义:依补码的定义:Y 【Y】补】补2 1Y1 Y2 Yn 2 1 0Y1 Y2 Yn 1 i=1nYi 2 所以:所以: Y(Y0)i=1nYi 2 例例 已知已知: N补补 1 110

8、1,N补补10011,求求N补补,N补补具有具有 的数值的数值N补补 1 1101 具有的数值为:具有的数值为:解:解:N120121122023124N补补10011 具有的数值为:具有的数值为:N124023022121120(13)10 (0.1875)10由补码与真值转换公式真值由补码与真值转换公式真值: Y=(0 )i=1nYi 2 = -Y0*20 + Y1*2-1 + Y2*2-2 + + Y n*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

9、-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-4 13/16 N补补 1.0011 具有的数值为具有的数值为 N(01)2-0(0-0)2-1(1-0)2-2(1-1)2-3 (0-1)2-4 13/16 补码乘法公式补码乘法公式:X Y补补 = X补补 Y补补= X补补Y证明过程:证明过程:略略由

10、补码乘法公式由补码乘法公式及及补码与真值的关系补码与真值的关系得:得:X Y补补 = X补补Y= X补补【(Y1Y0)20(Y2-Y1)2 -1 (Yn+1Yn) 2-n】(Yi+1 - Yi ) * 2-ii=0n =X补补上式中上式中Yn+1Yn 只有只有4中情况:中情况:00 001 110 1 11 0下面通过下面通过例子例子来来熟悉补码一位乘法的操作过程熟悉补码一位乘法的操作过程:+ 0+ - X补补+ X补补+ 0例例 已知已知: X0101,Y0 110,用补码用补码一位乘法一位乘法求(求(X Y)补补 解:解:用补码实现用补码实现X Y过程为:过程为: X补补1 011Y补补1

11、 010 Y补补 1 0100则用补码则用补码一位乘法一位乘法的过程为:的过程为:0 00000 0000 000X补补0 1010 101 00 000 00 010 10X补补1 0111 101 101 1 10 110X补补0 101 X补补0 1010 0 11 1 1 0X Y 补补 0. 011110所以:所以:实现补码一位乘法的实现补码一位乘法的乘法器乘法器的逻辑框图的逻辑框图如图所示如图所示 补码两位乘法:是补码两位乘法:是把补码的一位乘法的两个单步操作和并成一个操作。把补码的一位乘法的两个单步操作和并成一个操作。 即:即: 【 (Z i+2i+2)补补】=2-2 【 Z i

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

13、位定点小数(定点整数也同样适用定点整数也同样适用): 被除数:被除数:原原f .n110 除数:除数:原原f .n110 则有商则有商q其原码为:其原码为: q原原(f f)+(0.n110/0.n110) 原码除法中据原码除法中据对余数的处理不同,又对余数的处理不同,又可分为:可分为:恢复余数法恢复余数法和和加减交替法加减交替法例例:X=0.1001,Y=0.1101,手算手算X/Y的过程为:的过程为:恢复余数法的计算过程恢复余数法的计算过程和手算相似和手算相似: 原码恢复余数法原码恢复余数法解解:符号位为:符号位为:1数码的手算过程为:数码的手算过程为:最后:最后:余数余数:R0.0001

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

15、 除数右移改为余数左移除数右移改为余数左移。 (3)定点除法运算必须要求定点除法运算必须要求被除数的高被除数的高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

16、商商1即即q3=1所以所以0.1001/ 0.1101用原码恢复余数的过程为:用原码恢复余数的过程为:0. 1 0 0 1 y +| y| 补补 1. 0 0 1 1 1. 1 1 0 0 余数余数0商商1即即q1=1左移左移1位位0. 1 0 1 0- | Y| +| y| 补补1. 0 0 1 11. 1 1 0 1余数余数0 商商1即即q4=1所以:商:所以:商:Q0.1011, 余数余数:R0.000124用用原码恢复余数法原码恢复余数法:求求| X | / | Y |的的解题步骤:解题步骤: y*= Y先将先将被除数被除数/余数余数减去减去除数除数得新余数得新余数Ri 若若Ri0:商

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

18、法得知:分析原码恢复余数法得知:当余数当余数 Ri0时,商时,商“1”,再对,再对Ri左移一位后减除数,即左移一位后减除数,即2Riy*当余数当余数 Ri0时,商时,商“ 0”,先将,先将Ri+y*,再,再2(Ri+y*)- y*,也即,也即2Ri+y*。原码恢复余数法可归纳为原码恢复余数法可归纳为:当余数当余数Ri0时时,商商“1”,做,做2Riy*运算运算当余数当余数 Ri0时,商时,商“ 0”,做,做2(Ri +y*) -y*运算运算用用原码原码加减交替法加减交替法:求求| X | / | Y |的的解题步骤:解题步骤: 先将先将余数余数减去减去除数除数得新余数得新余数Ri 若若Ri0:

19、商商“1”,做,做2Riy*运算运算 若若Ri0:商商“0”, 做做2Ri+y*运算运算 再将再将上述过程上述过程重复重复n(除数位数)(除数位数)次次,共,共上上n位商位商 最后最后所得的商和余数即为所得的商和余数即为| X | / | Y | 的商及余数的商及余数 原码不恢复余数法(加减交替法)原码不恢复余数法(加减交替法)原码不恢复余数法算法:原码不恢复余数法算法:XY=R0商商2R Y=R0商商 02R+Y=R 原码加减法可归纳为原码加减法可归纳为:当余数当余数Ri0时时,商商“1”,做,做2Riy*运算运算当余数当余数 Ri0时,商时,商“ 0”,做,做2Ri +y*运算运算例:例:

20、 已知已知: X0101,Y0 110求:【求:【x/y】原?用不恢复余数法解。】原?用不恢复余数法解。 X /Y 原原 0+ (0 101) (0 110)X 原原 1101Y 原原 0 110-Y 补补 1 10 则(则(0 101) (0 110)的原码的原码不恢复余数法不恢复余数法的过程为:的过程为: 11 Y 1 0 1 0 1 1 1 1 余数余数0商商1即即q1=10 1 0 0 Y 1 0 1 0 1 1 1 0余数余数0 商商1即即q2=11 1 0 0 Y 0 1 1 0 0 0 1 0余数余数0商商0即即q3=0 x/y原原 余数为:余数为: 0. 0102-3 1 1

21、解:解:例:例: 已知已知: x0.1011,y0 .1101 ,求【求【x/y】原?用恢复余数及加减交替法解。】原?用恢复余数及加减交替法解。解解: | x | 0 1011 | y |0 1101(1) 恢复余数法解恢复余数法解0 1011 /0 1101的过程为:的过程为:【x/y】原】原0 0 + | x | / | y | y| 补补1 0011 故故 【x/y】原】原=0.1101 余数为余数为:0.01112-故故:x/y原原=0.1101 余数为:余数为: 0. 01112- (2)不恢复余数法解不恢复余数法解0 1011 /0 1101的过程为:的过程为:补码除法补码除法:指

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

23、X,YX,Y同号,做同号,做- -得余数,商为商的符号位,再做得余数,商为商的符号位,再做+ +得得若若X,YX,Y异号,做异号,做+ +得余数,商为商的符号位,再做得余数,商为商的符号位,再做- -得得 若余数与同号,商,后做。若余数与同号,商,后做。 若余数与异号,商,后做。若余数与异号,商,后做。【 X】补】补 【 】补】补【2- 】补】补 【】补【】补, ,【】补【】补, ,【】补【】补/ /【】补的过程【】补的过程为:为:YNX,YX,Y同号?同号?Y商商“1”1”再作再作得得商商“”再作再作, ,同号?同号?商商“”再作再作商商“”再作再作 例:例: 已知:已知: X0.10 ,Y+0.110, 求【求【 XY

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论