【问题标题】:What does ">>" and "<<" means in python? [duplicate]“>>”和“<<”在python中是什么意思? [复制]
【发布时间】:2016-01-09 21:08:08
【问题描述】:

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

“>>”和“

解释器中的示例:

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

【问题讨论】:

标签: python


【解决方案1】:

&lt;&lt;&gt;&gt; 分别是二进制左移和二进制右移。

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

例如,代码:temp = 14 &lt;&lt; 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).

【讨论】:

    【解决方案2】:

    它是位移,就像在 C 中一样。请阅读this 链接。

    基本上&lt;&lt; 1 以快速的方式将一个整数乘以 2,而&gt;&gt; 1 进行整数除以 2。&lt;&lt; n 就像在做 &lt;&lt; 1 n 次,所以它乘以 2**n。同理,&gt;&gt; n 除以2**n

    从技术上讲,如果你用binary 表示你的数字(就像计算机一样),&lt;&lt; 将所有位移到左侧,&gt;&gt; 将所有位移到右侧。

    因此,以二进制形式由 (00000011) 表示的 3 在与 &lt;&lt;2 一起应用时变为 (00001100)(00001100) 是 12 的表示。同样,3&gt;&gt;1(00000011) 转换为 (00000001),即1,即结果与3 div 2 相同。

    【讨论】:

      【解决方案3】:

      这些操作符是位移的:

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

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

      5 >> 2 = 1: 相当于

      101 base 2 右移 2 = 001 base 2 = 1

      1

      001 base 2 左移 2 = 100 base 2 = 4

      【讨论】:

        猜你喜欢
        • 2015-02-13
        • 2019-04-15
        • 2020-03-26
        • 2019-12-17
        • 2011-12-23
        • 2013-01-30
        • 1970-01-01
        • 2020-10-27
        • 2015-07-15
        相关资源
        最近更新 更多