5
$\begingroup$

From what I understand from my lecture notes, overflow occurs when:

  • $C_{in} \neq C_{out}$
  • Change in sign

For $C_{in} \neq C_{out}$: suppose $111+111=1110=110$. In this case $C_{in}=0, C_{out}=1$, but consider a carry in then: $111+111+1=1111=111$ which according my the rules 1 above, is NOT overflow... so I suppose my understanding is wrong? If so how will I determine overflow systematically?

UPDATE

For those who are not sure what $C_{in}, C_{out}$ means and how to add/subtract binary, I hope the below working will help

enter image description here

  • 0
    There are two differing conventions on how to handle carry-in/out for subtraction. Intel x86 and M68k use a carry-in as "borrow" (1 means subtract 1 more) and adapt their carry-out to mean the same, whereas PowerPC just adds the bitwise-inverted subtrahend plus the carry-in, which inverses the meaning, but is more consistent with the scheme for addition. What convention do you use?2014-10-19

2 Answers 2

1

I think you have to specify, what your sign bit is (I assume the left most) and then treat every addition separately $ \begin{eqnarray*} 0\_111&+&0\_111&+&0\_001 & = 1\_110 &+&0\_001&= 1\_111 \\ 7&+&7&+&1&\neq_{a}-6&+&1&\neq_b-7\\ \end{eqnarray*} $ to get $a.$ your overflow, followed by $b.$ nonsense.

  • 0
    Two's complement means that the sign bit has negative weight $-8$, and the other bits have the usual positive weights, so $1111$ represents $-1$, $1110$ represents $-2$ etc.2014-10-19
1

First of all, in your example, you are doing three-bit addition and there is no overflow. Thus your rule does not fail for given example 111 + 111 + 001 = 111
(-1) + (-1) + (+1) = (-1)

If you are not clear with that rule just see the below mentioned simple method to know if there is an overflow.

First of all, if there is a carry out just ignore it also don't worry about carry in.Then

Case 1: Two numbers have different most significant bit There will never be overflow.

Case 2: Two numbers have same most significant bit If the output has most significant bit same as input, your answer is correct(no overflow) else if the output has the most significant bit different than input, there was an overflow.