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,`

. A left shift by `n`)`n` bits is defined as
multiplication with `pow(2,`

; 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 `n`)`pow(2,31)`

in absolute
value. Negative shift counts raise a `ValueError`
exception.

See