は 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 サイトの他の関連記事を参照してください。