This week's giveaway is in the Android forum.
We're giving away four copies of Android Security Essentials Live Lessons and have Godfrey Nolan on-line!
See this thread for details.
The moose likes Beginning Java and the fly likes integer range Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Android Security Essentials Live Lessons this week in the Android forum!
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "integer range" Watch "integer range" New topic
Author

integer range

Madan, Gopal
Ranch Hand

Joined: Aug 13, 2001
Posts: 86

can somebody explain why i am getting -727379968 as the product?
Thanks
Madan
Daniel Dunleavy
Ranch Hand

Joined: Mar 13, 2001
Posts: 276
integer range -2147483648 2147483647
Madan, Gopal
Ranch Hand

Joined: Aug 13, 2001
Posts: 86
Hi Daniel:
I know the integer range (-2,147,483,648 to 2,147,483,647) cannot accomodate product of 1 million by 1 million (1000,000,000,000).
My question is how I got -727,379,968
Nain Hwu
Ranch Hand

Joined: Sep 16, 2001
Posts: 139

My question is how I got -727,379,968

From JLS �15.17.1:

If an integer multiplication overflows, then the result is the low-order bits of the mathematical product as
represented in some sufficiently large two's-complement format. As a result, if overflow occurs, then the
sign of the result may not be the same as the sign of the mathematical product of the two operand values.

1000000*1000000 results in an overflow. The lower-order
32 bits (int is 32 bits) are 0xd4a51000 which is -727,379,968.
[This message has been edited by Nain Hwu (edited October 09, 2001).]
Madan, Gopal
Ranch Hand

Joined: Aug 13, 2001
Posts: 86
Hi Nain:
When i fed the Hex # you said is the low-order 32 bits in NT calc. I am getting 3567587328 and not the number you said/I asked. Also, can you explain/write down how you got 0xD4A51000.
Thanks
Nain Hwu
Ranch Hand

Joined: Sep 16, 2001
Posts: 139
Madan,
I used the toHexString() method in class Integer.
Here is what I did:

Here is the output:

D:\pfe101i>java Test
d4a51000
-727379968

Notice that 0xd4a51000 is a negative integer value (in java,
integer is stored as two complement value).
Looks like NT calc treats it as a positive value, which gives
you 3567587328.
Hope this help.
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: integer range
 
Similar Threads
for loop question
assignments and + operator
lockCookie
Access a variable
JSP called from filter not finding JavaScript file