`

java解惑之—十六进制的字面常量。

阅读更多

先来看一个小程序:

public class JoyOfHex{

     public static void main(Sting[ ] args){

          System.out.println(

                Long.toHexString(0x100000000L+0xcafebabe));

     }

}

初看这个小程序的结果应该是:1cafebabe;但是并不是我们想象的那样。这个问题设计到了十进制和十六进制以及八进制数

在JAVA中字面常量的属性问题。对于十进制数,JAVA中如果不显示的在前面加负号,那么就是正数,但是对与十六进制和八进制数,如果最高位被置位的话,那么就表示一个负数了。现在该明白了吧o(∩_∩)o...对于上面的例子0xcafebabe代表的数值是

-889275714,注意到左边的数值是Long类型的(它是八个字节,那么最多可以容纳64位,也就是16位十六进制数,所以不用考虑溢出),所以对于右边的int型的变量要提升为Long型的,结果为0xffffffffcafebabe;

注意:如果在0xcafebabe改为0xcafebabeL那么结果就是正确的,因为加是L后就避免了符号扩张哈哈。

 

今天又学到了一点点小知识。。记录一下哈哈。。

 

分享到:
评论

相关推荐

    《Java解惑》

    十六进制和八进制字面常量的类型默认是`int`,其正负取决于最高位。如果最高位为1,那么这个常量会被解释为负数。例如,`0x80`表示-128,`0x8001`表示-32767。若要表示大于`Integer.MAX_VALUE`的数,需加上`L`后缀...

    Java解惑.doc

    同样,负的十六进制和八进制字面常量需要根据最高位判断其正负。例如,`0x80`是一个负的十六进制整数,因为它在二进制表示中最高位为1,但在转换为`int`时,由于最高位(第32位)为0,所以`0x81`是正数。如果需要...

    Java编程中须注意的细节.pdf

    如果一个十六进制或八进制字面常量的最高位设置了1,则该常量表示为负数。 通过理解并掌握以上提到的Java编程细节,开发者可以更加精确地控制代码逻辑,避免不必要的错误,并写出更加健壮的程序。这不仅有助于减少...

    Java解惑(中文版)_java_java解惑_solve65p_

    《Java解惑(中文版)》是一本专为Java初学者设计的学习资料,旨在帮助读者解答在学习Java过程中遇到的各种困惑。"solve65p"可能代表这本书包含65个问题或主题,每个都深入浅出地进行了讲解,旨在解决初学者在编程...

    基于 QT 编写的十六进制编辑器,采用 C++ 进行开发,目的是让 Deepin 上具有强大而免费的十六进制编辑器 .zip

    项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松copy复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全栈开发),有任何使用问题欢迎随时与我联系,我会及时为您解惑,...

    Java 解惑 (中文)

    负的十六进制与八进制字面常量 Java中的数字字面常量默认为`int`类型,无论采用何种进制表示。特别地,当数值超过`int`的最大范围时,需要显式指定为`long`类型,例如: ```java long num = 2147483648L; // 以...

    java 解惑 java 解惑 java 解惑

    java 解惑 java 解惑 java 解惑 java 解惑 java 解惑 java 解惑

    java解惑-语法细节介绍

    ### Java解惑——语法细节介绍 #### 概述 Java作为一种广泛应用的编程语言,拥有庞大的用户群体和丰富的应用场景。在日常开发过程中,我们往往会遇到一些容易忽视却又十分重要的语法细节。这些细节虽然不起眼,但...

    JAVA解惑

    #### 负的十六进制与八进制字面常量 在Java中,“数字字面常量”的默认类型是`int`,不论其采用何种进制表示。然而,当尝试表示超出`int`范围的负数时(如`-2147483648`),编译器将抛出错误。为了正确表示大负数,...

    JAVA解惑.pdf

    **背景介绍**:在Java中,类字面常量是指直接引用一个类的对象,例如`Me.class`,这种方式可以获取到当前类的`Class`对象。`Class`对象提供了很多方法来获取类的信息,其中之一便是`.getName()`方法。 **应用场景**...

    Java解惑word版

    对于十六进制和八进制,最高位为 1 时,字面常量被视为负数。例如,`0x80000001` 在作为 `int` 类型时是负数,而作为 `long` 类型则是正数。 总结来说,Java 在处理数值表达式时需要关注数据类型、精度和溢出问题。...

    Java解惑 PPT1

    【Java解惑PPT1】深入探讨Java编程中的常见迷惑 在Java编程中,了解语言的细微之处至关重要,因为这可能会导致意想不到的行为。本PPT主要涵盖了五个有趣的Java谜题,帮助开发者理解Java的一些核心概念。 **谜题1:...

    java 解惑.doc

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

    Java解惑 布洛克 著;陈昊鹏 译

    《Java解惑》 布洛克 著;陈昊鹏 译 扫描清晰带目录,仅供参阅,请支持正版

    Java解惑 中文版

    《Java解惑中文版》是一本专为Java程序员设计的指南,旨在帮助读者解决在编程过程中遇到的各种问题,提升程序的健壮性。本书深入浅出地探讨了Java语言的核心概念、常见疑惑以及最佳实践,旨在使开发者能够编写出更...

    Java PUZZLE Java 解惑

    Java PUZZLE Java 解惑 Java PUZZLE Java 解惑 Java PUZZLE Java 解惑Java PUZZLE Java 解惑 Java PUZZLE Java 解惑 Java PUZZLE Java 解惑

    JAVA 解惑 java经典

    "JAVA解惑"的主题针对的是Java学习过程中遇到的一些常见问题和难点,旨在帮助开发者深入理解和解决这些问题。以下是基于这个主题和描述可能涵盖的一些关键知识点: 1. **Java基础**:这可能包括变量、数据类型、...

    java解惑 PDF版

    在Java编程中,开发者经常会遇到各种误区和混淆之处,这些问题可能涉及语言特性、算法逻辑、性能优化等多方面。文档《java解惑 PDF版》中列举了95个这样的谜题,每个谜题都旨在帮助开发者理解并纠正一些常见的错误...

    Java解惑.pdf

    Java编程语言是世界上最流行的开发平台之一,广泛应用于企业级应用、移动应用(尤其是Android系统)、大数据处理、云计算等领域。这份“Java解惑.pdf”文档很可能包含了解决Java开发者在编程过程中遇到的常见问题和...

Global site tag (gtag.js) - Google Analytics