posted 5 years ago

Hi All,

I used the following statements in main function:-

System.out.println(Integer.MIN_VALUE);

System.out.println(-(Integer.MIN_VALUE));

Output:

-2147483648

-2147483648

While obtaining the negative of a negative number i am still getting a negative number. Can anyone let me know the reason for this behaviour.

regards,

Ajay

I used the following statements in main function:-

System.out.println(Integer.MIN_VALUE);

System.out.println(-(Integer.MIN_VALUE));

Output:

-2147483648

-2147483648

While obtaining the negative of a negative number i am still getting a negative number. Can anyone let me know the reason for this behaviour.

regards,

Ajay

posted 5 years ago

The range that

So, -(-2147483648) is +2147483648, but that's too big to store in an

`ints`can have in Java is -2147483648 to 2147483647. Notice the final digit there.So, -(-2147483648) is +2147483648, but that's too big to store in an

`int`variable. So you get an overflow, and the value wraps round to the bottom of the range again.
posted 5 years ago

This is actually mentioned in The Java™ Language Specification

For integer values, negation is the same as subtraction from zero. The Java programming language uses two's-complement representation for integers, and the range of two's-complement values is not symmetric, so negation of the maximum negative

intorlongresults in that same maximum negative number. Overflow occurs in this case, but no exception is thrown.

luck, db
*There are no new questions, but there may be new answers.*