计算机原理与汇编数值运算.ppt

上传人:小飞机 文档编号:6606217 上传时间:2023-11-17 格式:PPT 页数:98 大小:1.65MB
返回 下载 相关 举报
计算机原理与汇编数值运算.ppt_第1页
第1页 / 共98页
计算机原理与汇编数值运算.ppt_第2页
第2页 / 共98页
计算机原理与汇编数值运算.ppt_第3页
第3页 / 共98页
计算机原理与汇编数值运算.ppt_第4页
第4页 / 共98页
计算机原理与汇编数值运算.ppt_第5页
第5页 / 共98页
点击查看更多>>
资源描述

《计算机原理与汇编数值运算.ppt》由会员分享,可在线阅读,更多相关《计算机原理与汇编数值运算.ppt(98页珍藏版)》请在三一办公上搜索。

1、第七章 数值运算,第一节 算术逻辑运算基础,1.原码加减运算2.补码加减运算 两个基本关系式:x+y补=x补+y补(mod M)x-y补=x补+-y补(mod M)由y补求-y补的方法:将y补连同符号位一起求反加1。,一、定点加减运算,例1:y=-0.0110y补=1.1010-y补=0.0110,注意:求一个数的补码:正数时,补码和原码相同;负数时,对原码除符号位外求反加1。,例2:y=0.0111y补=0.0111-y补=1.1001,补码加减运算,补码加、减运算规则,参加运算的操作数用补码表示。符号位参加运算。操作码为加运算时,两数直接相加;当操作码为减运算时,将减数连同符号位一起求反加

2、1,再与被减数相加。运算结果以补码表示。,例1:已知:x=0.1001,y=-0.0110;求 x+y=?,解:x补=0.1001 y补=1.1010 x补 0.1001+y补 1.1010 x+y补 1 0.0011 x+y=0.0011,补码加、减运算举例,例2:已知:x=-0.1001,y=-0.0101;求 x+y=?,解:x补=1.0111 y补=1.1011 x补 1.0111+y补 1.1011 x+y补 1 1.0010 x+y=-0.1110,补码加、减运算举例,例3:已知:x=0.1001,y=0.0110;求 x-y=?,解:x补=0.1001 y补=0.0110-y补=

3、1.1010 x补 0.1001+-y补 1.1010 x-y补 1 0.0011 x-y=0.0011,补码加、减运算举例,例4:已知:x=-0.1001,y=-0.0110;求 x-y=?,解:x补=1.0111 y补=1.1010-y补=0.0110 x补 1.0111+-y补 0.0110 x-y补 1.1101 x-y=-0.0011,补码加、减运算举例,3.反码加减运算,反码加减运算的规则:参加运算的操作数用反码表示。符号位参加运算。当操作码为加运算时,两数直接相加;当操作码为减运算时,将减数连同符号位一起求反与被减数相加。如果符号位产生进位,则在末位加1,即循环进位。运算结果为反

4、码表示。,二、溢出检测,1.采用一个符号位判断,规则:当两个同号数相加,若所得结果符号与两数符号不同,则表明溢出。,设An、Bn分别表示两个操作数的符号;Sn表示结果的符号,则有:溢出=AnBnSn+AnBnSn,2.采用最高有效位的进位判断,方法:两个正数相加,最高有效位有进位,符号位无进位,表明运算结果发生溢出;两负数相加,最高有效位无进位,符号位有进位,表明结果发生溢出。,设Cn表示符号位本身的进位,Cn-1表示最高有效位向符号位的进位;得出:溢出=CnCn-1+CnCn-1=CnCn-1,3.采用变形补码(双符号位)判溢出,正数:两个符号位均为0;00.x1x2xn负数:两个符号位均为

5、1;11.x1x2xn,溢出判断:两数相加,结果符号位为00、11,表示没溢出;结果符号位为01表示正溢出,为10表示负溢出。,OVR,Sn+1,Sn,如果用 Sn+1、Sn 分别表示最高符号位和第二符号位,则采用变形补码溢出检测电路:OVR=Sn+1Sn,三、移位,按操作性质可分为三种类型:逻辑移位、循环移位、算术移位。,1、逻辑移位 只有数码位置的变化,而无数量的变化。左移:低位补0。右移:高位补0。例:A寄存器的初值为 10110101 逻辑右移一位后为 01011010 逻辑左移一位后为 01101010,寄存器两端触发器有移位通路,形成闭合的移位环路。,例:A寄存器的初值为 1001

