如何转变“1<

时间:2011-10-18 16:26:49

标签: python

我在Python中有以下代码:

for i in range(4):
  if self.start == self.corners[i]:
    self.visitedCorners += (1 << i)

我正在与坐标合作。 self.startself.corners是坐标。

所以我的代码在顶部,我想检查一下是否是一个角落。 如果开始是一个角落,我做那个转变。但是,这种转变是如何运作的?

我不想要任何其他代码;我只是想了解这个代码。

1 个答案:

答案 0 :(得分:4)

1 << i所做的只是产生i的数字 - 最低有效位设置为1,所有其他位设置为0

>>> for i in range(4): print bin(1 << i)
... 
0b1
0b10
0b100
0b1000

在代码中,self.visitedCorners是一个位掩码,其中四个最低有效位对应于四个角。 for i循环的每次迭代都会将self.visitedCorners中的相应位设置为1(假设if条件成立)。