计算机组成原理第三章运算方法与运算部件计算机中完成运算的主要部件就是CPU中的算术逻辑运算单元ALU计算机的运算可以分为:数值运算和非数值运算数值运算的基础是定点与浮点,其中以加法为核心1.定点加减运算一、补码加减运算计算机中,常用补码进行加减运算。补码可将减法变加法进行运算。补码运算特点:符号位与数值位一同运算。运算的基本规则:[X][X]补补+[Y]+[Y]补补=[X+Y]=[X+Y]补补[X-Y][X-Y]补补=[X]=[X]补补-[Y]-[Y]补补=[X]=[X]补补+[-Y]+[-Y]补补由[Y][Y]补补求得[-Y][-Y]补补的方法:对[Y][Y]补补(包含符号位)求反且末位加1。1.[X]补+[Y]补=2·X0+X+2·Y0+Y=2(X0+Y0)+(X+Y)(1)若X0Y0=00,则[X][X]补补+[Y]+[Y]补补==X+Y=[X+Y][X+Y]补补;(2)若X0Y0=01或10,则[X][X]补补+[Y]+[Y]补补==2+((X+Y)当X+Y>0时,2+((X+Y)>2,进位丢失,得:[X][X]补补+[Y]+[Y]补补==X+Y=[X+Y][X+Y]补补;当X+Y<0时,[X][X]补补+[Y]+[Y]补补==2+((X+Y)=[X+Y][X+Y]补补;(3)若X0Y0=11,则[X][X]补补+[Y]+[Y]补补=4=4+((X+Y)=2+[2+((X+Y)] 0>X+Y≥-1,∴2>2+(X+Y)≥1此时,此时,[X][X]补补+[Y]+[Y]补补==2+(X+Y)=[X+Y][X+Y]补补(2自然丢失)在模在模22下下,,设[X]补=X0X1X2…Xn,[Y]补=Y0Y1Y2…Yn则[X]补=2·X0+X,[Y]补=2·Y0+Y证明:2、 [X]补+[Y]补=[X+Y][X+Y]补补∴[Y]补=[X+Y][X+Y]补补-[X]-[X]补补……①……①又 [X-Y]补=[X+(-Y)]补=[X]补+[-Y]补∴[-Y]补=[X-Y][X-Y]补补-[X]-[X]补补……②……②①①+②+②得:得:[Y]补+[-Y]补=[X+Y][X+Y]补补-[X]-[X]补补+[X-Y][X-Y]补补-[-[X]X]补补=[X+Y+X-Y][X+Y+X-Y]补补-[X]-[X]补补-[X]-[X]补补=[X+X][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]原=00110101[X]补=00101100,[Y]补=00110101[X]补=00101100+[Y]补=00110101[X+Y]补=01100001真值:X+Y=(+1100001)2=+97例2:已知机器字长n=8,X=-44,Y=-53,求X+Y=?解:[44]补=00101100,[53]补=00110101[X]补=[-44]补=11010011+1=11010100,[Y]补=[-53]补=11001010+1=11001011[X]补=11010100+[Y]补=11001011[X+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.1010000[X]补=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.0110000[X]补=1.0011000+[-Y]补=0.01100001.1001000[X-Y]补=(1.1001000)2,X-Y=(-0.0111)22.溢出的检测溢出:运算结果超出了计算机所能表示的数据范围。正溢(上溢):运算结果为正而绝对值超出了表示的范围。负溢(下溢):运算结果为负而绝对值超出了表示的范围。定点数的溢出——根据数值本身判断。例:已知机器字长n=8,X=120,Y=10,求X+Y=?解:[X]补=01111000,[Y]补=00001010,[X]补=01111000+[Y]补=0000101010000010[X+Y]补=10000010,X+Y=11111110X+Y的真值=-1111110=(-126)10运算结果超出机器数值范围发生溢出错误。8位计算机数值表达范围:(-128~+127)溢出判断规则与判断方法两个相同符号数相加,其运算结果符号与被加数相反则产生溢出;两个相异符号数相减,其运算结果符号与被减数相反则产生溢出。相同符号数相减,相异符号数相加不会产生溢出。溢出判断方法:进位判断法,双符号位法。(1)进位溢出判断法S⊕C两单符号位的补码进行加减运算时,若最高数值位向符号位的进位值C与符号位产生的进位输出值S相同时则无溢出,否则溢出。例:[X]补=1.101[X]补=1.110+[Y]补=1.001+[Y]补=0.100[X+Y]补=10.110[X+Y]补=10.010C=0,S=1有溢出C=1,S=1无溢出X+Y=+0.010即:溢出OVR=S⊕C=1有溢出SC=01正溢;SC=10负溢OVR=S⊕C=0无溢出(2)双符号位(变形补码)溢出判断法设第一符号位Sf1,第二符号位Sf2,Sf1Sf2双符号含义:00表示运算结果为正数;01表示运算结果正向溢...