JAVA Puzzlers 05问题如下:public class JoyOfHex{
public static void main(String[] args){
System.out.println(
Long.toHexString(0x100000000L+0xcafebabe));
}
}这个程序会打印什么了?
public static void main(String[] args){
System.out.println(
Long.toHexString(0x100000000L+0xcafebabe));
}
}这个程序会打印什么了?
但不是很明白什么意思?
long与int相加,会把int转成long
0xcafebabe因为对于32位的int来说首位是1,所以为保正0进制值不变,转换时前32位全部补1,就变成了0xffffffffcafebabeL
那么结果就是0x0000000100000000L+0xffffffffcafebabeL,结果就是0x100000000cafebabe,首位溢出去掉,就是0xcafebabe了