




已阅读5页,还剩141页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机组成原理,第三章运算方法与运算部件,计算机中完成运算的主要部件就是CPU中的算术逻辑运算单元ALU计算机的运算可以分为:数值运算和非数值运算数值运算的基础是定点与浮点,其中以加法为核心,1.定点加减运算,一、补码加减运算计算机中,常用补码进行加减运算。补码可将减法变加法进行运算。补码运算特点:符号位与数值位一同运算。运算的基本规则:X补+Y补=X+Y补X-Y补=X补-Y补=X补+-Y补由Y补求得-Y补的方法:对Y补(包含符号位)求反且末位加1。,1.X补+Y补=2X0+X+2Y0+Y=2(X0+Y0)+(X+Y)(1)若X0Y0=00,则X补+Y补=X+Y=X+Y补;(2)若X0Y0=01或10,则X补+Y补=2+(X+Y)当X+Y0时,2+(X+Y)2,进位丢失,得:X补+Y补=X+Y=X+Y补;当X+YX+Y-1,22+(X+Y)1此时,X补+Y补=2+(X+Y)=X+Y补(2自然丢失),在模2下,设X补=X0X1X2Xn,Y补=Y0Y1Y2Yn则X补=2X0+X,Y补=2Y0+Y,证明:,2、X补+Y补=X+Y补Y补=X+Y补-X补又X-Y补=X+(-Y)补=X补+-Y补-Y补=X-Y补-X补+得:Y补+-Y补=X+Y补-X补+X-Y补-X补=X+Y+X-Y补-X补-X补=X+X补-X补-X补=0-Y补=-Y补即X-Y补=X补+-Y补=X补-Y补,例1:已知机器字长n=8,X=44,Y=53,求X+Y=?,解:X原=00101100,Y原=00110101X补=00101100,Y补=00110101X补=00101100+Y补=00110101X+Y补=01100001,真值:X+Y=(+1100001)2=+97,例2:已知机器字长n=8,X=-44,Y=-53,求X+Y=?,解:44补=00101100,53补=00110101X补=-44补=11010011+1=11010100,Y补=-53补=11001010+1=11001011X补=11010100+Y补=11001011X+Y补=110011111超出8位,舍弃模值X+Y=(-1100001)2=-97,例3:已知机器字长n=8,X=0.1101,Y=0.0110,求X-Y=?,解:X补=0.1101000,Y补=0.0110000,-Y补=1.1010000X补=0.1101000+-Y补=1.101000010.0111000自然丢失X-Y补=(0.0111000)2,X-Y=(0.0111)2,例4:已知机器字长n=8,X=-0.1101,Y=-0.0110求X-Y=?,解:X补=1.0011000,Y补=1.1010000-Y补=0.0110000X补=1.0011000+-Y补=0.01100001.1001000X-Y补=(1.1001000)2,X-Y=(-0.0111)2,2.溢出的检测,溢出:运算结果超出了计算机所能表示的数据范围。正溢(上溢):运算结果为正而绝对值超出了表示的范围。负溢(下溢):运算结果为负而绝对值超出了表示的范围。定点数的溢出根据数值本身判断。,例:已知机器字长n=8,X=120,Y=10,求X+Y=?,解:X补=01111000,Y补=00001010,X补=01111000+Y补=0000101010000010X+Y补=10000010,X+Y=11111110X+Y的真值=-1111110=(-126)10运算结果超出机器数值范围发生溢出错误。8位计算机数值表达范围:(-128+127),溢出判断规则与判断方法,两个相同符号数相加,其运算结果符号与被加数相反则产生溢出;两个相异符号数相减,其运算结果符号与被减数相反则产生溢出。相同符号数相减,相异符号数相加不会产生溢出。溢出判断方法:进位判断法,双符号位法。,(1)进位溢出判断法SC,两单符号位的补码进行加减运算时,若最高数值位向符号位的进位值C与符号位产生的进位输出值S相同时则无溢出,否则溢出。例:X补=1.101X补=1.110+Y补=1.001+Y补=0.100X+Y补=10.110X+Y补=10.010C=0,S=1有溢出C=1,S=1无溢出X+Y=+0.010即:溢出OVR=SC=1有溢出SC=01正溢;SC=10负溢OVR=SC=0无溢出,(2)双符号位(变形补码)溢出判断法,设第一符号位Sf1,第二符号位Sf2,Sf1Sf2双符号含义:00表示运算结果为正数;01表示运算结果正向溢出;10表示运算结果负向溢出;11表示运算结果为负数。即:溢出OVR=Sf1Sf2=1有溢出OVR=Sf1Sf2=0无溢出左边第一位的Sf1为运算结果的真正符号位。,例1:X=0.1001,Y=0.0101,求X+Y,解:X补=00.1001+Y补=00.0101X+Y补=00.1110两个符号位相同,运算结果无溢出。X+Y=+0.1110,例2:X=-0.1001,Y=-0.0101,求X+Y=?,解:X补=11.0111+Y补=11.1011X+Y补=111.0010丢掉两个符号位相同,运算结果无溢出。X+Y=-0.1110,例3:X=0.1011,Y=0.0111,求X+Y补=?,解:X补=00.1011+Y补=00.0111X+Y补=01.0010两个符号位为01,运算结果正向溢出。,解:X补=11.0100+1=11.0101Y补=00.0111-Y补=11.1001X补=11.0101+-Y补=11.1001X+Y补=110.1110两个符号位10不同,运算结果负向溢出。,例4:X=-0.1011,Y=0.0111,求X-Y补=?,补码加减法运算规则如下:参加运算的操作数用补码表示。符号位与数值位一样参加运算。如果是加法运算,则直接相加如果是减法,那么减数连同符号位一起取反,然后末位加1。运算的结果仍然是补码形式。,移位运算,逻辑移位循环移位算术移位,逻辑移位,特点移位操作对象不存在符号和量值的差别,非数值或无符号数仅限于数码位置的变化规则左移或右移时高位或低位补0移出位被丢弃举例:逻辑右移:0101-0010,循环移位,特点移位操作对象不存在符号和量值的差别,非数值或无符号数仅限于数码位置的变化规则左移或右移时高位或低位补0移出位被置于低位或高位举例:循环右移:0101-1010,移位时,数的符号位不变算术运算数的移位操作会引起数值变化右移一位,相当于带符号的数除以2(乘以1/2)左移一位,相当于带符号的数乘以2对于正数原码、反码和补码均相同,移位时只需要在末端补“0”。对于负数的移位,不同码制的处理不同,算术移位,算术移位,特点移位操作对象存在符号和量值的差别,即:有符号数不仅限于数码位置的变化,内涵是数值扩大或缩小两倍规则决定于编码方式,原码算术移位,规则1.符号位不变2.左移:仅移动量值位,低位补03.右移:仅移动量值位,高位补0,原码符号位不参与移位,只是绝对值移位,其末端补入0例:算术右移运算,原码算术移位,原码例:算术左移运算,原码算术移位,补码算术移位,规则1.符号位参与移位2.左移:低位补03.右移:高位补原有符号位溢出左移、符号位发生改变,问题:算术移位怎样才能保持正确的符号和正确的移位值?,补码右移例:设x=-1011000,则x补=10101000,第一位为符号位。现将其真值x右移,再求出其对应补码,列式如下:,不移位x=-1011000x补=10101000右移一位x=-0101100x补=11010100右移二位x=-0010110x补=11101010,补码算术移位,补码右移:符号位也随之右移且符号位不变例:,补码算术移位,补码左移例:设x=-0010110,则x补=11101010,第一位为符号位。现将其真值x左移,再求出其对应补码,列式如下:,不移位x=-0010110x补=11101010左移一位2x=-01011002x补=11010100左移二位4x=-10110004x补=10101000,补码算术移位,补码左移左移时其末端补入0,若符号位与后一位相同,则数值高位移入符号仍会得到正确的符号;若符号位与后一位不同,在左移时会溢出,会破坏正确的符号位,表示超出数的表示范围为了保持正确符号,往往采用补码变形码,使其有两位或多位符号位,补码算术移位,反码右移:符号位也随之右移且符号位不变,反码算术移位,反码左移左移时其末端补入1,若符号位与后一位相同,则数值高位移入符号仍会得到正确的符号;若符号位与后一位不同,在左移时会溢出,会破坏正确的符号位,表示超出数的表示范围为了保持正确符号,往往采用具有两位或多位符号位的变形码,反码算术移位,已知x补=0.1011,y补=1.1011,求算术左移,逻辑左移、算术右移、逻辑右移后的值。,x算术左移后的值=1.0110(溢出)y算术左移后的值=1.0110 x逻辑左移后的值=1.0110y逻辑左移后的值=1.0110 x算术右移后的值=0.0101y算术右移后的值=1.1101x逻辑右移后的值=0.0101y逻辑右移后的值=0.1101,补码移位举例,逻辑运算,1/0表示真或假,位运算与运算:&,有0即0或运算:|,有1即1非运算:,0-1,1-0异或运算:,同0异1,BCD码,二进制的缺点小数部分在二进制下只能表示成n1*(1/2)+n2*(1/4)+n3*(1/8)+.+nn*(1/2n)的形式造成精度损失十进制数的二进制表示(BCD码)维持十进制的进位数制特点借用四位二进制数的十六个状态组合的其中十个状态来表示十进制数的09方法:8421、2421、余3码、格雷码,BCD码,8421码每位的权值分别为8、4、2、1例如:(16)10表示为000101102421码每位的权值分别为2、4、2、104与8421表示相同,59将高位置1例如:(16)10表示为00011100余3码在8421码基础上加3,各位无权值,BCD码运算,加法进位问题矛盾:4比特的可用表示范围为015,但是BCD码要求逢10进位解决:结果大于等于10,必须加6修正,即人为的产生进位,算术逻辑单元(简称ALU),ALU是一种功能较强的组合逻辑电路。它能进行多种算术运算和逻辑运算。ALU的基本逻辑结构是超前进位加法器,它通过改变加法器的进位产生函数G和进位传递函数P来获得多种运算能力。下面通过介绍SN74181型四位ALU中规模集成电路了介绍ALU的原理。在图中功能表中,“加”表示算术加,“+”表示逻辑加。它能执行16种算术运算和16种逻辑运算,M是状态控制端,M=H,执行逻辑运算;M=L执行算术运算。S0S3是运算选择端,它决定电路执行哪种算术运算或逻辑运算。,常用组合逻辑,常用组合逻辑,三态门“三态”是指电路可以输出正常的0/1逻辑电平,也可以处于高阻态,取决于输入和控制信号。为高阻态时,“0”和“1”的输出极都截止,相当于与所连接的线路断开,便于实现从多个数据输入中选择其一,当三态控制端/G=0,实现非运算逻辑Y=/A当/G=1,电路输出呈高阻Y=Z,常用组合逻辑,三态门构建的总线,例如,当控制信号/G1为低电平,/G2和/G3为高电平时,三态门的输入A被送到总线上,另外两个三态门的输出处于高阻态。,ABC,/G1/G2/G3,总线,011,半加器,不考虑进位输入时,两数码Xn,Yn相加称为半加器。,全加器,若考虑低位进位输入Cn-1相加,则称为全加器。,一位全加器真值表如右,其中:Xn为被加数,Yn为加数,Cn-1为低级进位信号,Fn为和,Cn为本级向上进位信号。,00110,01010,10010,11111,全加器,全加器,化简可得:Fn=XnYnCn-1Cn=XnYn+(XnYn)Cn=XnYn+(XnYn)Cn-1,半加器与全加器,半加器:Hn=XnYn全加器:Fn=XnYnCn-1Cn=XnYn+(XnYn)Cn-1,Xn,Yn,Hn,/Fn,Cn-1,Cn,串行加法器,步骤加数最低位相加保存求和结果和进位加数右移一位,跳转到第一步特点仅需一位全加器需要N个周期完成N位加法运算,并行加法器,全加器数目=操作数(加数)的位数N个全加器特点同时(同一周期)执行各位的加法运算,并行加法器,缺点逐位完成的进位运算影响求和过程最坏情况下接近串行加法器的性能即1周期=N个加法/进位延迟例如:1111+0001结论并行加法器的性能决定于进位机制的设计,并行加法器的进位链,进位函数串行进位并行进位混合方式,进位函数,根据各位进位的形成条件,可分别写出Ci的逻辑表达式:C1=X1Y1+(X1Y1)C0=G1+P1C0其中:Gi=XiYi称为进位产生函数Pi=XiYi称为进位传递函数Gi的意义是:当XiYi均为“1”时定会产生向高位的进位;Pi的意义是:当Xi和Yi中有一个为“1”时,若同时低位有进位输入,则本位也将向高位传送进位。,串行进位,串行进位,缺点逐位完成的进位运算影响求和过程最坏情况下接近串行加法器的性能即1周期=N个加法/进位延迟例如:1111+0001优点实现简单:n-1根进位输入/输出连线,并行进位,根据X0.n-1,Y0.n-1,C0直接/同时确定各位对应的全加器的进位输入消除Cn+1对Cn的依赖关系,四位并行进位加法器,并行进位加法的特点,并行加法进位的优缺点:运算速度快增加了实现复杂度(硬件逻辑电路)可能突破输入信号的扇入系数结论:实现全字长的并行进位不可行对策:分组计算和进位机制,组内并行、组件串行,组内并行、组件并行,G0*=f(G0,G1,G2,G3,P1,P2,P3)P0*=g(P0,P1,P2,P3),ALU举例,ALU是一种功能较强的组合逻辑电路。它能进行多种算术运算和逻辑运算。ALU的基本逻辑结构是超前进位加法器,它通过改变加法器的进位产生函数G和进位传递函数P来获得多种运算能力。下面通过介绍SN74181型四位ALU中规模集成电路了介绍ALU的原理。,ALU结构,全加器与函数发生器的组合丰富的控制信号和求值逻辑复合的算术、逻辑运算功能,74181的控制信号,M=1:逻辑运算(屏蔽Ci,打断进位链)M=0:算术运算(不屏蔽Ci)S3.0:函数发生器功能选择,74181功能,表中的“加”表示算术加,“+”表示逻辑加。能执行16种算术运算和16种逻辑运算,M是状态控制端,M=H,执行逻辑运算;M=L执行算术运算。S0S3是运算选择端,它决定电路执行哪种算术运算或逻辑运算。注解:正逻辑表示高电平为1,负逻辑表示低电平为1,74181引脚,74181的正负逻辑,74181内部电路,并行进位ALU,用四片74181电路可组成16位ALU。如下图片内进位是快速的,但片间进位是逐片传递的,因此总的形成时间还是比较长的。如果把16位ALU中的每四位作为一组,用类似位间快速进位的方法来实现16位ALU(四片ALU组成),那么就能得到16位快速ALU。推导过程如下:,与前面讲过的一位的进位产生函数Gi的定义相似,根据四位一组的进位产生函数GN为“1”的条件,可以得到GN的表达式为:GN=G3+P3G2+P3P2G1+P3P2P1G0与前面讲过的一位的进位传递函数Pi的定义相似,根据四位一组的进位传递函数PN为“1”的条件,可以得到PN的表达式为:PN=P3P2P1P0,由式可知,只要74181型ALU能提供输出GN,PN那么就可用3个与或非门和4片ALU相连,这样就能实现16位快速ALU。实现2.33、2.34、2.35式的逻辑电路就成为超前进位扩展器(74182芯片),图3.1是它的逻辑电路图,图中将PNi、GNi分别用Pi、Gi表示。图中P、G输出可用于把4组16位快速ALU扩展成64位快速ALU。图2.18画出了用74181和74182芯片构成的16位快速ALU。,图3.1与7418型ALU连用的超前进位产生电路,定点乘法运算,在计算机中实现乘除法运算,有三种方式:(1)软件实现:在低档微机中无乘除指令,只能用乘法或除法子程序实现。(2)在原有实现加减运算的ALU的基础上增加一些逻辑线路以实现乘除运算。(3)设置专用的乘除法器:主要用于要求快速乘除运算的机器中。,手工乘法:设X=0.1101Y=0.1011求XY=?0.11010.101111011101000011010.10001111XY=0.10001111,一、无符号数一位乘,+,错位相加:加法运算是根本各位乘积结果所需加法运算次数不同,MxN阵列乘法器,由于计算机的局限性,多位数的乘法要执行多次加法而且要浪费大量的器件,因此在计算机中乘法运算采用的方法是:累加与移位相结合,R,由于计算机的局限性,多位数的乘法要执行多次加法而且要浪费大量的器件,因此在计算机中乘法运算采用的方法是:将n位乘转换成n次“累加与移位”,也就是每一步只求一位乘数所对应的新部分积,并与原部分积作一次累加,然后右移一次。计算机内实现原码一位乘:无符号数一位乘的算法流程框图为下图:其中:图中使用了三个寄存器A、B和CB用来存放被乘数,C存放乘数。A初值为0,然后存放部分积,最后存放乘积高位,开始,N位被乘数BN位乘数C,0A,C0=1?,A+BA,A+0A,A、C右移一位,重复n次,结束,Y,N,N,Y,设X=1101Y=1011求XY=?B(被乘数)C0AC(乘数)C0AC(乘数)000001011C01B110101101001101101C01B110110011010011110C000000001001001001111C01B110110001010001111,1101,0000,0,1011,初始状态,第一节拍,第二节拍,第三节拍,第四节拍,1101101110001111,硬件实现无符号数一位乘软件实现无符号数一位乘可用子程序实现乘法运算。算法仍然是将乘法化为多次累加和移位二、带符号数一位乘定点原码一位乘的方法和无符号数的方法一样。实现方法是将符号位与数值位分别处理一般带符号数的运算用补码比较方便,可以先讨论论补码一位乘的算法。,原码一位乘法的运算规则,设x=xf.x1x2xn,y=yf.y1y2yn,乘积为P,乘积的符号位为Pf,则求|P|的运算规则如下:被乘数和乘数均取绝对值参加运算,符号位单独考虑。被乘数取双符号,部分积的长度同被乘数,初值为0。从乘数的最低位yn开始判断,若yn=1,则部分积加上被乘数|x|,然后右移一位;若yn=0,则部分积加上0,然后右移一位。重复,判断n次。,原码一位乘法例题,例已知X=0.1101,Y=-0.1011,用原码一位乘法求XY原。解:|X|=00.1101(取双符号位),|Y|=0.1011(取单符号位),部分积乘数yn0000000.1011+X001101001101右移1位00011010.1011(丢失)+X001101010011右移1位001001110.101(丢失)+0000000001001右移1位0001001110.10(丢失)+X001101010001右移1位001000111101(丢失)乘积高位乘积低位,校正法设X补=X0X1X2Xn,Y补=Y0Y1Y2Yn(1)当Y0,即Y0=0时,X补Y补=X补Y=XY补(2)当Y0,即Y0=1时,则Y补=2+Y,Y=Y补-2=1Y1Y2Yn2=0Y1Y2Yn-1XY=X(0Y1Y2Yn)X则XY补=X补(0Y1Y2Yn)+-X补,定点补码一位乘-校正法,校正法定点补码一位乘的规律,(1)乘数Y的符号位不参加运算,用X补乘上Y补的数值位。(2)若Y为负数,则对求得的积再做一次加-X补的校正。(3)结果的符号由运算结果得出。,例1X=-0.1101,Y=+0.1011,求XY=?X补=11.0011,Y补=0.1011,高位部分积低位部分积/乘数操作说明00.00001011开始部分积为0,判断乘数末位+)11.0011乘数最低位为1,+X补11.001111.100111011(丢掉)右移部分积和乘数,判末位+)11.0011乘数最低位为1,+X补10.110011.011001101(丢掉)右移部分积和乘数,+)00.0000乘数最低位为0,+011.011011.101100110(丢掉)右移部分积和乘数,计数+)11.0011乘数最低位为1,+X补10.111011.011100011(丢掉)右移部分积和乘数,计数X*Y补=11.01110001,XY=-0.10001111,例2X=-0.1101,Y=-0.1011,求XY=?,X补=11.0011,Y补=11.0101,-X补=00.1101高位部分积低位部分积/乘数操作说明00.00000101开始部分积为0,判末位+)11.0011乘数最低位为1,+X补11.001111.100110101(丢掉)右移部分积和乘数,+)00.0000乘数最低位为0,+011.100111.110011010(丢掉)右移部分积和乘数,+)11.0011乘数最低位为1,+X补10.111111.011111101(丢掉)右移部分积和乘数,+)00.0000乘数最低位为0,+011.011111.101111110(丢掉)右移部分积和乘数,,XY=11.10111111,Y为负数,对求得的积需再做一次加-X补的校正。-X补=00.1101X+Y补=11.10111111+00.1101=00.10001111所以:XY=+0.10001111,X=-0.1101,Y=-0.1011,求XY=?,比较法(Booth法)这种方法不用区分乘数符号的正负,而且让乘数符号位也参加运算。运算规则如下:(1)参加运算的数用补码表示;(2)符号位参加运算;(3)被乘数一般取双符号位,参加运算,部分积初值为0;(4)乘数取单符号位(5)乘数末位增设附加位Yn+1,且初值为0;(6)逐次比较相邻两位并按Yn+1-Yn的结果运算.(7)移位按补码右移规则进行,即右移过程中符号位也随着右移并且符号位保持不变;但第n+1步不再移位,仅根据Y0和Y1的比较结果作相应的运算即可。,开始,N位被乘数B,0AN位乘数C,0C-1,C0C-1=?,A-BA,A+BA,A、C右移一位,重复n次,结束,Y,N,=01,=10,A+0A,=00或11,例:设X补=0.1101,Y补=1.0110,求XY=?,加法器和被乘数采用双符号位。-X补=11.0011高位部分积低位部分积/乘数附加位操作说明00.000010110000.0000010110YnYn+1=00,右移部分积和乘数一位+11.0011YnYn+1=10,+-X补11.001111.1001101011右移部分积和乘数一位11.1100110101YnYn+1=11,右移部分积和乘数一位+00.1101YnYn+1=01,+X补00.100100.0100111010右移部分积和乘数一位+11.0011YnYn+1=10,+-X补11.01111110最后一次不右移XY补=11.01111110,XY=-0.10000010,3.4定点除法运算,一、无符号数一位除运算和定点原码的乘法一样,两个原码数相除,通常有恢复余数法和不恢复余数法.1.无符号数恢复余数法在计算机中实现除法运算,就要解决如何判断够减与否的问题,可用2种方法:(1)设置一个比较线路,专门用来比较被除数(余数)与除数的大小。(2)直接作减法试探。,开始,被除数A、C除数B,A0,商1,00100010A、C左移一位B1101减除数A011110010A0,不够减商0,恢复余数B0011加除数0010,例1用恢复余数法计算:X=00001000,Y=0011,求X/Y。-Y补1101,商,余数,对于小数来说,运算规则:第一次做减法即-B补,用来判别溢出的情况当某一次求商,它减得的差值为负,本次商上0,同时把除数加到差上,恢复余数为原来得正值,然后再左移。当某一次求商,减得的差值为正,就没有恢复余数的操作,上商为1,余数左移一位。注意余数一般是通过n次左移后得出的结果,那么真正的结果应该是这个数2n,例3.38假设X=0.1011,Y=0.1101,求X/Y。解:-Y补=11.0011,取双符号位,-Y用+-Y补取代。得出:X/Y=0.1101余数=0.01112-4这种方法的缺点是:当某一次-Y的差值为负时,要多一次+Y恢复余数的操作,降低了执行速度,又使控制线路变得复杂,因此在计算机中很少采用。计算机中普遍采用的是不恢复余数的除法方案,又称之为加减交替法。,当余数为正时,商上1,求下一位商的办法是余数左移一位,再减去除数;当余数为负时,商上0。求下一位商的办法是余数左移一位,再加上除数。如果最后一次上商为0,而又需得到正确余数则在这最后一次仍需恢复余数。,其处理思想是:先减除数后判断,如减后发现不够减,则在下一步改作加除数操作。这样操作步骤固定易于编程。商的符号:Qf=xfyf,商的值:|Q|x|/|y|其运算规则:(1)符号位不参与运算,并要求|X|Y|;(2)取双符号位表示,先用被除数减去除数:余数为正时,商上1,余数左移一位,再减去除数;余数为负时,商上0,余数左移一位,再加上除数;(3)当第n+1步余数为负时,需恢复余数,再加上除数,但不移位,以保持余数为正。,101,2.无符号数不恢复余数法,开始,被除数A、C除数B,A0?,A、C左移一位A+BA,重复n-1次?,结束,Y,N,A、C左移一位,ABA,Y,N,商0:0C0,商1:1C0,A、C左移一位A-BA,A0?,N,A+BA,对于整数而言,AC操作说明00001000初始状态00010000A、C左移一位B1101减除数A0,商1,下步左移后B00100010A、C左移一位B1101减除数A011110010A0,商0,恢复余数BB0011加除数0010,例1用不恢复余数法计算:00001000/0011除数0011B;被除数放到A、C中除数的补码-B1101,余数,对于小数来说,运算规则:第一次做减法即-B补,用来判别溢出的情况当某一次求商,它减得的差值为负,本次商上0,然后左移,并且加上除数Y补。当某一次求商,减得的差值为正,上商为1,余数左移一位,然后-Y补。注意余数一般是通过n次左移后得出的结果,那么真正的结果应该是这个数2n如果最后一次的余数为负,正确的余数应为Y恢复后的正余数2n。用不恢复余数除法完全可以代替恢复余数除法,且n位数除以n位数,只用做n1次加减法,n次移位就可以了,缩短了除法时间。,被除数(余数)A商C操作说明00101100000初始状态)110011+Y补11111000000不够减,商上011110000000左移)001101+Y00100100001够减,商上101001000010左移)110011+Y补00010100011够减,商上100101000110左移)110011+Y补11110100110不够减,商上011101001100左移)001101+Y00011101101够减,商上1,例2X=0.1011,Y=0.1101,求X/Y=?-Y补=11.0011,商,余数,X/Y=0.1101余数0.01112-4,例:设X=0.100,Y=-0.101,用加减交替法求X/Y原。-|Y|补=11.011,计算过程如右:,001000000开始情形11011+-|Y|补111110000余数为负,商上0111100000左移00101+|Y|补000110001余数为正,商上1001100010左移11011+-|Y|补000010011余数为正,商上1000100110左移11011+-|Y|补111010110余数为负,商上000101最后一步余数为负时需00010+|Y|补得到正确的余数,被除数(余数R)(被除数)(商)操作说明,余数商,+)+)+)+)+),注意:余数与被除数同号,3.软件实现无符号数除法在无除法指令的机器中,可用子程序实现除法运算。二、带符号数一位除实现符号数一位除的一种方法是:将被除数和除数的绝对值按无符号数除法得到商及余数;若两数异号,商符取负,否则取正;余数符号与被除数符号相同。一般符号数用补码表示,所以我们直接用补码进行进行除法运算。补码一位除(补码不恢复余数法)为:,参加运算的数用补码表示,符号位参加运算,除数与被除数均用双符号补码表示。被除数与除数同号,求商时用被除数高位部分减去除数;被除数与除数异号,被除数高位部分加上除数。若余数与除数同号,上商1,余数左移一位减去除数;若余数与除数异号,上商0,余数左移一位加上除数。注意:余数左移加上或减去除数后就得到了新余数。采用校正法包括符号位在内,应重复3步骤n+1次。,商的校正原则。(采用末位恒置“1”的方法)当刚好能除尽时(即运算过程中任一步余数为0),如果除数为正,则商不必校正,若除数为负,则商需要校正,即加2-n进行修正。不能除尽时,如果商为正,则不必校正;若商为负,则商需要加2-n进行修正。余数的校正原则。若商为正,当余数与被除数异号时,则应将余数加上除数进行修正才能获得正确的余数。若商为负,当余数与被除数异号时,则余数需减去除数进行校正。商的符号。如果第一步操作不发生溢出,得到的就是正确的商符。,例:已知X=0.100,Y=-0.101,用补码一位不恢复余数除法求X/Y补。解:X补=0.100,Y补=11.011,-Y补=00.101,001000000开始情形11011X和Y异号,Y补+Y补111110001余数与Y同号,商上1111100010左移00101+-Y补000110010余数与Y异号,商上0001100100左移11011+Y补000010100余数与Y异号,商上0000101000左移11011+Y补111011001余数与Y同号,商上1,被除数(余数R)(被除数)(商)操作说明,余数商,+)+)+)+),例:已知X=0.100,Y=-0.101,用补码一位不恢复余数除法求X/Y补。解:X补=0.100,Y补=11.011,-Y补=00.101,不能除尽,商为负,需校正:X/Y补=1.001+0.001=1.010余数与被除数异号,需校正:余数r补=(1.101+0.101)*2-3=0.010*2-3(余数与被除数同号),1111000000开始情形11011X和Y异号,Y补+Y补111110001余数与Y同号,商上1111100010左移00101+-Y补000110010余数与Y异号,商上0001100100左移11011+Y补000010100余数与Y异号,商上0000101000左移11011+Y补111011001余数与Y同号,商上1,被除数(余数R)(被除数)(商)操作说明,余数商,+)+)+)+),例:已知X=-0.0100,Y=0.1000,用补码一位不恢复余数除法求X/Y补。解:X补=11.1100,Y补=00.1000,-Y补=11.1000,不能除尽,商为负,需校正:X/Y补=1.001+0.001=1.010余数与被除数异号,需校正:余数r补=(1.101+0.101)*2-3=0.010*2-3(余数与被除数同号),定点数和浮点数,1.定点数定点数是指小数点固定在某个位置上的数据,一般有小数和整数两种表示形式。定点小数是把小数点固定在数据数值部分的左边,符号位的右边;整数是把小数点固定在数据数值部分的右边。我们在前面讨论的数据都是定点数。2.浮点数浮点数是指小数点位置可浮动的数据,通常以下式表示:N为浮点数,M为尾数,E为阶码,R称为“阶的基数(底)”,而且R为一常数,一般为2、8或16。,N=MRE,数值数据的定点、浮点表示法1、定点表示法约定机器中所有数据的小数点位置固定不变。用定点表示法表示的数称为定点数。(1)定点小数(纯小数):小数点在数值最高有效位之前,符号位之后。X=X0.X1X2Xn,符号位.,尾数,范围:2-nX1-2-n,(2)定点整数:小数点固定在数的最低位之后。X=X0X1X2Xn.范围:1X2n-1,(1)浮点数的表示格式,浮点数的机内表示一般采用以下形式:MSEM1位n+1位m位MS是尾数的符号位,设置在最高位上。E为阶码,有n+1位,一般为整数,其中有一位符号位,设置在E的最高位上,用来表示正阶或负阶。M为尾数,有m位,由MS和M组成一个定点小数。MS=0,表示正号,MS=1,表示负号。,数符,阶码,尾数值,移码或补码表示,补码或原码表示,(2)浮点数的规格化,为了保证数据精度,尾数通常用规格化形式表示:当R=2,且尾数值不为0时,其绝对值应大于或等于(0.5)10。对非规格化浮点数,通过将尾数左移或右移,并修改阶码值使之满足规格化要求。尾数为原码表示时,无论正负应满足d-1正数的尾数形式为0.1负数的尾数形式为1.0,例1.将下列十进制数表示成浮点规格化数,阶码4位(含符号),分别用补码和移码表示;尾数6位(含符号),用补码表示。24/512-24/512解:24/512=(+110002-9)2=(+0.110002-4)2其补码表示为0110011000其阶码用移码表示为0010011000-24/512=(-110002-9)2=(-0.110002-4)2其补码表示为1110001000其阶码用移码表示为0010001000,例2.设某机器用32位表示一个实数,阶码部分8位(含1位阶符),用定点整数补码表示;尾数部分24位(含数符1位),用规格化定点小数补码表示,基数为2。求X=256.5的浮点表示格式。解:X=(256.5)10=(+100000000.1)2=(+0.1000000001x2+9)28位阶码为:(+9)补=0000100124位尾数为:(+0.1000000001)补=0.10000000010000000000000所求256.5的浮点表示格式为:00000100110000000010000000000000用16进制表示此结果则为:(04C02000)16,(3)IEEE754浮点数标准,根据IEEE754国际标准,常用的浮点数有两种格式:(1)单精度浮点数(32位),阶码8位,尾数24位(内含1位符号位)。(2)双精度浮点数(64位),阶码11位,尾数53位(内含1位符号位)。,:浮点数的符号位,1位,0表示正数,1表示负数。:尾数,23位,用小数表示,小数点放在尾数域的最前面。:阶码(8位),阶符采用隐含方式,即采用移码方式来表示正负指数。,移码方法对两个指数大小的比较和对阶操作都比较方便,因为阶码域值大者其指数值也大。采用这种方式时,将浮点数的指数真值e变成阶码时,应将指数e加上一个固定的偏移值127(01111111),即e127.IEEE754标准中,一个规格化的32位浮点数X的真值表示为X(1)s(1.)2127e127一个规格化的64位浮点数X的真值为X(1)s(1.)21023e1023其中尾数域所表示的值是1.M。因为规格化的浮点数的尾数域最左位(最高有效位总是1,故这一位经常不予存储,而认为隐藏在小数点的左边),例1.若浮点数x的754标准存储格式为(41360000)16,求其浮点数的十进制数值。解:将16进制数展开后,可得二进制数格式为,指数e=阶码-127=10000010-01111111=00000011=(3)10包括隐藏位1的尾数1.M=1.01101100000000000000000=1.011011X=(-1)s1.M2e=+(1.011011)23=+1011.011=(11.375)10,例2.将(20.59375)10转换成754标准的32位浮点数的二进制存储格式。解:,首先分别将整数和分数部分转换成二进制数:20.59375=10100.10011然后移动小数点,使其在第1,2位之间10100.10011=1.01001001123e=4s=0,E=4+127=131,M=010010011最后得到32位浮点数的二进制存储格式为:01000001101001001100000000000000=(41A4C000)16,例3.写出十进制数(-5)10的754编码。解:,(-5)10=(-101)2在IEEE754中规格化表示为1.0122s=1,E=2+127=129,M=01IEEE754编码为:11000000101000000000000000000000,(4)浮点数的表示范围,设浮点数共n位,其中尾数n1位,阶码n2位,用原码表示时阶码,表示范围:尾数,表示范围:浮点数最大值:最小值:绝对值最小值:,(5)溢出处理,尽管浮点表示能扩大数据的表示范围,但浮点机在运算过程中,仍会出现溢出现象。溢出处理(一个数的大小超出了表示范围)浮点数范围是由阶码决定的。当一个浮点数阶码大于机器的最大阶码时,称为上溢;小于最小阶码时,称为下溢。依尾数正、负决定是正溢出还是负溢出。尾数溢出:上(正)溢、下(负)溢。右规处理阶码溢出:上溢需停机进行出错处理下溢数据按零处理,下面以阶码占3位,尾数占5位(各包括1位符号位)为例,来讨论这个问题。图中,“可表示的负数区域”和“可表示的正数区域”及“0”,是机器可表示的数据区域;上溢区是数据绝对值太大,机器无法表示的区域;下溢区是数据绝对值太小,机器无法表示的区域。若运算结果落在上溢区,就产生了溢出错误,使得结果不能被正确表示,要停止机器运行,进行溢出处理。若运算结果落在下溢区,也不能正确表示之,机器当0处理,称为机器零。一般来说,增加尾数的位数,将增加可表示区域数据点的密度,从而提高了数据的精度;增加阶码的位数,能增大可表示的数据区域。,当一个浮点数的尾数为0(不论阶码是何值),或阶码的值比能在机器中表示的最小值还小时,计算机都把该浮点数看成零值,称为机器零。同一个浮点数的表示方法不是唯一的如:11.01也可以表示成0.011012-3,0.11012-2,(6)数的定点表示与浮点表示的比较,浮点表示比较定点表示的数的范围大。如用同样位数:16位定点表示:0.00010.1111其绝对值变化范围为215(1215)1浮点表示:阶码为四位,尾数为十二位,各含一位符号,其绝对值范围为2721127(1211)所以定点表示:范围为2151浮点表示:范围为21827当然为了提高浮点数的精度,必须采用比定点数长的位数,以增加尾数的长度。,浮点数的表示及处理较为复杂。浮点数要包含二个部分阶码及尾数,可以采用不同编码制。浮点数要规格化及溢出处理都比定点数复杂。浮点数运算过程也比定点数复杂。加减法时,要先对阶,使小数点位置对齐,然后再运算,运算完毕要规格化及溢出处理。乘除法:要阶码进行加减法,尾数相乘、除,运算完毕再要规格化及溢出处理。,2、浮点表示法把字长分成阶码和尾数两部分:N=RE.SR基数,E阶码,S尾数,用浮点表示法表示的数称为浮点数。格式通常为:,阶符,尾符,阶码值,尾数值,通常,阶码为补码或移码定点整数,尾数为补码或原码定点小数。,设X=23(+0.10101),(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司员工安全教育培训题及答案
- (2025)企业合同法律风险防范培训试题及参考答案
- 智慧政务面试题目及答案
- 教师工作计划个人初中(5篇)
- AIoT技术市场前景展望
- 2025年钻探招聘考试题目及答案
- 食物等级考试题及答案
- 2025年考研数学二真题及答案
- 2025年山西省政府采购评审专家考试题库附含答案
- 2025年山东药品食品职业学院辅导员招聘考试笔试备考题库及答案
- GB/T 6344-2008软质泡沫聚合材料拉伸强度和断裂伸长率的测定
- GB/T 39201-2020高铝粉煤灰提取氧化铝技术规范
- GB/T 3836.4-2021爆炸性环境第4部分:由本质安全型“i”保护的设备
- GB/T 20801.6-2020压力管道规范工业管道第6部分:安全防护
- GB/T 19355.2-2016锌覆盖层钢铁结构防腐蚀的指南和建议第2部分:热浸镀锌
- 核心素养视角下教师专业发展课件
- 企业信用信息公告系统年度报告模板:非私营其他企业
- 施工员钢筋工程知识培训(培训)课件
- 质量管理体系审核中常见的不合格项
- 共用水电费分割单模板
- 《阿房宫赋》全篇覆盖理解性默写
评论
0/150
提交评论