C++ 按位异或运算符

2025年3月17日 | 阅读 8 分钟
  • 按位异或运算符也称为逻辑异或
  • 它用'^'表示
  • 顾名思义,它作用于操作数的位级别
  • 按位异或运算符属于按位运算符类别。
  • 在按位异或运算符 (XOR) 中,需要两个操作数,这两个操作数由 XOR 符号'^'分隔。
  • 要确定在两个操作数上应用 XOR 运算符后产生的输出或结果,我们需要遵循 XOR 运算符的逻辑真值表。
  • XOR 真值表是使用 XOR 运算符的正确逻辑构建的数学表。
  • XOR 运算符背后的逻辑是;当对两个操作数的不同位应用 XOR 操作时,结果将始终产生'1',而当对两个操作数的相同位应用 XOR 操作时,结果将产生输出'0'

逻辑异或 (XOR) 运算符真值表

设有两个操作数;第一个是 A,第二个是 B,这两个操作数形成的输入组合总共有 4 种。使用以下 XOR 真值表,我们将确定相应的输出。结果将捕获在 C 中,此处C = A ^ B

在此真值表中,我们以位(即 0 和 1)的形式获取输入,输出也将以位(即 0 和 1)的形式生成。

C++ Bitwise XOR Operator

在这里,在上面的 XOR 真值表中,我们观察到,当操作数 A 和 B 的值不同时,即 ( 0, 1 ), ( 1, 0 ),结果将始终为 1。当操作数 A 和 B 的值相同时,即 ( 0, 0 ), ( 1, 1 ),结果将始终为 0。

同样,通过这种方式,我们可以为布尔值绘制真值表 -

设有两个操作数;第一个是A,第二个是B。这两个操作数形成的输入组合总共有 4 种。使用以下 XOR 真值表,我们将确定相应的输出。结果将捕获在 C 中,此处 C = A ^ B。

在此真值表中,我们以真值(即 True ( T ) 和 False ( F ))的形式获取输入。输出也将以真值(即 T 和 F)的形式生成。

C++ Bitwise XOR Operator

在这里,在上面的 XOR 真值表中,我们观察到,当操作数 A 和 B 的值不同时,即 ( F, T ), ( T, F ),结果将始终为 T。当操作数 A 和 B 的值相同时,即 ( F, F ), ( T, T ),结果将始终为 F。

从上面的表中,我们观察到T ( True ) 表示为 1,F ( False ) 表示为 0。

解决任何给定问题的步骤 -

  1. 问题中给出的操作数将始终是十进制值。
  2. 首先,我们需要将操作数的值转换为二进制
  3. 将操作数的值转换为二进制数后,将两个操作数一个放在另一个上面。
  4. 请记住,在应用逻辑异或 (XOR) 运算之前,请检查它们的数字位数
  5. 如果位数不匹配,则较小操作数左侧的额外 0 将平衡位数。
  6. 最后,借助上面的真值表,一次对一个位应用 XOR 操作。
  7. 最后产生结果。
  8. 输出将以二进制形式产生,现在将二进制形式转换为十进制形式并记下结果值。

C++ 中按位逻辑异或 (XOR) 操作的执行

让我们通过示例更详细地了解 XOR 操作在 C++ 中的执行 -

示例 1:计算整数值 10 和 14 的逻辑异或。还请解释并写出 C++ 中的执行代码。

解决方案:让我们考虑两个变量 'a' 和 'b' 来存储问题中给出的相应两个操作数,即 10 和 14。

这里,a = 10,b = 14。

我们将遵循以下步骤来计算给定两个操作数的逻辑异或。

  1. 我们知道 10 和 14 是十进制形式,为了应用按位 XOR 操作,有必要将其转换为二进制形式。
  2. a 的二进制形式,即 10 是'1010',b 的二进制形式,即 14 是'1110'
  3. 这里我们观察到 a 中的二进制位数是四个,b 中的二进制位数也是 4;因此,两个变量中的二进制位数相同,并且已经平衡,我们不需要添加更多的 0 来平衡它。
  4. 现在,将 b 中的二进制数字放在 a 中的二进制数字下方。
  5. 最后,逐个应用 XOR 操作,匹配相应的位并记下输出。
  6. 最后生成的输出将是二进制形式,因为上面问题以十进制形式给出,所以我们需要将结果转换为十进制形式。

说明

a = 10(十进制形式)

b = 14(十进制形式)

现在,对于 a XOR b,我们需要将 a 和 b 转换为二进制形式 -

a = 1010(二进制形式)

b = 1110(二进制形式)

现在,对 a 和 b 应用 XOR 操作 -

a = 1010

b = 1110

---------------

a ^ b = 0100(二进制形式)

a ^ b 的结果是 0100,这是二进制形式。

现在将结果转换为十进制形式,即 4。

10 ^ 14 = 4

注意:使用上面的 XOR 真值表生成相应位的输出。

现在我们将对 C++ 语言中的 10 和 14 应用按位 XOR 操作并得到结果,即 4。

上面示例的 C++ 代码

输出

C++ Bitwise XOR Operator

示例 2:计算整数值 3 和 15 的逻辑异或。还请解释并写出 C++ 中的执行代码。

解决方案:让我们考虑两个变量 'a' 和 'b' 来存储问题中给出的相应两个操作数,即 3 和 15。

这里,a = 3,b = 15。

我们将遵循以下步骤来计算给定两个操作数的逻辑异或。

  1. 我们知道 3 和 15 是十进制形式,为了应用按位 XOR 操作,有必要将其转换为二进制形式。
  2. a 的二进制形式,即 3 是'11',b 的二进制形式,即 15 是'1111'
  3. 这里我们将观察到 a 中的二进制位数是两个,b 中的二进制位数是四个;因此,两个变量中的二进制位数不相同。因此,不平衡,我们需要在较低的二进制数 a,即 '11'的左侧添加更多的 0 来平衡它。
  4. 平衡后,a 的值为'0011',b 的值为'1111'
  5. 现在,将 b 中的二进制数字放在 a 中的二进制数字下方。
  6. 最后,逐个应用 XOR 操作,匹配相应的位并记下输出。
  7. 最后生成的输出将是二进制形式,因为上面问题以十进制形式给出,所以我们需要将结果转换为十进制形式。

说明

a = 3(十进制形式)

b = 15(十进制形式)

现在,对于 a XOR b,我们需要将 a 和 b 转换为二进制形式 -

a = 0011(二进制形式)

b = 1111(二进制形式)

现在,对 a 和 b 应用 XOR 操作 -

a = 0011

b = 1111

---------------

a ^ b = 1100(二进制形式)

a ^ b 的结果是 1100,这是二进制形式。

现在将结果转换为十进制形式,即 12。

3 ^ 15 = 12

注意:使用上面的 XOR 真值表生成相应位的输出。

现在我们将对 C++ 语言中的 3 和 15 应用按位 XOR 操作并得到结果,即 12。

上面示例的 C++ 代码

输出

C++ Bitwise XOR Operator