[声明]所有代码均来自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
分享到:
相关推荐
**谜题5:十六进制的趣事** - **描述**:涉及十六进制数值的处理,结果与预期不符。 - **解惑**:在Java中,十六进制数可以通过前缀`0x`或`0X`表示。需要注意的是,十六进制数的范围和二进制、十进制数有所不同。...
#### 十六进制的趣事 在计算机科学领域中,十六进制是一种常用的数字表示方法,它以16为基数,由0-9和A-F(或a-f)组成。在Java中,十六进制的应用也相当广泛,尤其是在处理颜色值、内存地址等场合。 1. **声明与...
### 谜题 5:十六进制的趣事 此谜题可能涉及到将十六进制转换为十进制或者二进制的操作,Java中的`Integer.parseInt()`或`Integer.toHexString()`方法可以帮助完成这种转换。 ### 谜题 6:多重转型 多重转型涉及...
5. **十六进制的趣事**:谜题5可能揭示了在Java中处理十六进制数值时的陷阱,包括解析、转换或显示的问题。 6. **多重转型**:Java的多态性和类型转换是其核心特性之一,谜题6可能讨论了不当转换导致的错误。 7. *...
谜题5:十六进制的趣事 谜题6:多重转型 谜题7:互换内容 谜题8:Dos Equis 谜题9:半斤 谜题10:八两 Java谜题2——字符谜题 谜题11:最后的笑声 谜题12:ABC 谜题13:畜牧场 谜题14:转义字符的溃败 ...