定点数乘除运算及实现

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

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

1、定点乘法运算可采用: 原码进行,又有原 码一位乘法和原码两位乘法。 补码进行,也有补码一位乘法和补码两位乘法 阵列乘法器来实现。,2.3 定点乘 除法运算及其实现 定点乘法运算及其实现, 原码一位乘法 运算规则: 被乘数: X原 f .n110 乘 数: Y原 f .n110 则积: X*Y原 =( X Y ) +( X * Y ) 式中: X为被乘数符号, Y为乘数符号。,1 原码乘法,乘积符号的运算法则是:“异或”(按位加)运算得到。 数值部分的运算方法与普通的十进制小数乘法类似。 下面通过一个具体例子从来说明:,例:设A0.1101,B0.1011,则AB的手工运算过程为:,将多数一次相

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

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

4、工作原理: 乘法开始时,“启动”信号使控制触发器Cx置“1”,于是开启时序脉冲T。 当乘数寄存器R1最末位为“1”时,部分积Zi和被乘数X在加法器中相加, 其结果输出至R0的输入端。 一旦打入控制脉冲T到来,控制信号LDR0使部分积右移一位,与此同时,R1也在控制信号LDR1作用下右移一位,且计数器i计数一次。 当计数器i=n时,计数器的溢出信号使触发器Cx置“0”,关闭时序脉冲T, 乘法宣告结束。,原码两位乘法:基本原理类似:只是从最低位开始,每次 取两位乘数与被乘数相乘,得到一次部分 积,与上次部分积相加后右移2。有关原 码两位乘法具体操作过程不再 详细讨论,补码乘法 补码一位乘法, 补码

5、与真值的关系:,证明:,当 Y 0时, Y 0=0,则真值Y (0) 0Y1 Y2 Yn,当 Y 0时, Y 0=1,依补码的定义:,例 已知: N补 1 1101,N补10011,求N补,N补具有 的数值,N补 1 1101 具有的数值为:,解:,N120121122023124,N补10011 具有的数值为:,N124023022121120(13)10, (0.1875)10,由补码与真值转换公式真值:,Y=(0 ),= -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) +

6、+,= (Y1-Y0)*20,+ + (Yn+1-Yn)*2-n,+ (Y2-Y1)*2-1,在最后1位后再补1位,=,例 已知: 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,证明过程:,略,由补码乘法公式及补码与真值的关系得:,X Y补 =

7、,X补Y,=,X补,【(Y1Y0)20(Y2-Y1)2 -1 (Yn+1Yn) 2-n】,=,X补,上式中Yn+1Yn 只有4中情况:,00 0 01 1 10 1 11 0,下面通过例子来熟悉补码一位乘法的操作过程:,+ 0 + - X补 + X补 + 0,例 已知: X0101,Y0 110,用补码一位乘法求(X Y)补,解:用补码实现X Y过程为: ,X补1 011,Y补1 010, Y补 1 0100, 则用补码一位乘法的过程为:,0 0 0 0,0,0 0 0 0,0 0 0 0,X补,0 1 0 1,0 1 0 1 0,0 0 0 0 0,0 0 1 0 1 0,X补,1 0 1

8、1,1 1 0 1 1 0,1 1 1 0 1 1 0,X补0 101,X补,0 1 0 1,0 0 1 1 1 1 0,X Y 补 0. 011110,所以:,实现补码一位乘法的乘法器的逻辑框图如图所示,补码两位乘法:是把补码的一位乘法的两个单步操作和并成一个操作。 即:,【 (Z i+2)补】=,2-2 【 Z i补】+ (Yn+1 +Yn2Y n1) 】 【X 】补,3 阵列乘法器,例:44位不带符号的阵列乘法器逻辑图:,2.3.2 定点除法运算及其实现 除法运算可采用: 原码进行,又有恢复余数法和不恢复余数法 补码进行,采用加减交替法 阵列除法器 1. 原码除法运算:是指用原码表示两数

9、相除,求出原码表示的商 运算规则:设有n位定点小数(定点整数也同样适用): 被除数:原f .n110 除数: 原f .n110 则有商q其原码为: q原(ff)+(0.n110/0.n110),原码除法中据对余数的处理不同,又可分为:恢复余数法和加减交替法,例:X=0.1001,Y=0.1101,手算X/Y的过程为:,恢复余数法的计算过程和手算相似:, 原码恢复余数法,解:符号位为:,1,数码的手算过程为:,最后:,余数:R0.000124,商:Q0.1011,(1) 每次都是由心算来比较余数和除数的大小,余数大时,商1; 余数小时,商0。第一次比较时,余数就是被除数。 (2) 每做一次减法,

10、总是保持余数不动,而除数向右移一位。 (3)最后据符号位运算的结果给商以正确的符号,对上述手算计算过程分析得:,为适应机器运算,需要进行改进: (1) 用减法来比较余数和除数的大小 (2) 除数右移改为余数左移。 (3)定点除法运算必须要求被除数的高n位小于除数,否则益处,下面就通过例子讲一下原码恢复余数法的在计算机的操作过程:,例:X=0.1001,Y=0.1101,用原码恢复余数法求X/Y?,解:, 0.1001/ 0.1101用原码恢复余数的过程为:,/y原,011,(ff)+ | x| / | y|,符号:QS,| x| 补,| Y| 补,| Y| 补,0.1001,0.1101,1.

11、0011,余数0,商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,商即q0=0, y ,0. 1 1 0 1,0. 1 0 0 1,左移1位,1. 0 0 1 0, Y ,1. 0 0 1 1,+| y| 补,0. 0 1 0 1,余数0,商1即q1=1,左移1位,0. 1 0 1 0,- | Y|,+| y| 补,1. 0 0 1 1,1. 1 1 0 1,余数0,商0即q2=0, y ,0. 1 1 0 1,0. 1 0 1 0,左移1位,1. 0 1 0 0, y

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

13、位商 最后所得的商和余数即为| X | / | Y | 的商及余数,分析原码恢复余数法得知: 当余数 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:商“1”,做2Riy*运算 若Ri0:商“0”, 做2Ri+y*运算 再将上述过程重复n(除数位数)次,共上n位商 最后所得的商和余数即为| X | / | Y | 的商及余数, 原码不恢复余数法(加减交替法),原码加减法可归纳为: 当余数Ri0时,商“1”,做2Riy*运算 当余数 Ri0时,商“ 0”,做2Ri +y*运算,例: 已知: X0101,Y0 110求:【x/y】原?用不恢复余数法解。,X /Y 原 0+ (0 101) (0 110),X 原 1101,Y 原 0 110,-Y 补 1 10,则(

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

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