在不使用 C++ 中的 XOR 运算符的情况下查找两个数字的 XOR


在此问题中,我们得到整数值 A 和 B。我们的任务是在不使用 XOR 运算符的情况下查找两个数字的 XOR

我们举个例子来理解这个问题,

Input : A = 4, B = 5
Output : 1

解决方案方法

解决此问题的一种方法是将数字转换为其各自的二进制数,然后根据此表执行按位运算。

AB输出
000
011
101
110

这将返回结果。为此,我们将使用按位运算。

示例

说明我们解决方案工作原理的程序

#include <iostream>
using namespace std;
int calcXORwoOperator(int a, int b){
   int xorVal = 0;
   for (int i = 31; i >= 0; i--){
      bool val1 = a & (1 << i);
      bool val2 = b & (1 << i);
      bool xorBit = (val1 & val2) ? 0 : (val1 | val2);
      xorVal <<= 1;
      xorVal |= xorBit;
   }
   return xorVal;
}
int main(){
   int a = 4, b = 5;
   cout<<"XOR of the numbers is "<<calcXORwoOperator(a, b);
   return 0;
}

输出

XOR of the numbers is 1

交替方法

查找异或的另一种方法是在两个数字中逐一比较存在的位,并对它们执行等效于 XOR 的运算。

表达式 (a | b) - (a & b) 等于 a^b。因此,我们将执行此操作。从而找到两个数字 a 和 b 的 XOR。

示例

说明我们解决方案工作原理的程序

#include <iostream>
#include <bitset>
using namespace std;
int calcXORwoOperator(int a, int b) {
   return (a | b) - (a & b);
}
int main(){
   int a = 4;
   int b = 5;
   cout<<"The XOR of both numbers is "<<(bitset<8>(calcXORwoOperator(a, b)));
   return 0;
}

输出

The XOR of both numbers is 00000001

更新于: 2022 年 2 月 1 日

816 次浏览

开启你的 事业生涯

完成课程取得证书

开始
广告