9.28作业2

枚举的类型及使用
枚举不属于原始数据类型,它的每个具体值都引用一个特定的对象。相同的值则引用同一个对象。
可以使用“”和equals()方法直接比对枚举变量的值,换句话说,对于枚举类型的变量,“”和equals()方法执行的结果是等价的。

以及枚举可用于Switch语句中
枚举类型是引用类型
在类型转换中从整型到浮点型存在精度损失
在计算机科学中,原码、反码和补码是表示有符号整数(即可以表示正数、负数和零)的三种不同方式。这些表示方法主要用于二进制系统中,特别是在计算机内部处理整数时。下面,我将逐一解释这些概念,并通过Java程序来验证Java中整数是如何表示的。

原码(Sign-Magnitude Representation)

原码是一种直接表示数值的方法,其中最高位用来表示符号(0为正,1为负),其余位表示数值本身。正数的原码:最高位为0,其余位表示该数的绝对值。负数的原码:最高位为1,其余位表示该数的绝对值。

反码(One’s Complement)

反码是一种用于简化二进制加减运算的表示方法。对于正数,反码与原码相同;对于负数,反码是原码除符号位外,其余各位取反(0变1,1变0)。

补码(Two’s Complement)

补码是目前计算机系统中最常用来表示有符号整数的方法。正数的补码与原码相同;负数的补码是其反码加1。补码的优点在于它简化了加减运算,并且只有一个零的表示(即0000...00),从而简化了计算机的算术逻辑单元(ALU)的设计。

Java中的整数表示

在Java中,整数类型(如byte、short、int、long)在内存中的存储采用的是补码表示法。这是因为补码表示法具有许多优点,如前面所述。

示例程序

为了验证Java中整数是采用补码表示的,我们可以编写一个简单的Java程序,通过位操作来观察正数和负数的表示。

java
public class IntegerRepresentation {
public static void main(String[] args) {
int positiveNumber = 5;
int negativeNumber = -5;

    // 打印正数的二进制表示(使用Integer.toBinaryString方法)
    System.out.println("Positive number: " + positiveNumber + ", Binary: " + Integer.toBinaryString(positiveNumber));

    // 打印负数的二进制表示(注意:直接打印的是补码表示)
    System.out.println("Negative number: " + negativeNumber + ", Binary (complement): " + Integer.toBinaryString(negativeNumber));

    // 验证负数的补码表示
    // 负数的原码(假设为8位,仅用于说明): 1000 0101
    // 负数的反码: 1111 1010
    // 负数的补码: 1111 1011
    // 注意:Java中的Integer是32位的,但这里为了简化,我们使用8位来说明

    // 通过位操作来验证补码
    int negativeNumberInBits = -5; // 在Java中,-5已经是以补码形式存储的
    int complement = ~negativeNumberInBits + 1; // 反码加1应得到其正数

    // 输出验证结果
    System.out.println("Complement + 1 of negative number: " + complement); // 应该输出5
}

}

在上面的程序中,我们首先打印了正数和负数的二进制表示(实际上,对于负数,直接打印的是其补码表示)。然后,我们通过对负数的补码进行取反加1操作来验证补码表示的正确性。根据补码的定义,取反加1应得到其正数表示。

通过运行这个程序,我们可以观察到Java中整数确实是采用补码来表示的。

posted @ 2024-09-28 00:33  吉尼泰梅  阅读(7)  评论(0编辑  收藏  举报