6、1001,循环右移一位后为 11001100循环左移一位后为 00110011,2、循环移位,数的符号不变,而数值发生变化。左移一位将使数值扩大一倍(乘以2)右移一位则使数值缩小一倍(乘以1/2)算术移位规则:(1)正数:原码、补码、反码左右移位时,空位均补入0(符号不变)。,3、算术移位,例:A寄存器初值:0.0110左移一位:0.1100右移一位:0.0011,(2)负数:原码:符号位不变(为1),空位补0。例:A寄存器的初值为 1.0110 算术左移一位后为 1.1100 算术右移一位后为 1.0011补码:左移后的空位补0,右移后的空位补1。,3、算术移位,例:初值:1.1011,左移

7、一位:1.0110右移一位:1.1101反码:移位后的空位补1。例:初值:1.1011左移一位:1.0111右移一位:1.1101,四、十进制运算,1.进制转换2.直接进行十进制运算3.BCD码的加法运算,五、逻辑运算逻辑运算例:,例(1)逻辑或:X=10100001,Y=10011011,XY=?10100001 X 10011011 Y 10111011,例(2)按位置“1”:,设:A=10010010,将A最低位置“1”;设:B=00000001 10010010 A 00000001 B 10010011 A,例(3):按位清,设:A=10010010,将A最高位清“0”设:B=011

8、11111 10010010 A 01111111 B 00010010 A,例(4):按位测试,设:A=10010010,测A最高位是否为“1”;设:B=10000000 10010010 10000000 10000000结果不全为“0”,表明被测码的被测位为“1”。结果为全“0”,表明被测码的被测位为“0”。,例(5)比较,设:A=10010010,B=10010011,比较A,B内容相同否?10010010 10010011 00000001结果全“0”,则A,B内容相等,否则内容不等。,第二节算术逻辑运算部件ALU,一、加法单元,两个输出量:全加和 i 及向高位的进位Ci+1。,全加

9、器有三个输入量:第 i 位的两个操作数 Ai、Bi 和低位送来的进位 Ci;,全加器框图:,Ci+1,Ci,Bi,Ai,i,全加器的功能表:,全加和 i 及进位 Ci+1 的逻辑表达式:,_ _ _ _ _ _ i=AiBiCi+AiBiCi+AiBiCi+AiBiCi=AiBiCi,用半加器构成的全加器,延迟时间1ty,延迟时间1.5ty,延迟时间1.5ty,_ _ _ _ _ _ i=AiBiCi+AiBiCi+AiBiCi+AiBiCi=AiBiCi,加法器有两种形式:串行加法器和并行加法器。,二、串行加法器和并行加法器,n 位字长的加法器仅有一位全加器,使用移位寄存器从低位到高位串行地

