请问这解法怎么错了 关于补码的问题

若x=103,y=-25,则下列表达式采用8位定点补码运算实现时,会发生溢出的是 ()

A x+y

B -x+y

C x-y

D -x-y

如果不看表示范围硬算的话
x补=0110 0111
-x补=1001 1001
y原=1001 1001
y补=1110 0111
-y补=0001 1001

A.
0110 0111
+1110 0111

1 0100 1110 符号位有进位最高位也有进位所以没有溢出

B.
1001 1001
+1110 0111
符号位有进位最高位没有进位 不应该溢出了吗

C.x-y = x补+(-y)补
0110 0111
+0001 1001
都没有进位 不应该没有溢出吗

D.
1001 1001
0001 1001
都无进位 没有溢出

可是答案是C
x-y = 128
不能用8位补码表示出来
那上面的分析哪里错了呢

你算错了,加法是从低位向高位加,b选项符号位和最高位都有进位,没有溢出,c选项符号位无进位,最高位有进位,产生溢出

答案:C
有符号的 8 位二进制数的范围是 -128---+127
直接快速排除法:大于+127溢出,小于-128溢出
这是不用判断补码的简单快速的做题方法。需要先判断 x , y 这俩数本身在这个范围内。
A,x+y=78 没有溢出
B,-x+y=-128 没有溢出
C,x-y=128 溢出
D,-x-y=-78 没有溢出