C++-এ ৩টি বিটওয়াইজ অপারেটর রয়েছে। সেগুলো হলো বিটওয়াইজ AND (&), বিটওয়াইজ OR (|) এবং বিটওয়াইজ XOR (^)。
বিটওয়াইজ AND অপারেটর (&) প্রথম অপারেন্ডের প্রতিটি বিটকে দ্বিতীয় অপারেন্ডের সংশ্লিষ্ট বিটের সাথে তুলনা করে। যদি দুটি বিটই ১ হয়, তবে সংশ্লিষ্ট রেজাল্ট বিট ১ সেট হয়। অন্যথায়, সংশ্লিষ্ট রেজাল্ট বিট ০ সেট হয়। বিটওয়াইজ ইনক্লুসিভ AND অপারেটরের দুটি অপারেন্ড অবশ্যই ইন্টিগ্রাল টাইপের হতে হবে। উদাহরণস্বরূপ,
উদাহরণ
#include <iostream>
using namespace std;
int main() {
unsigned short a = 0x5555; // প্যাটার্ন 0101 ...
unsigned short b = 0xAAAA; // প্যাটার্ন 1010 ...
cout << hex << (a & b) << endl;
}
আউটপুট
এটি নিচের আউটপুট দেবে:
0
বিটওয়াইজ OR অপারেটর (|) প্রথম অপারেন্ডের প্রতিটি বিটকে দ্বিতীয় অপারেন্ডের সংশ্লিষ্ট বিটের সাথে তুলনা করে। যদি দুটির যেকোনো একটা ১ হয়, তবে সংশ্লিষ্ট রেজাল্ট বিট ১ সেট হয়। অন্যথায়, সংশ্লিষ্ট রেজাল্ট বিট ০ সেট হয়। বিটওয়াইজ ইনক্লুসিভ OR অপারেটরের দুটি অপারেন্ড অবশ্যই ইন্টিগ্রাল টাইপের হতে হবে। উদাহরণস্বরূপ,
উদাহরণ
#include <iostream>
using namespace std;
int main() {
unsigned short a = 0x5555; // প্যাটার্ন 0101 ...
unsigned short b = 0xAAAA; // প্যাটার্ন 1010 ...
cout << hex << (a | b) << endl;
}
আউটপুট
এটি নিচের আউটপুট দেবে:
ffff
বিটওয়াইজ এক্সক্লুসিভ OR অপারেটর (^) তার প্রথম অপারেন্ডের প্রতিটি বিটকে তার দ্বিতীয় অপারেন্ডের সংশ্লিষ্ট বিটের সাথে তুলনা করে। যদি একটি বিট ০ এবং অন্যটি ১ হয়, তবে সংশ্লিষ্ট রেজাল্ট বিট ১ সেট হয়। অন্যথায়, সংশ্লিষ্ট রেজাল্ট বিট ০ সেট হয়। বিটওয়াইজ এক্সক্লুসিভ OR অপারেটরের দুটি অপারেন্ড অবশ্যই ইন্টিগ্রাল টাইপের হতে হবে। উদাহরণস্বরূপ,
উদাহরণ
#include <iostream>
using namespace std;
int main() {
short a = 0x5555; // প্যাটার্ন 0101 ...
unsigned short b = 0xFFFF; // প্যাটার্ন 1111 ...
cout << hex << (a ^ b) << endl;
}
আউটপুট
এটি নিচের আউটপুট দেবে:
aaaa
যেটি 1010... প্যাটার্নকে রিপ্রেজেন্ট করে।