10、提供操作数,分n步进行相加。,(一)串行加法器,(二)并行加法器 全加器位数和操作数位数相同,同时对所有位进行求和。,并行加法器中传递进位信号的逻辑线路称为进位链,三、并行加法器的进位结构,进位线路结构分为:串行进位、并行进位,将整个加法器分组(分级),对组内、组间(级间)分别采用串行或并行进位。,(一)对进位公式的分析,设相加的两个n位操作数为:A=An-1An-2Ai.A0 B=Bn-1Bn-2Bi.B0Ci+1=AiBi+(AiBi)Ci 进位逻辑表达式设:Gi=AiBi 进位产生函数(Carry Generate Function)Pi=AiBi 进位传递函数(Carry Propag

11、ate Function)当Pi=1时,如果低位有进位,本位将产生进位。则:Ci+1=Gi+PiCi,(二)串行进位(行波进位),N位串行进位的并行加法器,(二)串行进位(行波进位),串行进位的逻辑表达式:,最长进位延迟时间为 4+2.5(n-1)ty,与 n 成正比。,C1=G0+P0C0=A0B0+(A0 B0)C0C2=G1+P1C1=A1B1+(A1 B1)C1C3=G2+P2C2=A2B2+(A2 B2)C2 Cn=Gn-1+Pn-1Cn-1=An-1Bn-1+(An-1 Bn-1)Cn-1,(三)并行进位(同时进位、先行进位),C1=G0+P0C0C2=G1+P1C1=G1+P1(

12、G0+P0C0)C3=G2+P2C2=G2+P2(G1+P1(G0+P0C0)C4=G3+P3C3=G3+P3(G2+P2(G1+P1(G0+P0C0)展开整理:,C1=G0+P0C0C2=G1+P1G0+P1P0C0C3=G2+P2G1+P2P1G0+P2P1P0C0C4=G3+P3G2+P3P2G1+P3P2P1G0+P3P2P1P0C0,全部进位输出信号仅由进位产生函数 Gi,进位传递函数 Pi 以及最低位进位 C0 决定,与低位进位无关。,四位并行进位链线路,每位进位延迟时间为,4ty,四位并行进位加法器,将n位加法器分成若干个小组,小组采用并行、组间采用串行的进位结构。例:将16位加

13、法器分成4组,每组4位,组内采用并行进位结构,组间采用串行进位结构。,(四)组内并行、组间串行的进位结构,最高进位的形成时间为(4+32)ty=10 ty如果采用串行进位,最高进位的形成时间为(4+152.5)ty=41.5 ty,(五)组内并行、组间并行的进位结构,组内并行、组间并行的16位加法器,将加法器分成几个小组,每一小组包括几位,采用并行进位结构,小组间也采用并行进位。再引入两个辅助函数 Gi*和Pi*;分别称为组进位产生函数和传递函数。Gi*为本小组产生的进位(与低位小组来的进位无关)。,(五)组内并行、组间并行的进位结构,Pi*为小组进位的传递条件(决定于低位小组进位能否传送至高

14、位小组)。,Gi*和Pi*的逻辑表达式:G0*=G3+P3G2+P3P2G1+P3P2P1G0 P0*=P3P2P1P0G1*=G7+P7G6+P7P6G5+P7P6P5G4 P1*=P7P6P5P4G2*=G11+P11G10+P11P10G9+P11P10P9G8 P2*=P11P10P9P8G3*=G15+P15G14+P15P14G13+P15P14P13G12 P3*=P15P14P13P12,(五)组内并行、组间并行的进位结构,C4=G3+P3G2+P3P2G1+P3P2P1G0+P3P2P1P0C0,组内并行、组间并行进位结构,小组间产生四个进位,C4、C8、C12和C16。,C

15、4=G0*+P0*C0C8=G1*+P1*C4=G1*+P1*G0*+P1*P0*C0C12=G2*+P2*C8=G2*+P2*G1*+P2*P1*G0*+P2*P1*P0*C0C16=G3*+P3*C12=G3*+P3*G2*+P3*P2*G1*+P3*P2*P1*G0*+P3*P2*P1*P0*C0当Gi*、Pi*及C0形成后,C4、C8、C12和C16便可同时产生。,C4、C8、C12和C16已由组间进位线路产生,组内并行进位线路不需要再产生这些进位,将其作适当修改,便可产生小组的本地进位Gi*和小组的传送条件Pi*以及小组内的低3位进位,例:16位加法器采用组内并行、组间并行进位结构的

16、框图。进位形成过程如下:从Ai、Bi、C0输入开始:经过4ty形成C1、C2、C3及全部Gi*、Pi*;又经过2.5ty形成C4、C8、C12、和C16;,最后再经 2.5ty 形成二、三、四、小组内的其余进位 C75、C119、C1513。,最长进位形成时间:(4+2.5+2.5)ty=9ty组间串行:(4+32)ty=10ty完全串行:(4+152.5)ty=41.5ty,1、SN74181算术逻辑单元,简称ALU,具有组内并行进位链,提供了辅助函数G,P供组间进位链使用。,四、组内并行、组间并行进位加法器实例,例:用SN74181和SN74182组成16位分二级同时进位的加法器。,利用并

17、行进位链74182可产生向高一级进位链提供 _ _辅助函数G*、P*,用于位数更长时,组成第三级并行进位链。,2、SN74182(先行进位发生器)提供:组间并行进位信号Cn+x,Cn+y,Cn+z 小组辅助函数:P,G,四、组内并行、组间并行进位加法器实例,16位并行进位ALU结构,第三节定点乘法运算,在计算机中实现乘除法运算的三种方式:软件实现;在 原有ALU的基础上增加一些逻辑线路以实现乘除运算;设置专用的乘除法器。,一、无符号数一位乘,例:x=0.1101 y=0.1011,0.1101 0.1011 1101 1101 0000 1101 0.10001111,计算机计算:将n位乘转化

18、为n次“累加与移位”。每一步只求一位乘数所对应的新部分积,并与原部分积作一次累加,然后移位一次。,无符号数一位乘算法流程图,开始,n位被乘数=Bn位乘数=C,0=A,C0=1?,A+0=A,A+B=A,N,Y,A,C右移一位,重复n次,结束,N,Y,硬件实现无符号数一位乘,0 0 0 0 0 1 0 1 1,+B 1 1 0 1 1 0 1 1,0 1 1 0 1,0 0 1 1 0 1 1 0 1,+B 1 1 0 1,1 0 0 1 1,0 1 0 0 1 1 1 1 0,+0 0 0 0 0,0 1 0 0 1,0 0 1 0 0 1 1 1 1,+B 1 1 0 1,1 0 0 0 1

19、,0 1 0 0 0 1 1 1 1,C0=1,C0=1,C0=0,C0=1,Ca,A,C,例7-12 11011011的运算过程如下:,B=1101,C=1011,1101 1011=10001111,DATA SEGMENTNUM1 DW XXXXHNUM2 DW XXXXHDATA ENDSMULT PROC MOV BX,NUM1;取被乘数 MOV AX,NUM2;取乘数 MOV CX,16;加和移位次数送计数器CX LOP:TEST AX,01H;测试一个乘数位 JE NEXT;乘数位0,转移 ADD DX,BX;乘数位1,被乘数加在部分积上NEXT:RCR DX,1 RCR AX,

20、1;部分积、乘数联合右移一位 LOOP LOP;CX1CX,若CX!=0继续 RET;CX0,已求得乘积返回MULT ENDP,.,软件实现无符号数一位乘,二、带符号数一位乘法,(1)被乘数x符号任意,乘数y符号为正设:x补=xn.xn-1x1 x0 y补=0.yn-1yn-2y1 y0,1.校正法(补码乘法算法的推导),根据补码定义:,x补=2+x=2n+1+x(mod 2)y补=y=0.yn-1yn-2y1 y0 x补y补=2n+1y+xy=2(yn-1y1 y0)+xy(mod 2)2(yn-1y1 y0)=2(mod 2)x补y补=2+xy=xy补(mod 2)即:xy补=x补y补=x

21、补 y=x补(0.yn-1y1 y0),x补=xn.xn-1xn-2x0y补=1.yn-1y1 y0=2+y(mod 2)y=y补-2=1.yn-1y1 y0-2=0.yn-1y1 y0-1x y=x(0.yn-1y1 y0)-xxy补=x(0.yn-1y1 y0)-x补=x(0.yn-1y1 y0)补+-x补=x(0.yn-1y1 y0)补-x补=x补(0.yn-1y1 y0)-x补,(2)被乘数x符号任意,乘数y为负,xy补=x补(0.yn-1y1 y0)-x补yny0:yn=0 不需校正y0:yn=1 需要校正(-x补),(3)当被乘数x和乘数y符号任意,以补码表示:,2.补码乘法比较法

22、布斯(Booth)乘法,运算法则xy补=x补-yn+yn-12-1+yn-22-2+y02-n=x补-yn+(yn-1-yn-12-1)+(yn-22-1-yn-22-2)+(y02-(n-1)-y02-n)=x补(yn-1-yn)+(yn-2-yn-1)2-1+(y0-y1)2-(n-1)+(0-y0)2-n=x补(yn-1-yn)+2-1(x补(yn-2-yn-1)+2-1(x补(yn-3-yn-2)+2-1(x补(y0-y1)+2-1(x补(y-1-y0)设:(y-1=0),xy补=x补(0.yn-1y1 y0)-x补yn,递推公式:,p0补=0p1补=2-1(p0补+(y-1-y0)x

23、补)p2补=2-1(p1补+(y0-y1)x补)pi补=2-1(pi-1补+(yi-2-yi-1)x补)pn补=2-1(pn-1补+(yn-2-yn-1)x补)pn+1补=pn补+(yn-1-yn)x补=xy补,每一步乘法在前次部分积的基础上,根据 yi-2-yi-1(i=1,2n)的值决定对 x补 进行什么操作,然后右移一位,得到新的部分积。重复n步。第n+1步由(yn-1-yn)的值决定对x补的操作但不移位。,参加运算的数用补码表示 符号位参加运算 乘数最低位后面增加一位附加位y-1(初值为0),逐次比较相邻两位并按下列规则运算:,Booth算法:,yi yi-1 yi-1-yi 操 作

24、000 部分积加 0,右移一位 011 部分积加 x补,右移一位 10-1 部分积加-x补,右移一位 110 部分积加 0,右移一位,按上述算法进行n+1步操作(n是不包括符号位在内的字长),第n+1步不移位。移位要按补码的移位规则进行,例7-13 已知X=1011,Y=-1101,用比较法求XY补,解:部分积存放于A寄存器中,初值为0。X补=0,1011,存放于B寄存器中。-X补=1,0101 Y补=1,0011,存放于C寄存器中;附加位C-1(Y-1)置0。,AC C-1说明,0 0 0 0 0 1 0 0 1 1 0 初始态,+-X补1 0 1 0 1 C0C-1=10,部分积+-X补,

25、1 0 1 0 1,1 1 0 1 0 1 1 0 0 1 1 右移一位,+0 0 0 0 0 0 C0C-1=11,部分积+0,1 1 0 1 0,1 1 1 0 1 0 1 1 0 0 1 右移一位,+X补 0 1 0 1 1 C0C-1=01,部分积+X补,0 1 0 0 0,0 0 1 0 0 0 0 1 1 0 0 右移一位,+0 0 0 0 0 0 C0C-1=00,部分积+0,0 0 1 0 0,0 0 0 1 0 0 0 0 1 1 0 右移一位,+-X补1 0 1 0 1 C0C-1=10,部分积+-X补,1 0 1 1 1,1 0 1 1 1 0 0 0 1,XY补=1,0

26、1110001XY=-10001111,三、两位乘简介,两位乘数有四种组合:YiYi-1=00 相当于0X 部分积加 0,右移两位;YiYi-1=01 相当于1 X 部分积加 X,右移两位;YiYi-1=10 相当于2 X 部分积加 2X,右移两位;YiYi-1=11 相当于3 X 部分积加 3X,右移两位。,1.无符号数两位乘法,YiYi-1 CJ 操作0 0 0部分积+0,右移两位,0CJ0 0 1部分积+X,右移两位,0CJ0 1 0 部分积+X,右移两位,0CJ0 1 1 部分积+2X,右移两位,0CJ1 0 0部分积+2X,右移两位,0CJ1 0 1 部分积-X,右移两位,1CJ1

27、1 0 部分积-X,右移两位,1CJ1 1 1 部分积+0,右移两位,1CJ,无符号数两位乘运算规则:,(1)部分积和被乘数采用三个符号位,(2)减 X 的操作是通过加-X补来实现的。右移按补码右移规则(3)当乘数为偶数位n时,乘数的符号位设置两位“00”,做 n/2 次移位,做 n/2+1次加法。当乘数为奇数位n时,乘数符号位设置一位“0”,做n/2+1次加法,n/2+1次移位(最后一次移一位)。,无符号数两位乘的算法:,例:7-14 X=111111,Y=111001,用两位乘求XY,A C CJ说明,0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 初始态,+B 0

28、 0 0 1 1 1 1 1 1 C1C0CJ=010,部分积+X,0 0 0 1 1 1 1 1 1,0 0 0 0 0 1 1 1 1 1 1 0 0 1 1 1 0 0 右移二位,0CJ,+2B 0 0 1 1 1 1 1 1 0 C1C0CJ=100,部分积+2X,0 1 0 0 0 1 1 0 1,0 0 0 1 0 0 0 1 1 0 1 1 1 0 0 1 1 0 右移二位,0CJ,+-B补 1 1 1 0 0 0 0 0 1 C1C0CJ=110,部分积-X,1 1 1 1 0 0 1 0 0,1 1 1 1 1 1 0 0 1 0 0 0 1 1 1 0 0 1 右移二位,1

29、CJ,+B 0 0 0 1 1 1 1 1 1 C1C0CJ=001,部分积+X,0 0 0 1 1 1 0 0 0 0 0 0 1 1 1,2,2,2,补码两位乘法的算法,运算规则如下:,Yi+1 Yi Yi-1 操作0 0 0部分积+0,右移两位0 0 1部分积+X补,右移两位0 1 0 部分积+X补,右移两位0 1 1 部分积+2X补,右移两位1 0 0部分积+2-X补,右移两位1 0 1 部分积+-X补,右移两位1 1 0 部分积+-X补,右移两位1 1 1 部分积+0,右移两位,2.带符号数两位乘,由布斯乘法推出补码两位乘,pi+1补=2-1(pi补+(yi-1-yi)x补)pi+2

30、补=2-1(pi+1补+(yi-yi+1)x补)pi+2补=2-1(2-1(pi补+(yi-1-yi)x补)+(yi-yi+1)x补)=2-2(pi补+(-2yi+1+yi+yi-1),乘数数值位数为偶数n,采用双符号位,做n/2+1步加法,n/2步移位(即:最后一步不移位)。,乘数数值位数为奇数n,采用一个符号位,做 n/2+1步加法及移位,最后一步移一位。部分积和被乘数采用三个符号位。,2.带符号数两位乘,例7-15:已知X=10110,Y=-10101,用补码两位乘求XY补。,X补=0,10110,Y补=1,01011,-X补=1,01010X补B,Y补C,0 A,0 C-1(Y-1),

31、A C C-1说明,0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 初始态,1 1 1 0 1 0 1 0,1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 右移二位,,1 1 1 0 0 1 0 0,1 1 1 1 1 0 0 1 0 0 1 0 1 0 1 右移二位,,+-X补 1 1 1 0 1 0 1 0 C1C0C-1=101,+-X补,1 1 1 0 0 0 1 1,1 1 1,1 0 0 0 1 1 0 0 1 0 1,2,2,+-X补 1 1 1 0 1 0 1 0 C1C0C-1=110,+-X补,+-X补 1 1 1 0 1 0 1 0 C1C0C-1

32、=101,+-X补,XY补=1,1000110010 XY=-0111001110,1,第四节定点除法运算,一、无符号数一位除,1.无符号数恢复余数法,例:10010101000=1001+10/1000,1001,无符号数恢复余数法算法:,(1)做减法试探 X-Y 若:余数符号为0,被除数除数,调整比例因子。若:余数符号为1,被除数除数,商“0”,恢复余数。,(2)被除数(余数)寄存器(A)与商寄存器(C)联合左移一位。,(3)做减法试探,新余数为正,上一次余数除数,够减,商“1”,余数为负,上一次余数除数,不够减,商“0”。恢复原来的余数。(4)重复(2)(3)步骤,直到商的位数=操作数

33、位数。,无符号数恢复余数法算法:,余数的符号与权的处理:(小数除法),(1)让加符号前的商和余数都保持正值,当最后一 步不够减时,应恢复余数(即:当余数为负数时,要加上除数,得到真正的余数),(2)进行了n步除之后,形式上的余数,应乘以2-n 才为真正的余数的值,被除数(余数)采用2位符号位(变形补),被除数(余数):A 商(C),00.1011 0.0000|初态(0)作减法+)11.0011 x+-y补余数 11.1110 为负商0恢复余+)00.1101 0.000|0 数+y 00.1011(1)余数与商左 01.0110 0.00|0 移一位减除数+)11.0011+-y补 余数为

34、00.1001 0.00|01 正,商“1”01.0010 0.0|01(2)余数与商左+)11.0011 移一位减除数 00.0101 0.0|011+-y补余数为 00.1010 0.|011 正,商“1”,x=0.1011,y=0.1101,-y补=1.0011,例:x=0.1011,y=0.1101,求x/y,00.1010 0.|011(3)余数与商左+)11.0011 移一位减除数+-y补余数 11.1101 0.|0110 为负,商“0”+)00.1101 恢复余数+y 00.1010(4)余数与商左 01.0100|0.110 移一位减除+)11.0011 数+-y补余数 00

35、.0111 0.1101 为正,商“1”,商值为:0.1101,x/y的商=0.1101 余数为:0.01112-4x/y=0.1101+0.0111/0.1101 2-4,2.无符号数不恢复余数法(加减交替法),对恢复余数法进行修正,若ri0,商“1”,下一步:ri+1=2ri-y。若ri0,商“0”,恢复余数ri+y,下一步ri+1=2(ri+y)-y=2ri+2y-y=2ri+y,(1)当余数为正,商上“1”,做2ri-y的运算。(2)当余数为负,商上“0”,做2ri+y的运算。,(3)重复(1)、(2),上商n(+1)次,左移n次。,不恢复余数除法规则:,无符号数不恢复余数法流程图,开

36、始,被除数=A、C除数=B,A、C左移一位,A-BA,A0?,重复n-1次?,商1:1=C0,结束,Y,N,Y,N,商0:0=C0,A、C左移一位A+BA,A、C左移一位A-BA,A0?,N,A+BA,Y,无符号数不恢复余数法原理框图,N位加法器,B(除数),控制逻辑,C,A,C0,左移一位,AB/AB,商,an-1,a0,被除数(余数):A 商(C),0 0 0 0 1 0 0 0|初态0 0 0 1 0 0 0|0 A、C左移一位+)1 1 0 1 减除数 1 1 1 0 0 0 0|0 为负,商0,下步左移后+y1 1 0 0 0 0|0 0 A、C左移一位+)0 0 1 1 加除数 1

