ビット単位左シフトと右シフト << >>

ビット単位シフト演算子は、2 進数オブジェクトのビット値を移動します。 左方オペランドには、シフトされる値を指定します。右方オペランドには、値のビットが シフトされる桁数を指定します。結果は、左辺値ではありません。両方のオペランドに同じ優先順位が付けられ、 左から右の結合順序が指定されます。

演算子 使用法
<< ビットが左方にシフトされることを指示します。
>> ビットが右方にシフトされることを指示します。

各オペランドは、整数型または列挙型でなければなりません。 コンパイラーは、オペランドの整数拡張を実行し、その後、右方オペランドが int 型に変換されます。 結果には、左方オペランドと同じ型が指定されます (算術変換の後)。

右方オペランドが負の値、またはシフトされる式のビット幅より大きいかまたは等しい値を 保持しないようにする必要があります。このような値でビット単位シフトを行うと、 結果は予測不能な値になります。

右方オペランドに 0 がある場合は、結果は左方オペランドの値になります (通常の算術変換が実行された後)。

<< 演算子は、空になったビットをゼロで埋めます。例えば、left_op が値 4019 を持っている場合、left_op のビット・パターン (16 ビットの形式) は 次のようになります。

0000111110110011

left_op << 3 は、次のビット・パターンを生成します。

0111110110011000

left_op >> 3 は、次のビット・パターンを生成します。

0000000111110110
IBM Copyright 2003