HOWTO · Java
Java での符号なし整数の作成
この記事では、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