37、 1 1 1 0 0|0 0 为负,商0,下步左移后+y 1 1 1 0 0|0 0 0 A、C左移一位+)0 0 1 1 加除数 0 0 0 1 0|0 0 1 为正,商1,下步左移后-y,x=00001000,y=0011,-y补=1101,例:x=1000,y=0011,求x/y,被除数(余数):A 商(C),0 0 1 0|0 0 1 0 A、C左移一位+)1 1 0 1 减除数 1 1 1 1|0 0 1 0 为负,商0+)0 0 1 1 恢复余数 0 0 1 0,商值为:0010,余数为:0010,x/y=0010+0010/0011,3.5浮点四则运算及浮点运算器,一、浮点加减运

38、算及实现设有两个浮点数x和yx=2ExMxy=2EyMyMx和My分别为x和y的尾数,Ex和Ey分别为x和y的阶码。,1.对阶阶码:反映了数的小数点位置。,浮点数相加减要求阶码相等,小数点的位置对齐,这个过程称为对阶。求阶差 E=Ex-Ey若E=0,不需对阶。若E0,需对阶,按|E|调整阶码。保留大阶对阶的规则:小阶向大阶看齐。阶码小的尾数向右移位,每右移一位阶码加1,直至阶差为0。,运算步骤,例:两浮点数为 x=0.1101201 y=-(0.1010)211求x+y=?解:x、y以补码表示:,x补=00,01;00.1101 Ex Mx,y补=00,11;11.0110 Ey My,(1.

39、对阶)E补=Ex补-Ey补=00,01+11,01=11,10,即 E=-2,x阶码 y阶码,将x的尾数右移两位,Ex+2,|E|=0,对阶完毕。x补=00,11;00.0011,2.求和/差x补=00,11;00.0011y补=00,11;11.0110,则 Mx+My补 为,00.0011+)11.0110 11.1001,左规:尾数左移,每左移一位,阶码减一,直至尾数符号与尾数第一位不相等。,x+y补=00,11;11.1001尾数左移一位,阶码减一x+y 补=00,10;11.0010 x+y=-0.1110210,3.规格化(1)左规左规条件:运算后结果尾数的符号位与尾数第一位相等。

