**Subject:** Re: detect arithmetic overflow

**To:** Christos Zoulas *<christos@zoulas.com>*

**From:** Steven M. Bellovin *<smb@research.att.com>*

**List:** current-users

**Date:** 08/06/2003 11:16:50
In message <HJ7C63.Fpp@tac.nyc.ny.us>, Christos Zoulas writes:
>In article <Pine.LNX.4.21.0308061116010.7039-100000@Tempo.Update.UU.SE>,
>Johnny Billquist <bqt@update.uu.se> wrote:
>>On Wed, 6 Aug 2003, David Laight wrote:
>>
>>> > It's even easier than that. For signed addition, just check if the result
>>> > is negative. If so, then you have overflow. For unsigned addition, you'll
>>> > have to test it as you described, though.
>>>
>>> errmm -1 + -1 = -2 but hasn't overflowed
>>
>>Argh. My brain is positive. :-)
>>However, the result is also less than both operands... So you just flunked
>>yourself too. :-)
>>
>>Actually, you need the opposite test for negative operands, and if the
>>operands have different sign, you will not get overflow.
>
>Isn't the two's complement arithmetic rule for overflow that the carry bit
>into the signed bit must equal to the carry bit out of the signed bit?
>
Yah.
Let me point folks at "Hacker's Delight", by Henry S. Warrn,
Addison-Wesley, 2002. Note that this is about clever programming
tricks, rather than breaking into computers.
--Steve Bellovin, http://www.research.att.com/~smb