public class JosOfHex{
public void main(String[] args){
System.out.println(
Long.toHexString(0x100000000 + 0xcafebabe));
}
}
Solution:
显示:cafebabe
由于0x100000000在int中的溢出表示为0x 0000 0001 0000 0000L
而 0xcafebabe 在int中的溢出表示为0x ffff ffff cafe babeL 因为高位为1是,对int扩展为
long是高32位表示为ffff ffff;
TID:
negative decimal constants are clearly identifiable by the presentce of a minus
sign.
Hex and octal literals are negative if theic high-order bit is set.
it is generally best to avoid mixed-type computations.
Correctly:
public class JoyOfHex{
public static void main(String[] args){
System.out.println(Long.toHexString(0x100000000L + 0xcafebabeL));
}
}