Author
abs() method of Math class
Shubhada Nandarshi
Ranch Hand
Joined: Jun 10, 2005
Posts: 59
posted Jun 20, 2005 02:42:00
0

Hi friends; We know the abs()method of Math class returns the absulute val of the num. but if we try class Test{ public static void main(String args[]){ System.out.println((Math.abs(Integer.MIN_VALUE))); System.out.println((Math.abs(-2147483648))); System.out.println((Math.abs(-4))); } } gives an o/p as: -2147483648 -2147483648 4 Why? is it because, the no. is very big no. & abs() can't take such big no for operation?
Shubhada
Mishra Anshu
Ranch Hand
Joined: Sep 16, 2003
Posts: 224
posted Jun 20, 2005 03:12:00
0

Integer.MAX_VALUE = 2147483647 Integer.MIN_VALUE = -2147483648 I think you are expecting abs(Integer.MIN_VALUE) = 2147483648, but that can't be represented as it exceeds the Integer's range. So,the value is -2147483648 which you may verify by printing System.out.println(Integer.MAX_VALUE + 1);
"Ignorance is bliss"
Timmy Marks
Ranch Hand
Joined: Dec 01, 2003
Posts: 226
posted Jun 20, 2005 03:28:00
0

Integer.MIN_VALUE is represented in binary as 10000000000000000000000000000000. Since this is a negative number, the absolute value will be -1 * the number - The twos complement is the ones complement plus one - The ones complement will be 01111111111111111111111111111111 and when we add 1 to it, we get 10000000000000000000000000000000 (which is Integer.MIN_VALUE again!), so the problem is not that abs() cannot handle such large numbers, the problem is that ints are 32 bits.
Shubhada Nandarshi
Ranch Hand
Joined: Jun 10, 2005
Posts: 59
posted Jun 20, 2005 05:52:00
0

thanks guys. I got the ans. bye , take care. shubha.
Bert Bates
author
Sheriff
Joined: Oct 14, 2002
Posts: 8815
posted Jun 27, 2005 23:08:00
0

hi guys - just a reminder - if you're studying for the 1.5 exam, this topic is not on the exam! yeah! - Bert
Spot false dilemmas now, ask me how!
(If you're not on the edge, you're taking up too much room.)
subject: abs() method of Math class