什么是“>>”和“<<”在python中意味着什么?

时间:2015-10-12 11:42:15

标签: python

我试图在这里找到答案,但没找到。

“>>”是什么和“<<”在python中意味着什么?

口译员的例子:

In [9]: 23 >> 64
Out[9]: 0

In [10]: 23 << 64
Out[10]: 424275113695319687168L

In [11]: 1 >> 2
Out[11]: 0

In [12]: 32132345235423451 >> 2
Out[12]: 8033086308855862

In [13]: 321323452354566423451 >> 2
Out[13]: 80330863088641605862L

In [14]: 2 >> 2
Out[14]: 0

In [15]: 233 >> 2
Out[15]: 58

In [16]: 33 >> 2
Out[16]: 8

In [17]: 3 >> 2
Out[17]: 0

在此处查找用法https://stackoverflow.com/a/14854406/4436022

3 个答案:

答案 0 :(得分:1)

<<>>分别是二进制左移和二进制右移。

左操作数值向左移动右操作数指定的位数。

示例,代码:temp = 14 << 2 The variable temp has a value of 56 because 14 (00001110 in binary) shifted left two bits equals 56 (00111000 in binary).

左操作数值向右移动右操作数指定的位数。

示例,代码:temp = -14 >> 2 temp has a value of -4: -14 (11110010 in two's complement binary) shifted right two bits equals -4 (11111100 in two's complement binary).

答案 1 :(得分:1)

位移,与C一样。请阅读this链接。

基本上<< 1快速将整数乘以2而>> 1将整数除以2。<< n就像执行<< 1 n次,因此它乘以2**n。同样,>> n2**n进行整数除法。

从技术上讲,如果您在binary中表示您的号码(与计算机一样),<<会移动左侧的所有位,>>会将所有位向右移位。

因此,当使用<<2时,由(00000011)以二进制表示的3变为(00001100)(00001100)是12的表示。再次,3>>1(00000011)移位到(00000001),即{{1与1相同的结果。

答案 2 :(得分:0)

这些运算符是位移的:

  • >>将位模式向右移动 - 即将所有位向右移动 - 相当于除以2的幂

  • <<将位模式向左移位 - 即将所有位向左移动 - 相当于乘以2的幂:

5&gt;&gt; 2 = 1: 相当于

101碱基2右移2 = 001碱基2 = 1

1&lt;&lt; 2 = 4: 相当于

001碱基2左移2 = 100碱基2 = 4