>>
和<<
是什么?
我在代码中读到了这个:
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)
我找不到它的文档。
答案 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是0b00001000
。 8 >> 1
表示将其位向右移1位,在左侧添加零(0b00000100
或4)。 8 >> 2
表示将其向右移两次。 (0b00000010
或2)。 <<
是一个左移,它以相反的方式工作。 8 << 1
0b00010000
或8 << 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