40、,例:两浮点数:x=0.1101210,y=0.1011201。求x+y=?,经对阶、求和 x+y补=00,10;01.0010右规:将尾数右移一位,阶码加1,x+y补=00,11;00.1001x+y=0.1001211,(2)右规右规条件:运算后结果尾数的两位符号位不等。右规:将尾数右移一位,阶码加1。,右移时被丢掉数位的最高位为0,则舍去;被丢掉数位的最高位为1,则将尾数的末位加1。,例如:对 01.0100210 进行右规,得:00.1010211;对 01.1011201 进行右规,得:00.1110210。补码有一种情况例外:当负数补码被丢掉的数位的最高位为1,其它各位均为0时,此

41、“1”应该舍去。例:对补码表示的负数1.01101000进行舍入(保留小数点后四位有效数字),结果为1.0110。,若舍入后又造成尾数溢出,须再进行右规。,4.舍入(1)0舍1入,(2)恒置1法只要数位被移掉,就在尾数的末位恒置“1”。上例1、01.0100210 右规:00.1011211上例2、01.1011201 右规:00.1101210,4.舍入,设有阶码m位(包括一位符号位),采用补码(或移码)表示,则表数范围为:-2m-1 E 2m-1-1。当 阶码2m-1-1时,称为阶码上溢当 阶码-2m-1时,称为阶码下溢,5.浮点数的溢出判断,设两个浮点数分别为 x=2ExMx,y=2Ey

