#
5.7 Shifting operations

The shifting operations have lower priority than the arithmetic operations:

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

These operators accept plain or long integers as arguments. The arguments are converted to a common type. They shift the first argument to the left or right by the number of bits given by the second argument.

A right shift by n bits is defined as division by `pow(2,n)`. A left shift by n bits is defined as multiplication with `pow(2,n)`; for plain integers there is no overflow check so in that case the operation drops bits and flips the sign if the result is not less than `pow(2,31)` in absolute value. Negative shift counts raise a `ValueError` exception.