When two 8-bit numbers A7 … A0 and B7 … B0 in 2’s complement representation (with A0 and B0 as the least significant bits) are added using ripple-carry adder. the sum bits obtained are S7 … S0 and the carry bits are C7 … C0. An overflow is said to have occured if
(A) the carry bit C7 is 1
(B) all the carry bits (C7, … , C0 ) are 1
(C) (A7 . B7 . S7‘ + A7‘ . B7‘ . S7) is 1
(D) (A0 . B0 . S0‘ + A0‘ . B0‘ . S0) is 1
Explanation: Overflow indicates that the result was too large or too small to fit in the original data type.
Overflow flag indicates an overflow condition for a signed operation. Signed numbers are represented in two’s complement representation.
The overflow occurs only when two positive number are added and the result is negative or two negative number are added and the result is positive. Otherwise, the sum has not overflowed.
Therefore, a XOR operation can quickly determine if an overflow condition exists. i.e.,
(A7 . B7 )⊕(S7) = (A7 . B7 . S7‘ + A7‘ . B7‘ . S7 = 1
This explanation is contributed by 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
So, it depends on S7 for overflow. when S7 is 0 while adding two negative numbers and when S7 is 1 while adding two positive numbers
A7. B7. S7′ + A7′. B7′.S7 = 1
This solution is contributed by Sumouli Chaudahry.
Quiz of this Question