📜  门| GATE-CS-2017(Set 1)|第35章

📅  最后修改于: 2021-06-28 21:22:04             🧑  作者: Mango

当使用2的补码表示形式将两个8位数字A 7 …A 0和B 7 …B 0 (以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。7。7 ‘+ A 7’。7’。7)为1
(d)(A 0。B 0,… S 0 ‘+ A 0′; B 0’。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提供。这个问题的测验