我注意到我可以用2 << 5来得到64,用1000 >> 2来得到250。
我也可以在打印中使用>>:
print >>obj, "Hello world"
这里发生了什么?
我注意到我可以用2 << 5来得到64,用1000 >> 2来得到250。
我也可以在打印中使用>>:
print >>obj, "Hello world"
这里发生了什么?
当前回答
是“按位”操作符。 https://wiki.python.org/moin/BitwiseOperators
>>> help("symbols")
+-------------------------------------------------+---------------------------------------+
| Operator | Description |
|=================================================|=======================================|
| "<<", ">>" | Shifts |
+-------------------------------------------------+---------------------------------------+
| "&" | Bitwise AND |
+-------------------------------------------------+---------------------------------------+
| "|" | Bitwise OR |
+-------------------------------------------------+---------------------------------------+
| "~x" | bitwise NOT |
+-----------------------------------------------------------------------------------------+
| "^" | Bitwise XOR |
+-------------------------------------------------+---------------------------------------+
X << y 返回x,其中的位向左移动了y位(右边的新位为零)。这就等于x乘以2**y。
X >> y 返回x,位向右移动y位。这和//'ing x * 2* y是一样的。
PD:在python 3.9中,应用于字典的操作符“|”合并字典。
https://docs.python.org/3.9/whatsnew/3.9.html
>>> x = {"key1": "value1 from x", "key2": "value2 from x"}
>>> y = {"key2": "value2 from y", "key3": "value3 from y"}
>>> x | y
{'key1': 'value1 from x', 'key2': 'value2 from y', 'key3': 'value3 from y'}
>>> y | x
{'key2': 'value2 from x', 'key3': 'value3 from y', 'key1': 'value1 from x'}
其他回答
<< Mean any given number will be multiply by 2the power
for exp:- 2<<2=2*2'1=4
6<<2'4=6*2*2*2*2*2=64
是“按位”操作符。 https://wiki.python.org/moin/BitwiseOperators
>>> help("symbols")
+-------------------------------------------------+---------------------------------------+
| Operator | Description |
|=================================================|=======================================|
| "<<", ">>" | Shifts |
+-------------------------------------------------+---------------------------------------+
| "&" | Bitwise AND |
+-------------------------------------------------+---------------------------------------+
| "|" | Bitwise OR |
+-------------------------------------------------+---------------------------------------+
| "~x" | bitwise NOT |
+-----------------------------------------------------------------------------------------+
| "^" | Bitwise XOR |
+-------------------------------------------------+---------------------------------------+
X << y 返回x,其中的位向左移动了y位(右边的新位为零)。这就等于x乘以2**y。
X >> y 返回x,位向右移动y位。这和//'ing x * 2* y是一样的。
PD:在python 3.9中,应用于字典的操作符“|”合并字典。
https://docs.python.org/3.9/whatsnew/3.9.html
>>> x = {"key1": "value1 from x", "key2": "value2 from x"}
>>> y = {"key2": "value2 from y", "key3": "value3 from y"}
>>> x | y
{'key1': 'value1 from x', 'key2': 'value2 from y', 'key3': 'value3 from y'}
>>> y | x
{'key2': 'value2 from x', 'key3': 'value3 from y', 'key1': 'value1 from x'}
2 << 5(左移)
向左移动2(二进制)5位。(向右注入0)
bin(16) # '0b10'
shifted = bin(2) + '0' * 5 # '0b1000000'
int(shifted, 2) # 64
2 << 5 # 64
1000 >> 2(右移)
向右移动1000(二进制)2位。(往左注入0)
bin(1000) # '0b1111101000'
# add 00 to the left and remove last digit from the right
# '0b 00(add these bits) 11111010 00(remove these bits)'
shifted = '0b0011111010'
int(shifted, 2) # 250
1000 >> 2 # 250
这些是移位运算符
x << y返回x,其中比特向左移动y位(和 右边的新位是零)。这和 x乘以2**y。 x >> y返回x,位移位到 右移y位。这和//'ing x * 2* y是一样的。
另一种情况涉及print >>obj, "Hello World"是Python 2中print语句的"print chevron"语法(在Python 3中被删除,由print()函数的file参数取代)。输出不是写入标准输出,而是传递给obj.write()方法。一个典型的例子是具有write()方法的文件对象。请参阅最近一个问题的答案:Python中的双大于号。