ビット単位シフト演算子は、2 進数オブジェクトのビット値を移動します。
左方オペランドには、シフトされる値を指定します。右方オペランドには、値のビットが
シフトされる桁数を指定します。結果は、左辺値ではありません。両方のオペランドに同じ優先順位が付けられ、
左から右の結合順序が指定されます。
演算子 | 使用法 |
---|---|
<< | ビットが左方にシフトされることを指示します。 |
>> | ビットが右方にシフトされることを指示します。 |
各オペランドは、整数型または列挙型でなければなりません。 コンパイラーは、オペランドの整数拡張を実行し、その後、右方オペランドが int 型に変換されます。 結果には、左方オペランドと同じ型が指定されます (算術変換の後)。
右方オペランドが負の値、またはシフトされる式のビット幅より大きいかまたは等しい値を 保持しないようにする必要があります。このような値でビット単位シフトを行うと、 結果は予測不能な値になります。
右方オペランドに 0 がある場合は、結果は左方オペランドの値になります (通常の算術変換が実行された後)。
<< 演算子は、空になったビットをゼロで埋めます。例えば、left_op が値 4019 を持っている場合、left_op のビット・パターン (16 ビットの形式) は 次のようになります。
0000111110110011
式 left_op << 3 は、次のビット・パターンを生成します。
0111110110011000
式 left_op >> 3 は、次のビット・パターンを生成します。
0000000111110110