开发者

>> operator in Python

What does the >> operator do? For example, what does the following operation 10 >> 1 =开发者_StackOverflow中文版 5 do?


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


>> 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.
...


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


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.


See section 5.7 Shifting Operations in the Python Reference Manual.

They shift the first argument to the left or right by the number of bits given by the second argument.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