当两个 8 位数字 A 7 … A 0和 B 7 … B 0在 2 的补码表示中(A 0和 B 0作为最低有效位)使用波纹进位加法器相加。获得的和位为 S 7 … S 0 ,进位位为 C 7 … C 0 。如果发生溢出,则称发生了溢出
(A)进位位 C 7为 1
(B)所有进位位 (C 7 , … , C 0 ) 都是 1
(C) (A 7 . B 7 . S 7 ‘ + A 7 ‘ . B 7 ‘ . S 7 ) 是 1
(D) (A 0 . B 0 . S 0 ‘ + A 0 ‘ . B 0 ‘ . S 0 ) 是 1答案: (C)
说明:溢出表示结果太大或太小,无法放入原始数据类型。
溢出标志指示签名操作的溢出条件。有符号数以二进制补码表示。
只有当两个正数相加结果为负或两个负数相加结果为正时才会发生溢出。否则,总和还没有溢出。
因此,XOR 操作可以快速确定是否存在溢出情况。 IE,
(A7 . B7 )⊕(S7) = (A7 . B7 . S7′ + A7′ . B7′ . S7 = 1
此解释由Mithlesh Upadhyay 提供。
另一种解决方案
A7 A6 A5 A4 A3 A2 A1 A0
B7 B6 B5 B4 B3 B2 B1 B0
C6 C5 C4 C3 C2 C1 C0 // carry bits
C7 S7 S6 S5 S4 S3 S2 S1 S0 // this is the result
因此,它取决于 S7 的溢出。当 S7 为 0 两个负数相加时 S7 为 1 两个正数相加时
A7. B7. S7′ + A7’。 B7′.S7 = 1
此解决方案由Sumouli Chaudahry 提供。这个问题的测验