Overflow: 2C
If x and y have opposite signs, then the result can't overflow:
magnitude of the result will be less than the magnitude of the larger number
| x + y | <= max (|x|, |y|)
Overflow can only occur when the numbers both have the same sign.
If the sign of the result is different, then overflow must have occurred.
For example, if x and y both have sign bit 0 (positive), and the result has
sign bit 1 (negative), then overflow must have occurred.
Add 2 k-bit numbers:
   xk-1...x0
 + yk-1...y0
   sk-1...s0
One way to express whether overflow occurs:
  V = xk-1yk-1\sk-1 + \xk-1\yk-1sk-1
Either both sign bits of x and y are 1 and the sign bit of s is 0,
or the sign bits are both 0 and the sign bit of s is 1
Simpler formula:
  V = ck-1 XOR ck-2
The overflow bit is equal to the XOR of the carry-in to the leftmost bit
with the carry-out from the leftmost bit.