• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Tim Cooke
  • paul wheaton
  • Ron McLeod
  • Jeanne Boyarsky
Sheriffs:
  • Paul Clapham
Saloon Keepers:
  • Tim Holloway
  • Roland Mueller
Bartenders:

Integer.MIN_VALUE

 
Ranch Hand
Posts: 170
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
System.out.print(Integer.toHexString(Integer.MIN_VALUE)+",");
The ans is 80000000
Could anyone tell me how this gets executed (toHexString(Integer.MIN_VALUE))?
 
Ranch Hand
Posts: 504
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
First, Integer.MIN_VALUE static constant gets evaluated to -2147483648 or -2^31 (minus two to the power of 31). Then, a static method of Integer class toHexString() is invoked. It takes an int argument and returns a String hexadecimal representation of the passed integer.
API:


Returns a string representation of the integer argument as an unsigned integer in base 16.
The unsigned integer value is the argument plus 232 if the argument is negative; otherwise, it is equal to the argument. This value is converted to a string of ASCII digits in hexadecimal (base 16) with no extra leading 0s. If the unsigned magnitude is zero, it is represented by a single zero character '0' ('\u0030'); otherwise, the first character of the representation of the unsigned magnitude will not be the zero character. The following characters are used as hexadecimal digits:
0123456789abcdef
These are the characters '\u0030' through '\u0039' and '\u0061' through '\u0066'. If uppercase letters are desired, the String.toUpperCase() method may be called on the result:
Integer.toHexString(n).toUpperCase()


An int hexadecimal number may contain up to 8 significant digits besides leading 0x prefix. Each hex digit is represented by 4 bits: 8=1000, F=1111, A=1010, and so on. 0x80000000=1000 0000 0000 0000 0000 0000 0000 0000 in binary. The left most bit represents the negative sign. So, if we convert binary to decimal as 8*(16 to the power of 7) or (2 to the power of 3)*(2 to the power of 28), we receive 2 to the power of 31. Remember, the sign is negative! And that equals -2 to the power of 31.
 
Lakshmi Saradha
Ranch Hand
Posts: 170
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
thank you vf...
 
We can walk to school together. And we can both read this tiny ad:
Clean our rivers and oceans from home
https://www.kickstarter.com/projects/paulwheaton/willow-feeders
reply
    Bookmark Topic Watch Topic
  • New Topic