ホームページ  >  記事  >  Java  >  Java で >>> は何を意味しますか?

Java で >>> は何を意味しますか?

青灯夜游
青灯夜游オリジナル
2019-11-18 16:00:3114204ブラウズ

Java で >>> は何を意味しますか?

は Java で何を意味しますか?

は Java のシフト演算子で、符号なし右シフトを意味します。

シフト演算子のオペランドもバイナリの「ビット」です。これらは、整数型 (主要な型の 1 つ) を処理するために単独で使用できます。

「符号付き」左シフト演算子 (8ce4ebd2407c461d451840632f499d28>) は、演算子の左側のオペランドを、右側に指定された桁数だけ右に移動します。オペレーター。 「符号付き」右シフト演算子は「符号拡張」を使用します。値が正の場合は上位ビットに 0 が挿入され、値が負の場合は上位ビットに 1 が挿入されます。

Java は、 「符号なし」右シフト演算子 (>>>) も追加します。これは、「ゼロ拡張」を使用します。正か負かに関係なく、0 を挿入します。ハイビット。この演算子は C または C では使用できません。

char、byte、または short がシフトされる場合、シフトが実行される前にそれらは自動的に int に変換されます。右側の下位 5 ビットのみが使用されます。これにより、int 内で非現実的な桁数を移動することがなくなります。長い値が処理される場合、最終結果も長い値になります。このとき、long 値の既製桁数を超えないように、右側の下位 6 ビットのみが使用されます。

しかし、「符号なし」右シフトを実行するときに問題が発生する可能性もあります。バイト値または short 値に対して右シフト演算を実行すると、正しい結果が得られない可能性があります (特に Java 1.0 および Java 1.1)。

これらは自動的に int 型に変換され、右にシフトされます。ただし、「ゼロ拡張」は起こらないため、そのような場合には -1 の結果が得られます。次の例を使用して、独自の実装をテストできます:

public class URShift {
public static void main(String[] args) {
int i = -1;
i >>>= 10;
System.out.println(i);
long l = -1;
l >>>= 10;
System.out.println(l);
short s = -1;
s >>>= 10;
System.out.println(s);
byte b = -1;
b >>>= 10;
System.out.println(b);
}
}

以上がJava で >>> は何を意味しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。