এই সমস্যায়, আমাদের A এবং B পূর্ণসংখ্যার মান দেওয়া হয়েছে। আমাদের কাজ হল XOR অপারেটর ব্যবহার না করে দুটি সংখ্যার XOR খুঁজে বের করা .
সমস্যাটি বোঝার জন্য একটি উদাহরণ নেওয়া যাক,
Input : A = 4, B = 5 Output : 1
সমাধান পদ্ধতি
সমস্যা সমাধানের একটি পদ্ধতি হল সংখ্যাগুলিকে তাদের নিজ নিজ বাইনারি সংখ্যায় রূপান্তর করা এবং তারপর এই টেবিলের উপর ভিত্তি করে বিটওয়াইজ অপারেশন করা৷
A | B | আউটপুট |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
এটি ফলাফল ফিরিয়ে দেবে। এর জন্য আমরা বিটওয়াইজ অপারেশন ব্যবহার করব।
উদাহরণ
আমাদের সমাধানের কাজ চিত্রিত করার জন্য প্রোগ্রাম
#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