इस समस्या में, हमें पूर्णांक मान A और B दिए जाते हैं। हमारा कार्य XOR ऑपरेटर का उपयोग किए बिना दो संख्याओं का XOR खोजना है। ।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
Input : A = 4, B = 5 Output : 1
समाधान दृष्टिकोण
समस्या को हल करने का एक तरीका है संख्याओं को उनके संबंधित बाइनरी नंबरों में परिवर्तित करना और फिर इस तालिका के आधार पर बिटवाइज़ संचालन करना।
<टेबल><थेड>यह परिणाम वापस कर देगा। इसके लिए हम बिटवाइज़ ऑपरेशंस का उपयोग करेंगे।
उदाहरण
हमारे समाधान की कार्यप्रणाली को दर्शाने के लिए कार्यक्रम
#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 को खोजने का एक अन्य तरीका दोनों नंबरों में मौजूद बिट्स के बीच एक-एक करके तुलना करना और उन पर 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