什么是>>和<< Python中的运算符?

时间:2011-11-24 06:58:24

标签: python operators bitwise-operators

>><<是什么?

我在代码中读到了这个:

https://github.com/mlaiosa/emlx2maildir/blob/master/emlx2maildir.py

FL_READ = (1<<0)
FL_DELETED = (1<<1)
FL_ANSWERED = (1<<2)
FL_ENCRYPTED = (1<<3)
FL_FLAGGED = (1<<4)
FL_RECENT = (1<<5)
FL_DRAFT = (1<<6)
FL_INITIAL = (1<<7)
FL_FORWARDED = (1<<8)
FL_REDIRECTED = (1<<9)
FL_SIGNED = (1<<23)
FL_IS_JUNK = (1<<24)
FL_IS_NOT_JUNK = (1<<25)
FL_JUNK_LEVEL_RECORDED = (1<<29)
FL_HIGHLIGHT_IN_TOC = (1<<30)

我找不到它的文档。

3 个答案:

答案 0 :(得分:4)

这是bithift运算符。如果您有1(0b1),并将其向左移4位(1 << 4),则得到的是0b10000,即16。

这是文档:http://docs.python.org/reference/expressions.html#shifting-operations

答案 1 :(得分:2)

运算符在section 5.7, "Shifting Operations", of the Python Language Reference中定义:

  

这些运算符接受普通或长整数作为参数。参数转换为通用类型。它们将第一个参数向左或向右移动第二个参数给出的位数。

     

n 位的右移定义为除以pow(2, n)。左移 n 位定义为与pow(2, n)的乘法。负移位计数引发ValueError例外。

答案 2 :(得分:1)

在大多数语言中,包括Python,都是移位运算符。它们处理一个字节的位。

例如,8是0b000010008 >> 1表示将其位向右移1位,在左侧添加零(0b00000100或4)。 8 >> 2表示将其向右移两次。 (0b00000010或2)。 <<是一个左移,它以相反的方式工作。 8 << 1 0b000100008 << 2 0b00100000将出现{{1}}或32。

有关更多信息,请参阅python文档 Python 2.x:http://docs.python.org/reference/expressions.html#shifting-operations
Python 3.x:http://docs.python.org/py3k/reference/expressions.html#shifting-operations