[Math] How to determine if a binary addition/subtraction has an overflow

arithmetic

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

Best Answer

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.