我注意到在python中使用bitshifting和n ^ power之间有区别:有人可以解释为什么吗?

des*_*ff1 0 python bit-shift

第一:

    for i in range(4):
         return (1 << i)
Run Code Online (Sandbox Code Playgroud)

第二个:

for i in range(4):
     return (2^i)
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么2之间存在差异?

wim*_*wim 6

因为幂语法**不是^:

>>> [2**i for i in range(4)]
[1, 2, 4, 8]
>>> [1 << i for i in range(4)]
[1, 2, 4, 8]
Run Code Online (Sandbox Code Playgroud)

注意:^(hat)用于按位异或.

  • 更不用说它必须是'2**(i + 1)`来匹配'2 << i`.(还有,祝福在for循环中有一个`return`语句......) (3认同)