.补码加法
由于计算机中定点数均以补码的方式表示和存储,采用补码表示法进行加减运算比原码方便多了,因为不论是正还是负,机器总是做加法,减法运算可变成加法运算溢出概念与检测方法
在定点整数运算过程中如出现大于字长绝对值的现象称为“溢出”,在定点机中出现溢出时其结果是不正确的,故运算器必须能检测出溢出。
eg:1.x=+1011,y=+1001,求x+y。
[x]补=01011,[y]补=01001.
01011
+01001
10100
x+y=10100=-0100,这样两正数相加结果是负数,显然是错误的。
2.x=-1101,y=-1011,求x+y。
[x]补=10011,[y]补=10101.
10011
+10101
01000
x+y=01000=+1000,两负数相加结果是正数,同样是错误的。
两个正数相加结果大于机器字长所能表示的最大正数称为正溢;
两个负数相加结果小于机器所能表示的最小负数称为负溢;
为了判断“溢出”是否发生我们采 2,补码减法 :
也是一个式子解决问题—— [ x - y ]补 = [ x ]补 -[ y ]补 = [ x ]补 + [ -y ]补…… ②
[ - y ]补 = 乛 [y]补 + 2^(-n) …… ③ (符号乛 表示对[y]补 作包括符号位在内的求反操作,+ 2^(-n)表示最末尾加1)
式③是求式②的关键,这样就可以在知道两个数补码的条件下做两个数的减法运算,而且式②③也是要在(mod 2^(n+1))的情况下才能成立的,所以将两个数的补码做减法时符号位上的进位同样要省去。
例 2 : x = +1101, y = +0110, 求 x - y。
解 [ x ]补 = 01101, [ y ]补 = 00110, [ -y ]补 = 11010
[ x ]补 01101
+ [ - y ]补 11010
——————————
[ x - y ]补 100111
故: x - y = + 0111用双符号位法,又称为“变形补码”:。