HOWTO · Java

Java 右シフト->>>

この記事では、Java で>>>演算子を使用する方法を紹介します。

Java 言語では、>>> は符号なし右ビットシフト演算子としてよく知られています。符号付き演算子とは異なり、末尾の場所を常にゼロ値で埋めることができます。例を使って、次の操作を理解しましょう。

a と b の 2つの数を考えてみましょう。与えられた 2つの値は以下のとおりです。

a = 20
b = -20
a = 00000000000000000000000000010100
b = 11111111111111111111111111101100

ビット単位の右シフト演算子の使用例は、値の除算または 2 による変数です。

次に、符号なし右シフト演算子、つまり a>>>1 を適用しましょう。演算子は、変数のすべてのビットを内部的に右側にシフトします。末尾の位置をゼロ値で埋めます。

以下は、同じことを理解するためのコードブロックです。

public class RightShiftOperator {
  public static void main(String[] args) {
    System.out.println("The value of a and b before >>> operator");
    int x = 20;
    int y = -20;
    System.out.println(Integer.toBinaryString(x));
    System.out.println(Integer.toBinaryString(y));
    System.out.println("The value of a and b after applying >>> operator");
    System.out.println(Integer.toBinaryString(x >>> 1));
    System.out.println(Integer.toBinaryString(y >>> 1));
    int divX = x >>> 1;
    int divY = y >>> 1;
    System.out.println("Half the value of x: " + divX);
    System.out.println("Half the value of y: " + divY);
  }
}

上記のコードブロックでは、変数 ab がそれぞれ値 20 と-20 で初期化されます。

Integer クラスの toBinaryString() 関数は、出力ストリームメソッドに適用されます。その機能は、整数変数をバイナリ文字列に変換することです。

このメソッドは、Java 1.2 バージョンで使用できます。

Integer クラスには、プライマリ int 値をそれぞれのラッパーオブジェクトに変換する関数があるため、プリミティブ値へのラッパーとして機能します。

メソッドの入力は、文字列値に変換される int 変数です。関数に渡されるパラメーターは、演算子とともに変数です。

最後に、操作が実行された変数が出力されます。

>>> 演算子を使用したコードの出力は次のとおりです。

The value of a and b before >>> operator
00000000000000000000000000010100
11111111111111111111111111101100
The value of a and b after applying >>> operator
00000000000000000000000000001010
01111111111111111111111111110110
Half the value of x: 10
Half the value of y: 2147483638