首页 > 解决方案 > 用 Python 解释 <<

问题描述

下面的代码应该如何解释?

s = "";
my_arr = [1, 2, .....]
for i in range(len(my_arr)):
    for j in range(len(my_arr)):
        if (i & (1<<j)) != 0:
            s += str(my_arr[j])

我无法理解以下语法:

if (i & (1<<j))!=0

标签: pythonpython-3.x

解决方案


<<位运算符

x << y

返回 x ,其中位向左移动了 y 位(右侧的新位为零)。这与将 x 乘以 2**y 相同。

例子

x << y对应x*(2**y)

如果x=3和是。y=4_x<<y3*(2**4)=3*16=48

在您的情况下,因为xis 1,内部 for 循环在该部分代码中考虑 2 的幂。


推荐阅读