>> operator in Python

What does the >> operator do? For example, what does the following operation 10 >> 1 = 5 do?


Solution 1:

It's the right bit shift operator, 'moves' all bits once to the right.

10 in binary is

1010

shifted to the right it turns to

0101

which is 5

Solution 2:

>> and << are the Right-Shift and Left-Shift bit-operators, i.e., they alter the binary representation of the number (it can be used on other data structures as well, but Python doesn't implement that). They are defined for a class by __rshift__(self, shift) and __lshift__(self, shift).

Example:

>>> bin(10) # 10 in binary
1010
>>> 10 >> 1 # Shifting all the bits to the right and discarding the rightmost one
5 
>>> bin(_) # 5 in binary - you can see the transformation clearly now
0101 

>>> 10 >> 2 # Shifting all the bits right by two and discarding the two-rightmost ones
2
>>> bin(_)
0010

Shortcut: Just to perform an integer division (i.e., discard the remainder, in Python you'd implement it as //) on a number by 2 raised to the number of bits you were shifting.

>>> def rshift(no, shift = 1):
...     return no // 2**shift
...     # This func will now be equivalent to >> operator.
...

Solution 3:

You can actually overloads right-shift operation(>>) yourself.

>>> class wierd(str): 
... def __rshift__(self,other): 
... print self, 'followed by', other 
... 
>>> foo = wierd('foo') 
>>> bar = wierd('bar') 
>>> foo>>bar 
foo followed by bar 

Reference: http://www.gossamer-threads.com/lists/python/python/122384

Solution 4:

Its the right shift operator.

10 in binary is 1010 now >> 1 says to right shift by 1, effectively loosing the least significant bit to give 101, which is 5 represented in binary.

In effect it divides the number by 2.