How to get the logical right binary shift in python
There isn't a built-in operator for this, but you can easily simulate the >>>
yourself:
>>> def rshift(val, n): return val>>n if val >= 0 else (val+0x100000000)>>n... >>> rshift(-1000, 3)536870787>>> rshift(1000, 3)125
The following alternative implementation removes the need for the if
:
>>> def rshift(val, n): return (val % 0x100000000) >> n
Numpy provides the right_shift()
function that does this:
>>> import numpy>>> numpy.right_shift(1000, 3)125