python异或运算

2021-05-06  本文已影响0人  wanzhouyi

一、异或运算的定义

如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。
在python中用^表示,如下代码(注意是二进制表示)。

1 ^ 0 #结果为1,因为1和0不同
0 ^ 1 #结果为1,因为0和1不同
1 ^ 1 #结果为0,因为1和1相同
0 ^ 0 #结果为0,因为0和0相同

二、异或运算的性质

三、异或运算的实例

5 ^ 3 为例,理解python中异或运算的过程
首先python会将5和3转换为二进制:101^011
然后按位求异或结果:110
最后转换成十进制,结果为6

三、异或运算的应用

  1. 交换两个数
a, b = 5, 3
a = a ^ b
b = a ^ b
a = a ^ b
print(a, b)

不出所料,最后的输出是a=3和b=5。
这个用法实际上利用了异或的这个特性:

x^0=x
x^x=0
  1. 消除影响(1720. 解码异或后的数组)
    简单来说,就是对一个数异或两次,就能消除这个数引发的影响了。
    def decode(self, encoded: List[int], first: int) -> List[int]:
        ans = [first]
        for num in encoded:
            ans.append(ans[-1] ^ num)
        return ans

类似的题目还有 136. 只出现一次的数字
3.计算汉明距离( 461. 汉明距离)

    def hammingDistance(self, x, y):
        return bin(x^y).count('1')
上一篇下一篇

猜你喜欢

热点阅读