我在Python中有以下代码:
for i in range(4):
if self.start == self.corners[i]:
self.visitedCorners += (1 << i)
我正在与坐标合作。 self.start
和self.corners
是坐标。
所以我的代码在顶部,我想检查一下是否是一个角落。 如果开始是一个角落,我做那个转变。但是,这种转变是如何运作的?
我不想要任何其他代码;我只是想了解这个代码。
答案 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
条件成立)。