您的位置:首页 > 编程语言 > Java开发

Java Puzzlers笔记--puzzle 5: The joy of Hex 十六进制计算问题

2007-03-03 19:09 741 查看
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));
 }
}
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息