计算机系统-白中英(第4版)第二章溢出问题.ppt
溢出判断与移位,定义:运算结果超出机器数表示范围,称为溢出。两个正数相加而绝对值超出允许的范围,称为正溢。两个负数相加而绝对值超出允许的范围,则称为负溢。,有进位不一定是溢出(例题3-6),例如:9-3=6;9 01001;3变补11101 01001+11101101100,符号位运算产生的进位记为Cf;表示超出模的部分,可舍去,但不是溢出。Cf=SA+SBSA=0(A=9)SB=1(B=-3)异号不溢出,溢出判别逻辑 1:“溢出”=SA SB Sf+SA SB Sf SA、SB是操作的数符,Sf结果的数符,SA SB Sf 正数相加,结果为负,正溢。SA SB Sf 负数相加,结果为正,负溢。,11+7=18例题3-3 01011+00111 10010(正溢),(-11)+(-7)=(-18)10101+11001101110(负溢),溢出判别逻辑 2-1:“溢出”=Cf C Cf符号位运算后产生的进位,C最高有效位产生的进位,(-7)+(-15)=(-22)(-7)(10111)原=(11001)补(-15)(11111)原=(10001)补 1 1001+1 0001 10 1010(Cf=SA+SB=1+1=1)(C=A最高有效位+B最高有效位+?=1+0=0)“溢出”=Cf C=1 0=1(产生负溢出),溢出判别逻辑2-2:“溢出”=Cf C,9+9=18 9=(01001)补 0 1001+0 1001 1 0010(Cf=SA+SB=0+0=0)(C=A最高有效位+B最高有效位+?=1+1=1)“溢出”=Cf C=0 1=1(产生正溢出),溢出判别逻辑 3(双符号位:)“溢出”=Sf1 Sf2,9+3=12 9=(01001)补 00 1001+00 0011 00 1100溢出=Sf1+Sf2=0+0=0(没有溢出),11+7=1811=(001011)补7=(000111)补 0 0 1011+0 0 0111 0f1 1f2 0010溢出=Sf1+Sf2=0+1=1(正溢),(-9)+(-3)=(-12)9=(01001)补 11 0111+11 1101 11 0100溢出=Sf1+Sf2=1+1=0(没有溢出),-11+(-7)=(-18)-11=(110101)补-7=(111001)补 1 1 0101+1 1 1001 1f1 0f2 1110溢出=Sf1+Sf2=1+0=1(负溢),1.当Sf1和Sf2相同时没有溢出 Sf1=0、Sf2=0不溢出、结果为正;Sf1=1、Sf2=1 不溢出、结果为负;2.当Sf1和Sf2不相同时有溢出 Sf1=0、Sf2=1正溢;Sf1=1、Sf2=0负溢;3.Sf1始终表示结果的正负。,溢出判别逻辑,舍入,1、原码与补码采取“0舍1入”,负数反码采取“1舍0借”2、原码与补码采取末位“恒置1”,负数反码采取末位“恒置0”。,谢谢!,