HOWTO · Java

在 Java 中创建无符号整数

本文介绍如何在 Java 中创建无符号整数。

本页内容

有符号整数作为正负值范围存储在数据库中,从 -1 到 -128。与此相反,无符号整数仅包含从 0 到 255 的大量正范围值,没有负值。这意味着无符号整数永远不能存储负值。

在 Java 中,数据类型集不明确包含任何无符号的 int。但是,根据用例,可以将其他数据类型视为无符号整数。Java 提供了一个 long 数据类型来存储更大的无符号值。

long 数据类型是 64 位大小,在内部处理二进制补码。在 Java 8 和更高版本中,long 数据类型可以存储范围从 0 到 2^64-1 的值。与简单的 int 数据类型相比,它提供了更多的数据范围。

下面是定义两种数据类型的大小和区别的代码块。

public class Main {
  public static void main(String[] args) {
    System.out.println("Size of int: " + Integer.SIZE + "bits");
    System.out.println("Size of int: " + Long.SIZE + "bits");
    int signedInt = -2345678;
    long unsignedValue = signedInt & 0xffffffffL;
    System.out.println(signedInt);
    System.out.println(unsignedValue);
  }
}

在上面的代码块中,前两个语句打印 Integer 和 Long 类的大小。整数是一种原始数据类型,用于保存 int 值。

int 的大小打印为 32 个字节,而 Long 包装类的大小打印为 64 个字节。这些类定义了表示包装类大小的静态和最终变量。

在打印语句旁边,定义了两个局部变量或类变量。变量是 int 和 long 数据类型。在整数中实例化的值是负数,因为它同时包含负值和正值。

在 long 变量中,有符号整数使用按位 & 运算符进行运算。它适用于转换为二进制格式的数字的二进制补码。所以在内部,它首先将负值转换为二进制形式。在两个二进制值之间,它对两个值执行逻辑&操作。运算符最终会将负值转换为正数。

上面两行程序的输出如下所示。

Size of int: 32bits
Size of int: 64bits
-2345678
4292621618