Win a copy of Design for the Mind this week in the Design forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

lang fund Ques from dan mock exam

 
anushree ari
Ranch Hand
Posts: 98
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
 
Serdar Ozturk
Greenhorn
Posts: 14
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
 
sun par
Ranch Hand
Posts: 257
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
Add 1
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
 
Dan Chisholm
Ranch Hand
Posts: 1865
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
thx guys,
dan your tutorial is helping me a lot, thx, serdar.
 
anushree ari
Ranch Hand
Posts: 98
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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..
2) Add 1
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
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
thx sunita,serdar,
i'll practice very well with the binary, now iam having clear idea about -ve and +ve values,
thx guys,
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic