#
5.7 シフト演算 (shifting operation)

シフト演算は、算術演算よりも低い優先順位を持っています:

  `shift_expr` | ::= | `a_expr | shift_expr ( "<<" | ">>" ) a_expr`

  Download entire grammar as text.

シフトの演算子は整数または長整数を引数にとります。 引数は共通の型に変換されます。シフト演算では、最初の引数を 二つ目の引数に応じたビット数だけ、左または右にビットシフト します。

n ビットの右シフトは、`pow(2,n)` による除算 として定義されています。 n ビットの左シフトは、 `pow(2,n)` による乗算として定義されています; 整数の場合、桁あふれ (overflow) のチェックはされないので、 演算によって末端のビットは捨てられます。また、結果の絶対値が `pow(2, 31)` よりも小さくない場合には、符号の反転が起こります。 負のビット数でシフトを行うと、 `ValueError` 例外を 送出します。