Computer >> Máy Tính >  >> Lập trình >> C ++

Tìm XOR của hai số mà không sử dụng toán tử XOR trong C ++

Trong bài toán này, chúng tôi được cung cấp các giá trị nguyên A &B. Nhiệm vụ của chúng tôi là tìm XOR của hai số mà không sử dụng toán tử XOR .

Hãy lấy một ví dụ để hiểu vấn đề,

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

Phương pháp tiếp cận giải pháp

Một phương pháp để giải quyết vấn đề là bằng cách chuyển đổi các số thành số nhị phân tương ứng của chúng và sau đó thực hiện các phép toán bitwise dựa trên bảng này.

A B Đầu ra
0 0 0
0 1 1
1 0 1
1 1 0

Điều này sẽ trả về kết quả. Đối với điều này, chúng tôi sẽ sử dụng các phép toán bitwise.

Ví dụ

Chương trình minh họa hoạt động của giải pháp của chúng tôi

#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;
}

Đầu ra

XOR of the numbers is 1

Phương pháp thay thế -

Một phương pháp khác để tìm xor là so sánh lần lượt giữa các bit có trong cả hai số và thực hiện các phép toán tương đương với XOR trên chúng.

Biểu thức (a | b) - (a &b) tương đương với a ^ b. Vì vậy, chúng tôi sẽ thực hiện thao tác này. Qua đó tìm XOR của hai số a &b.

Ví dụ

Chương trình minh họa hoạt động của giải pháp của chúng tôi

#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;
}

Đầu ra

The XOR of both numbers is 00000001