美文网首页
python异或运算

python异或运算

作者: wanzhouyi | 来源:发表于2021-05-06 01:26 被阅读0次

一、异或运算的定义

如果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')

相关文章

  • python异或运算

    一、异或运算的定义 如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。在python中用...

  • 2021-03-18 只出现一次的数字

    题目[https://leetcode-cn.com/leetb] 使用异或运算,将所有值进行异或 异或运算,相异...

  • 笔记

    Java中常用的计算方法 Java异或运算总结 异或运算的性质: 异或运算是基于二进制的位运算,采用符号XO...

  • python中的异或运算

    leetcode上有这么一道题:【136. Single Number】这个题是给出一个非空列表,里面的元素只有一...

  • &(与运算)、|(或运算)、^(异或运算)

    按位与运算符(&) 参加运算的两个数据,按二进制位进行“与”运算。 运算规则:0&0=0; 0&1=0; 1...

  • &与运算,|或运算,^异或运算

    &与运算(遇到0则为0) 0&0=0;0&1=0;1&0=0;1&1=1 |或运算(遇到1则为1) 0|0=0; ...

  • 异或运算

    来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/hammin...

  • 异或运算

    运算符: ^ 牢记: 相同为0,不同为1说明: 异或运算是二进制计算, 所以参加运算的值会先转化为二进制数 ...

  • iOS中的异或加密(XOR)--文本、图片、音视频加密

    异或 异或运算:运算符为 “ ^ ” 定义:同则假,异则真。(1 ^ 1得 0,1 ^ 0得 1)

  • 异或运算&位运算

    【想转Java刷算法题 不知道合不合适= = 也可以先不转 先看书】任何数和 0 做异或运算,结果仍然是原来的数,...

网友评论

      本文标题:python异或运算

      本文链接:https://www.haomeiwen.com/subject/tmlrdltx.html