`
JiongBull
  • 浏览: 8155 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

解惑5:十六进制的趣事

 
阅读更多

[声明]所有代码均来自Joshua Bloch和Neal Gafter所著的<Java解惑>一书,本人仅因学习需要摘抄和注释,感谢二位作者的知识分享.

 

代码:

 

public class JoyOfHex {
	public static void main(String[] args) {
		System.out.println(Long.toHexString(0x100000000L + 0xcafebabe));
	}
}

 

 结果:

 

cafebabe

 

 

分析:

十进制的字面量只有正值,通过前置正负号来表示正负,但是八进制或者十六进制只能通过最高位来表示正负,最高位为1时表示负数.

本题中是long型数据+int型数据,所以int型数据会被扩展至long型.

int型的0xcafebabe最高位进行扩展,0xffffffffcafebabe


运算:

0x0000000100000000L

      +  0xf f f f f f f f cafebabeL

  结果:         0x00000000 cafebabeL

 

 

解决方案代码:

public class JoyOfHex {
	public static void main(String[] args) {
		System.out.println(Long.toHexString(0x100000000L + 0xcafebabeL));
	}
}

 结果:

1cafebabe
 

 

分享到:
评论

相关推荐

    java 解惑.pdf

    **谜题5:十六进制的趣事** - **描述**:涉及十六进制数值的处理,结果与预期不符。 - **解惑**:在Java中,十六进制数可以通过前缀`0x`或`0X`表示。需要注意的是,十六进制数的范围和二进制、十进制数有所不同。...

    java解惑-语法细节介绍

    #### 十六进制的趣事 在计算机科学领域中,十六进制是一种常用的数字表示方法,它以16为基数,由0-9和A-F(或a-f)组成。在Java中,十六进制的应用也相当广泛,尤其是在处理颜色值、内存地址等场合。 1. **声明与...

    java解惑很全的题目

    ### 谜题 5:十六进制的趣事 此谜题可能涉及到将十六进制转换为十进制或者二进制的操作,Java中的`Integer.parseInt()`或`Integer.toHexString()`方法可以帮助完成这种转换。 ### 谜题 6:多重转型 多重转型涉及...

    java 解惑.doc

    5. **十六进制的趣事**:谜题5可能揭示了在Java中处理十六进制数值时的陷阱,包括解析、转换或显示的问题。 6. **多重转型**:Java的多态性和类型转换是其核心特性之一,谜题6可能讨论了不当转换导致的错误。 7. *...

    Java解惑(谜题)CHM中英文双版本

    谜题5:十六进制的趣事 谜题6:多重转型 谜题7:互换内容 谜题8:Dos Equis 谜题9:半斤 谜题10:八两 Java谜题2——字符谜题 谜题11:最后的笑声 谜题12:ABC 谜题13:畜牧场 谜题14:转义字符的溃败 ...

Global site tag (gtag.js) - Google Analytics