Help coderanch get a
new server
by contributing to the fundraiser
Plus win three weeks of access to Security in Spring Boot REST Web Service Applications this week in the Spring forum!
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
• Jeanne Boyarsky
• Ron McLeod
• Paul Clapham
• Liutauras Vilda
Sheriffs:
• paul wheaton
• Rob Spoor
• Devaka Cooray
Saloon Keepers:
• Stephan van Hulst
• Tim Holloway
• Carey Brown
• Frits Walraven
• Tim Moores
Bartenders:
• Mikalai Zaikin

# lang fund Ques from dan mock exam

Ranch Hand
Posts: 98
• Number of slices to send:
Optional 'thank-you' note:
hi guys,
i came across this question from dan's topic exam,how to convert integer min value to hex,is there any short cut?
class B {
public static void main(String args[]) {
System.out.print(Integer.toHexString(Integer.MIN_VALUE)+",");
System.out.print(Integer.toHexString(Integer.MAX_VALUE));
}
}
expecting the result soon,
thx

Greenhorn
Posts: 14
• Number of slices to send:
Optional 'thank-you' note:
I dont know is there a short way of doing it, but this is the way I do generally.
Write the number in binary format, write each 4 binary digit as a separate group.
MIN : 1000 0000 0000 0000 0000 0000 0000 0000
Now count decimal values for each group
8 0 0 0 0 0 0 0
Convert decimals to HEX
80000000
MAX : 0111 1111 1111 1111 1111 1111 1111 1111
7 15 15 15 15 15 15 15
7FFFFFFF
Serdar

Ranch Hand
Posts: 257
• Number of slices to send:
Optional 'thank-you' note:
Does this technique work for the other integer types also like short, byte...
I tried running with short and it gives minimum hex value as ffff 8000. Why is it so? If we run with byte it gives result as 7f and ffffff80...

Serdar Ozturk
Greenhorn
Posts: 14
• Number of slices to send:
Optional 'thank-you' note:
When you write System.out.print(Integer.toHexString(Short.MIN_VALUE), short value is first converted to int
Short.MIN = -2^15
and it's 1000 0000 0000 0000 = 0x7000
, be careful that when you convert this negative short value to int it's gonna be a different bit sequence
2's compliment calculation of -2^15
+2^15 = 0000 0000 0000 0000 1000 0000 0000 0000
take inverse of each bit
1111 1111 1111 1111 0111 1111 1111 1111
1111 1111 1111 1111 1000 0000 0000 0000
0xFFFF8000

For maximum values there is no problem
Short.MAX_VALUE = 0111 1111 1111 1111
= 0x7FFF
when you convert it to int
0000 0000 0000 0000 0111 1111 1111 1111
0x00007FFFF
but the methos toHexString does not print the first four zeros, so the result is 7FFF
Serdar

Ranch Hand
Posts: 1865
• Number of slices to send:
Optional 'thank-you' note:
The previous posts provide great explanations. Even so, I post the URL to a couple tutorials.
MAX_VALUE Tutorial
Base Conversion Tutorials

Serdar Ozturk
Greenhorn
Posts: 14
• Number of slices to send:
Optional 'thank-you' note:
Sorry, I've made a small mistake there,
Short.MIN = -2^15
and it's 1000 0000 0000 0000 = 0x7000
should be corrected as = 0x8000
Serdar

anushree ari
Ranch Hand
Posts: 98
• Number of slices to send:
Optional 'thank-you' note:
thx guys,
dan your tutorial is helping me a lot, thx, serdar.

anushree ari
Ranch Hand
Posts: 98
• Number of slices to send:
Optional 'thank-you' note:
hi serdar,
i compiled the min value of byte, i got these results,
System.out.print(Integer.toHexString(Byte.MIN_VALUE))
the result is ffff ff80
in binary
System.out.print(Integer.toBinaryString(Byte.MIN_VALUE))

1111111111111111111111111000000;
but your's different,
pls anybody correct me,

anushree ari
Ranch Hand
Posts: 98
• Number of slices to send:
Optional 'thank-you' note:
dan,
when i studied your material, you explained the max value, could u pls explain min value with some example,
it would be easier for me,
thx,i'll expect the results,
bye

anushree ari
Ranch Hand
Posts: 98
• Number of slices to send:
Optional 'thank-you' note:
hi sunitha,
the max value of byte is 127,
when u r converting to hex that means divide the value by 16, u get 7 remainder 15, the value of 15 in hex is f, so the result is 7f, got it.
bye

Dan Chisholm
Ranch Hand
Posts: 1865
• Number of slices to send:
Optional 'thank-you' note:

Originally posted by anushree ari:
dan,
when i studied your material, you explained the max value, could u pls explain min value with some example,
it would be easier for me,
thx,i'll expect the results,
bye

Before I write a tutorial on MIN_VALUE I will have to first write a tutorial on two's compliment arithmetic. I'm certain that I won't have time to do it today, but maybe sometime next week.
Thank you for using my exam.

sun par
Ranch Hand
Posts: 257
• Number of slices to send:
Optional 'thank-you' note:
Consider Byte data type for example.. The min value is -128....
All negative numbers are stored in 2's complement notation...
It is calculated as follows...
128 = 2^7... so put 7 0's after 1...
You get
10000000
When u store it in 2's complement notation you get the representation of -128...
1) First take 1's complement.. Change all 1's to 0's and 0's to 1's..
Since it is an Integer.toHexString it has to take a 32 bit value whereas a byte has only 8 bits...
So it takes something like 00000000 00000000 00000000 1000 0000 to start with and when it finds the 2's complement as described above :-
00000000 00000000 00000000 10000000
Taking 1's complement
11111111 11111111 11111111 01111111
Then adding 1 we get
11111111 11111111 11111111 10000000
which would give
ffffff80...
Hope this helps...

Serdar Ozturk
Greenhorn
Posts: 14
• Number of slices to send:
Optional 'thank-you' note:
Well, I think it should be clear for everyone now,but the following may be another short-hand way of thinking.
Byte.MIN = 80
Byte.MAX = 7F
Short.MIN = 8000
Short.MAX = 7FFF
While converting those numbers (in fact, we can use this rule for any number )to a wider integral type(int or long),
for negative numbers: Add F's to the left
for positive numbers: Add 0's to the left
So,
byte -128: 80 --> FFFFFF80
short -32768: 8000 --> FFFF8000
7F --> 0000007F
7FFFF --> 00007FFF

PS: For negative numbers, remember that >> operator inserts "1" into the leftmost digit to keep the number negative and to allow division and multiplication by 2.
Serdar

anushree ari
Ranch Hand
Posts: 98
• Number of slices to send:
Optional 'thank-you' note:
thx sunita,serdar,
i'll practice very well with the binary, now iam having clear idea about -ve and +ve values,
thx guys,

 Oh sure, it's a tiny ad, but under the right circumstances, it gets bigger. We need your help - Coderanch server fundraiser https://coderanch.com/t/782867/Coderanch-server-fundraiser