Velocity Reviews > Can negating a non-negative signed integer value ever overflow?

Can negating a non-negative signed integer value ever overflow?

Alex Fraser
Guest
Posts: n/a

 03-06-2006
Can negating a non-negative signed integer value ever overflow? Put another
way, can it be true that (mathematically) INT_MIN > -INT_MAX, LONG_MIN
> -LONG_MAX etc?

I know that typically it can't overflow, but if that isn't guaranteed, how
can I portably detect if it would?

Alex

Jordan Abel
Guest
Posts: n/a

 03-06-2006
On 2006-03-06, Alex Fraser <(E-Mail Removed)> wrote:
> Can negating a non-negative signed integer value ever overflow? Put another
> way, can it be true that (mathematically) INT_MIN > -INT_MAX, LONG_MIN
>> -LONG_MAX etc?

>
> I know that typically it can't overflow, but if that isn't guaranteed, how
> can I portably detect if it would?
>
> Alex

C99 only allows twos-complement, ones-complement, and signed-magnitude
representation. It is unclear what C89 allows.

pete
Guest
Posts: n/a

 03-06-2006
Alex Fraser wrote:
>
> Can negating a non-negative signed integer value ever overflow?

No.

--
pete

Alex Fraser
Guest
Posts: n/a

 03-07-2006
"Jordan Abel" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> On 2006-03-06, Alex Fraser <(E-Mail Removed)> wrote:
> > Can negating a non-negative signed integer value ever overflow? Put
> > another way, can it be true that (mathematically) INT_MIN > -INT_MAX,
> > LONG_MIN > -LONG_MAX etc?

>
> C99 only allows twos-complement, ones-complement, and signed-magnitude
> representation.

Which implies INT_MIN is either -INT_MAX (one's complement or sign and
magnitude) or -INT_MAX - 1 (two's complement), etc, so that's OK.

> It is unclear what C89 allows.

Hmm. A shame.

I know it normally can't overflow, and I can't see how to detect if it
could/would overflow anyway, so I guess should shrug my shoulders and move
on .

Thanks,
Alex

Joe Wright
Guest
Posts: n/a

 03-07-2006
pete wrote:
> Alex Fraser wrote:
>
>>Can negating a non-negative signed integer value ever overflow?

>
>
> No.
>

No context? Chuck is gonna getcha.

Assume 2's complement.

int i = INT_MIN;

This is -2147483648 and 0x80000000. If then..

i = -i;

...the result is the same. Did anything happen? Was it overflow?

--
Joe Wright
"Everything should be made as simple as possible, but not simpler."
--- Albert Einstein ---

Richard Heathfield
Guest
Posts: n/a

 03-07-2006
Joe Wright said:

> pete wrote:
>> Alex Fraser wrote:
>>
>>>Can negating a non-negative signed integer value ever overflow?

>>
>>
>> No.
>>

> No context? Chuck is gonna getcha.
>
> Assume 2's complement.
>
> int i = INT_MIN;
>
> This is -2147483648 and 0x80000000. If then..
>
> i = -i;
>
> ..the result is the same. Did anything happen? Was it overflow?

This may have escaped your notice, I know - but -2147483648 does not quite
qualify as non-negative, so it falls outside the domain of the question.

--
Richard Heathfield
"Usenet is a strange place" - dmr 29/7/1999
http://www.cpax.org.uk
email: rjh at above domain (but drop the www, obviously)

Keith Thompson
Guest
Posts: n/a

 03-07-2006
Joe Wright <(E-Mail Removed)> writes:
> pete wrote:
>> Alex Fraser wrote:
>>
>>>Can negating a non-negative signed integer value ever overflow?

>> No.
>>

> No context? Chuck is gonna getcha.

What do you mean? pete quoted the relevant portion of the parent

--
Keith Thompson (The_Other_Keith) http://www.velocityreviews.com/forums/(E-Mail Removed) <http://www.ghoti.net/~kst>
San Diego Supercomputer Center <*> <http://users.sdsc.edu/~kst>
We must do something. This is something. Therefore, we must do this.

CBFalconer
Guest
Posts: n/a

 03-08-2006
Keith Thompson wrote:
> Joe Wright <(E-Mail Removed)> writes:
>> pete wrote:
>>> Alex Fraser wrote:
>>>
>>>> Can negating a non-negative signed integer value ever overflow?
>>> No.
>>>

>> No context? Chuck is gonna getcha.

>
> What do you mean? pete quoted the relevant portion of the parent

Yes, I saw no reason to unleash the slavering dogs.

--
"If you want to post a followup via groups.google.com, don't use
the broken "Reply" link at the bottom of the article. Click on
"show options" at the top of the article, then click on the

Joe Wright
Guest
Posts: n/a

 03-08-2006
CBFalconer wrote:
> Keith Thompson wrote:
>
>>Joe Wright <(E-Mail Removed)> writes:
>>
>>>pete wrote:
>>>
>>>>Alex Fraser wrote:
>>>>
>>>>
>>>>>Can negating a non-negative signed integer value ever overflow?
>>>>
>>>>No.
>>>>
>>>
>>>No context? Chuck is gonna getcha.

>>
>>What do you mean? pete quoted the relevant portion of the parent

>
>
> Yes, I saw no reason to unleash the slavering dogs.
>

Sorry pete. Thanks Richard, Keith and Chuck for catching me up. I read
pete's one liner as..
"Can negating a negative signed integer value ever overflow?"

--
Joe Wright
"Everything should be made as simple as possible, but not simpler."
--- Albert Einstein ---