Overflow Rule for addition

=========================



If 2 Two's Complement numbers are added, and they both have the same sign (both positive or both negative), then overflow occurs if and only if the result has the opposite sign. Overflow never occurs when adding operands with different signs.



i.e. Adding two positive numbers must give a positive result

  Adding two negative numbers must give a negative result

Overflow occurs if



(+A) + (+B) = ?C

(?A) + (?B) = +C

Example: Using 4-bit Two's Complement numbers (?8 ? x ? +7)



 (?7)   1001

+(?6)   1010

------------

(?13) 1 0011 = 3 : Overflow (largest ?ve number is ?8)

A couple of definitions:



Subtrahend: what is being subtracted

Minuhend: what it is being subtracted from

Example: 612 - 485 = 127



485 is the subtrahend, 612 is the minuhend, 127 is the result

Two's Complement Subtraction



Normally accomplished by negating the subtrahend and adding it to the minuhend. Any carry-out is discarded.



Example: Using 8-bit Two's Complement Numbers (?128 ? x ? +127)



 (+8) 0000 1000               0000 1000

?(+5) 0000 0101 -> Negate -> +1111 1011

-----                       -----------

 (+3)                       1 0000 0011 : discard carry-out





Overflow Rule for Subtraction

============================



If 2 Two's Complement numbers are subtracted, and their signs are different, then overflow occurs if and only if the result has the same sign as the subtrahend.



Overflow occurs if



(+A) ? (?B) = ?C

(?A) ? (+B) = +C

Example: Using 4-bit Two's Complement numbers (?8 ? x ? +7)



Subtract ?6 from +7



     (+7) 0111               0111

    ?(?6) 1010 -> Negate -> +0110

    ----------              -----

      13                     1101 = ?8 + 5 = ?3 : Overflow