若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 没有溢出