执行按位运算时,我在 python 中看到了一个奇怪的行为
>>> bin(4)
'0b100'
>>> bin(9)
'0b1001'
>>> bin(9^4)
'0b1101'
上面我看到了 OR 的预期行为,数字在右侧对齐,每个位都经过 ORed 生成结果。但是,在我看来,当我 OR 两个相同的整数时,结果应该是数字时总是 0。
>>> bin(9^9)
'0b0'
这是一个错误还是一个非常奇怪的功能?谁能解释一下?
执行按位运算时,我在 python 中看到了一个奇怪的行为
>>> bin(4)
'0b100'
>>> bin(9)
'0b1001'
>>> bin(9^4)
'0b1101'
上面我看到了 OR 的预期行为,数字在右侧对齐,每个位都经过 ORed 生成结果。但是,在我看来,当我 OR 两个相同的整数时,结果应该是数字时总是 0。
>>> bin(9^9)
'0b0'
这是一个错误还是一个非常奇怪的功能?谁能解释一下?
您正在应用异或 ( ^
)。您正在尝试应用常规的按位或 ( |
)。
来自Python 维基:
x | 是的
执行“按位或”。
如果 x AND y 的对应位为 0,则输出的每一位为 0,否则为 1。x ^ y
执行“按位异或”。
如果 y 中的该位为 0,则输出的每个位与 x 中的相应位相同,如果 y 中的该位为 1,则它是 x 中该位的补码。