Java 右シフト->>>

Rashmi Patidar 2023年10月12日
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
著者: 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 Operator