上下文
我在一本教科书上读到...
加法和减法不会导致溢出。去引用,
“如果一个数字是正数而另一个负数,则加法后不会发生溢出,因为将正数添加到负数会产生幅度较小的结果(...)”。
但是,通过经历一些问题,情况似乎并非如此,我想确认我计算的不是一些错误。
例如,在其中适用的上下文中,对于 4 位加减法器,其中 M=1(这意味着与 B 的减法),A = 0101 (+5) 和 B = 1010 (+10)。
通过取 B = 0110 (-10) 的 2s 补码并将数字相加,可以进行减法。
例如(5)+(-10)
0 1
+5 0101
-10 0110
-------------
result: 1011
results 2s: 0101 (-5)
C: 0 and V = 1.
仅仅通过执行这个问题就已经出现了几个问题。
- 尽管没有溢出,但仍设置了溢出位(数字在范围内)
- 鉴于范围是 -8 到 7,有符号整数和无符号整数是否也会导致溢出,例如 (-1+9)
例如
-1 1110
+9 1001
-------------
result: 1111
result 2s: 0001 (1)
C: 1 and V: 1
我注意到当 C = 0 时没有溢出,而当 C = 1 时有溢出。
我读到两个无符号整数之间的溢出关系是V溢出标志。另一方面,两个有符号整数之间的溢出关系与C 的进位标志有关。这可能有关系吗?
最后,请注意,尽管我引用的声明与此相矛盾,但无符号整数和有符号整数之间存在溢出。
TL;博士
无符号整数和有符号整数相加之间是否可能溢出?如果是这样,无符号整数和有符号整数对于溢出(C 或 V 标志)的关系是什么?