Java での符号なし整数の作成

Rashmi Patidar 2023年10月12日
Java での符号なし整数の作成

符号付き整数は、-1 から -128 までの正と負の値の範囲としてデータベースに格納されます。それとは反対に、符号なし整数は、0 から 255 までの負の値ではなく、正の範囲値の大きなセットのみを保持します。これは、符号なし整数が負の値を格納できないことを意味します。

Java では、データ型セットに符号なしの int が明示的に含まれていません。ただし、ユースケースに基づいて、他のデータ型は符号なし整数として扱うことができます。Java は、より大きな符号なし値を格納するための長いデータ型を提供します。

long データ型は 64 ビットサイズであり、内部で 2 の補数で機能します。Java 8 以降のバージョンでは、long データ型は 0 から 2^64-1 の範囲の値を格納できます。単純な int データ型と比較して、より多くのデータ範囲を提供します。

以下は、2つのデータ型のサイズと違いを定義するためのコードブロックです。

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);
  }
}

上記のコードブロックでは、最初の 2つのステートメントが Integer クラスと Long クラスのサイズを出力します。整数は、int 値を保持するためのプリミティブデータ型です。

int のサイズは 32 バイトに出力され、Long ラッパークラスのサイズは 64 バイトに出力されます。クラスには、ラッパークラスのサイズを表す静的変数と最終変数が定義されています。

print ステートメントの横に、2つのローカル変数またはクラス変数が定義されています。変数は int および long データ型です。整数でインスタンス化された値は、負の値と正の値の両方を保持するため、負です。

long 変数では、符号付き整数はビット単位の&演算子で操作されます。これは、2 進形式に変換された数値の 2 の補数で機能します。したがって、内部的には、最初に負の値をバイナリ形式に変換します。2つのバイナリ値の間で、2つの値に対して論理的な&演算を実行します。演算子は最終的に負の値を正の数に変換します。

上記の 2つのプログラム行の出力を以下に示します。

Size of int: 32bits
Size of int: 64bits
-2345678
4292621618
著者: Rashmi Patidar
Rashmi Patidar avatar Rashmi Patidar avatar

Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.

LinkedIn

関連記事 - Java Integer