Python 按位异或运算符

17 Mar 2025 | 4 分钟阅读

二进制语言是计算机的语言。计算机的所有内部机制都与位有关。位运算符是一组运算符,允许程序员对整数执行位操作。这些运算符允许程序员在低级数据中进行操作。Python 中共有六种位运算符。

  1. 按位与
  2. 按位或
  3. 按位非 (Bitwise NOT)
  4. 按位异或
  5. 按位右移
  6. 按位左移

本文将通过示例讨论按位异或运算符。

  • 当我们在两个操作数上应用位运算符时,整数值会被转换为它们的二进制形式——即位。
  • 然后,运算符逐位对每个单独的位执行操作。
  • 操作完成后,二进制数会转换为十进制形式并作为输出返回。

现在,让我们来理解按位异或的操作。

  • 它被称为“Exclusive OR”(逻辑异或)。它排除了“或”操作中的 1 | 1 -> 1 的情况。
  • 它是一个二进制运算符——在两个操作数之间执行。
  • 表示形式:a ^ b,其中“a”和“b”是两个操作数。
  • 返回值:当在两个整数之间执行时,它返回一个整数;当在两个布尔值之间执行时,它返回一个布尔值。

操作

  1. 给定的两个整数被转换为二进制形式。
  2. 在两个二进制表示中
  • 如果两个对应位相同——(1 ^ 1)、(0 ^ 0),则返回 0
  • 如果两个对应位不同——(1 ^ 0)、(0 ^ 1),则返回 1
  • 对所有位执行异或运算后,将结果二进制数转换回十进制并返回。
  • 异或的真值表

    位 1(操作数 1)位 2(操作数 2)返回值
    110
    000
    101
    011

    让我们通过一个示例来理解这个概念:

    如果我们想执行

    3 ^ 4:

    1. 将两个整数都转换为二进制形式

    3 -> 0 1 1

    4 -> 1 0 0

    2. 现在,逐位应用异或运算

    Python Bitwise XOR Operator

    3. 最后,将结果二进制数转换回其十进制形式。

    1 1 1 代表 7

    4. 输出 -> 7

    3 ^ 4 -> 7

    现在,对于相同的操作数,让我们编写一个异或代码。

    输出

    Python Bitwise XOR Operator

    在布尔值上

    我们可以对布尔值执行异或运算。当我们在两个整数上进行运算时,1 等同于布尔 True,0 等同于布尔 False。

    真值表

    操作数 1操作数 2操作数 1 ^ 操作数 2
    truetrueFalse
    FalseFalseFalse
    trueFalsetrue
    Falsetruetrue

    输出

    Python Bitwise XOR Operator

    输出结构

    • 如果我们对 a 和 b 执行异或运算 -> a ^ b。结果得到了一个整数 c (a ^ b -> c),那么,
    1. 如果我们用 c 和 a 进行异或运算,b 将是输出 -> c ^ a -> b
    2. 如果我们用 c 和 b 进行异或运算,a 将是输出 -> c ^ b -> a

    让我们以上面的例子为例

    Python Bitwise XOR Operator

    代码

    输出

    Python Bitwise XOR Operator

    理解

    如果 a ^ b -> c

    然后,

    c ^ a -> b

    c ^ b -> a

    • 如果我们知道输出和一个操作数,我们可以使用这种关系找到另一个操作数。
    • 这种关系仅因其真值表而可能与异或运算实现。

    异或在密码学中的作用

    上述关系在密码学模型中发挥了很小的作用。

    • 如果某人“A”想将一个数字编码的消息保密地发送给另一个人“B”,他需要一个简单的额外保护层来保护编码后的消息。
    • A 和 B 双方事先都知道一个秘密密钥。
    • 现在,A 将消息与秘密密钥进行异或运算,然后发送给 B。
    • 收到后,B 可以再次使用收到的异或结果和秘密密钥进行异或运算,从而获得消息。

    示例

    如果 A 想将消息 3 发送给 B,他们的秘密密钥是 4。

    3 ^ 4 -> 5.

    A 将发送 5 给 B。

    B 已经知道秘密密钥是 4。

    他将使用异或运算再次解密消息。

    5 ^ 4 -> 3

    消息已成功收到。

    • 这种方法是最简单的方法,因此也是最弱的密码学方法。

    下一主题Python 换行符