42、My1、乘法运算:xy=2(Ex+Ey)(MxMy)乘积的阶码为:两数的阶码之和。乘积的尾数为:两数的尾数之积。,二、浮点乘除运算及实现,2、除法运算:,x/y=2(Ex-Ey)(Mx/My)商的阶码为:被除数的阶码减去除数的阶码之差。商的尾数为:被除数的尾数除以除数的尾数所得的商。讨论阶码运算(讨论对移码的运算规则和判定溢出的方法)。,x移与x补:符号位相反,其数值位相同。x移=2n+x-2nx2nx移+y移=2n+x+2n+y=2n+(2n+x+y)=2n+x+y移x移+y移+2n=x+y移(mod2n+1)y补=2n+1+y(整数补码)又y移=2n+y y补=2n+2n+y=2n+y移x

43、移+y补=x+y移(mod2n+1)同理x移+-y补=x-y移,(一)阶码加减运算(移码表示的阶码),执行阶码加减运算,对加数或减数的移码符号位求反再运算,结果就是正确的移码值。,(二)溢出判断阶码采用双符号位,(最高符号位)恒为0。运算结果符号:,01结果为正无溢出00结果为负10上溢11下溢,例:阶码用四位移码表示(包括一位符号位),Ex=+110Ey=+011Ex移=01,110 Ey补=00,011-Ey补=11,101Ex+Ey移=Ex移+Ey补=10,001 上溢Ex-Ey移=Ex移+-Ey补=01,011 正确(+3)当Ex=-110Ey=-011时Ex移=00,010 Ey补=

44、11,101-Ey补=00,011Ex+Ey移=Ex移+Ey补=11,111 结果下溢Ex-Ey移=Ex移+-Ey补=00,101 结果正确(-3),移码采用双符号位 Ex移=01,011 Ey补=11,011-Mx补=1.0110011,例:浮点数相乘,4位阶码(移码表示),8位尾数(用补码表示),(均包括一位符号位)。已知 x=23(0.1001101),y=2-5(-0.1110010),求 xy=?解:x的浮点表示形式 1,011;0.1001101 y的浮点表示形式 0,011;1.0001110,乘法步骤:,阶码相加,Ex+Ey移=Ex移+Ey补,Ex移 01,011Ey补+)11,011Ex+Ey移 00,110,尾数相乘,采用补码两位乘方案。MxMy补规格化处理:MxMy补舍入,设尾数保留8位(包括符号位),采用0舍1入法。MxMy补尾数为 MxMy补=1.0111011。,xy的浮点表示为:0,110;1.0111011xy=2-2(-0.1000101)。,P331 6(1),7(1),10(1)P332 12(1),14(1)下周三交作业,作 业,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号