python异或运算

一、异或运算的定义

如果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相同

二、异或运算的性质

  • 交换律:A ^ B = B ^ A;
  • 结合律:A ^ (B ^ C) = (A ^ B) ^ C;
  • 恒等律:X ^ 0 = X;
  • 归零律:X ^ X = 0;
  • 自反:A ^ B ^ B = A ^ 0 = A;
  • 对于任意的 X: X ^ (-1) = ~X;
  • 如果 A ^ B = C 成立,那么 A ^ B = C,B ^ C = A;

三、异或运算的实例

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')
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 异或运算: python自带的异或运算,可以分为三步: 把两个十进制整数转换成二进制,并让其长度相同(短的前面补0...
    噜噜666阅读 13,176评论 0 0
  • 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/hammin...
    smallgrey阅读 3,890评论 0 0
  • 什么是汉明距离 下面引用自维基百科: 在信息论中,两个等长字符串之间的汉明距离(英语:Hamming distan...
    泰克尼客阅读 12,062评论 1 2
  • 51. 加法 不使用+、-,计算两数字之和 52. 至少有K个重复字符的最长子串 找到给定字符串(由小写字符组成)...
    毒死预言家的女巫阅读 3,959评论 0 0
  • (Since 2020.10.14-2021.3.10) LeetCode刷题笔记,共两百多题,记录整理如下: 动...
    周恩国的学习笔记阅读 4,225评论 0 1

友情链接更多精彩内容