[声明]所有代码均来自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
分享到:
相关推荐
项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松copy复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全栈开发),有任何使用问题欢迎随时与我联系,我会及时为您解惑,...
**谜题5:十六进制运算** 在进行十六进制运算时,需要注意数字的类型和表示方式。例如,`Long.toHexString(0x100000000L + 0xcafebabe)`。这里的`0x`前缀表示十六进制,但负数十六进制的表示比较特殊,不能简单地...
**谜题5:十六进制的趣事** - **描述**:涉及十六进制数值的处理,结果与预期不符。 - **解惑**:在Java中,十六进制数可以通过前缀`0x`或`0X`表示。需要注意的是,十六进制数的范围和二进制、十进制数有所不同。...
3. **运算中的应用**:十六进制数值可以参与算术运算。例如: ```java int decimalValue = 0xFF + 10; System.out.println(decimalValue); // 输出265 ``` 4. **位操作**:由于十六进制的特性,它非常适合用于...
谜题5:十六进制的趣事 Java支持十六进制数值表示,如`0x10`代表16。此谜题可能涉及将十六进制字符串转换为十进制数值,或者进行十六进制数值的计算。 谜题6:多重转型 Java的多态特性允许对象转型,但必须遵循继承...
《Java解惑》一书揭示了Java编程中常见的困惑与陷阱,旨在帮助开发者避免这些问题,提高代码质量和效率。以下是对书中的几个关键知识点的详细解释: 1. **奇偶判断优化**: 在Java中,判断一个整数是否为奇数,...
【城投解惑系列之十六:“铁路上”的城投知多少?】 本报告主要探讨了铁路建设领域的城投公司,即铁投,及其在当前中国交通网络中的角色、资金来源、业务结构和风险评估。2021年5月28日,四川省铁路产业投资集团与...
谜题5:十六进制的趣事 谜题6:多重转型 谜题7:互换内容 谜题8:Dos Equis 谜题9:半斤 谜题10:八两 Java谜题2——字符谜题 谜题11:最后的笑声 谜题12:ABC 谜题13:畜牧场 谜题14:转义字符的溃败 ...
- **.NET Core与.NET 5+**:了解.NET Core的特性以及.NET 5及更高版本的发展趋势。 - **Web开发技术**:重点学习ASP.NET Core,包括MVC模式、Razor视图引擎等关键技术。 - **数据库交互**:掌握ADO.NET或Entity ...
二进制数转换为八进制或十六进制,通常是将二进制数分组,每组3位(八进制)或4位(十六进制),不足部分用0补足,然后将每组的二进制数转换为对应的八进制或十六进制数。 【8421码与8421BCD码】 8421码是一种四位...
5. 不要和大众” 在本文中,作者通过答疑解惑的方式分享了关于个人发展、学习热情以及选择的智慧。首先,作者强调了客观审视自我和确定个人目标的重要性。这包括了解自己的兴趣所在,明确自己真正想要的是什么,...
### Java 解惑:常见编程疑惑解析 #### 一、数值表达式详解 ##### 1. 奇偶判断 在Java开发中,判断一个整数是否为奇数时,通常的做法是使用`i % 2 == 1`,但这种方法存在缺陷——当`i`为负数时,此条件不成立。...
有意思的一本书,都是有点难度且又比较有意思的JAVA问题,比如表达式奇数性解惑、找零时刻、长整除、十六进制的趣数等等,特别是这本书的语言也很会激起我们的兴趣,先从实际生活中的故事说起,然后了解所需,最后用...
如果一个整数字面常量没有后缀,则默认为int类型,此时即使它是十六进制或八进制表示,其值也不能超过int类型的最大值。如果要表示超过int类型的值,需要添加L后缀来强制表示为long类型。例如,0x***是一个int类型的...