python按位运算的奇怪结果

时间:2019-12-13 02:52:59

标签: python bit-manipulation

任何人都可以解释吗?我对以下结果感到非常困惑。非常感谢!

为什么这不起作用!???

`i = 2
table[i] = i&1 + table[i>>1] `

以下作品

`tmp = i&1
 table[i] = tmp + table[i>>1]`

1 个答案:

答案 0 :(得分:0)

这是由于parens欺骗和&的优先级较低:这是一个工作原理示例:

2& will not happen until 2+ 2 >> 2
In [569]: 2&2 + 2>>2                                                                                                                                                                           
Out[569]: 0

Here we use the and in parens first, before adding to 2>>2
In [570]: (2&2) + 2>>2                                                                                                                                                                         
Out[570]: 1

Here's what the operator precedence looks like for the original operation:
In [571]: 2&(2 + 2>>2)                                                                                                                                                                         
Out[571]: 0

相关问题