🎯 এই পর্বে যা জানবে:
- বিটওয়াইজ অপারেটর কী
- AND, OR, XOR, NOT, LEFT SHIFT, RIGHT SHIFT অপারেটরের কাজ
- বাইনারি লেভেলে অপারেশন বোঝা
- উদাহরণসহ কোড বিশ্লেষণ
- টিপস ও বাস্তব প্রয়োগ
🧩 বিটওয়াইজ অপারেটর কী?
C প্রোগ্রামিং-এ বিটওয়াইজ অপারেটর ব্যবহার করে বাইনারি লেভেলে (bit level) কাজ করা যায়।
অর্থাৎ, ভ্যালুর প্রতিটি বিট (0 বা 1) এর উপর সরাসরি অপারেশন হয়।
এগুলো খুবই দরকারি হয়:
- হার্ডওয়্যার প্রোগ্রামিং
- মেমোরি অপটিমাইজেশন
- এনক্রিপশন / ডেটা সিকিউরিটি
- পারফরম্যান্স সংক্রান্ত কাজ
🧮 বিটওয়াইজ অপারেটরের তালিকা
| অপারেটর | নাম | কাজ |
|---|---|---|
& | AND | উভয় বিট 1 হলে 1 হয় |
| ` | ` | OR |
^ | XOR | দুটি বিট ভিন্ন হলে 1 হয় |
~ | NOT | বিট উল্টে দেয় |
<< | Left Shift | বিট বাম দিকে সরায় |
>> | Right Shift | বিট ডান দিকে সরায় |
🔹 AND অপারেটর (&)
দুটি বিটই যদি 1 হয়, তাহলে ফলাফল 1, নয়তো 0।
#include <stdio.h>
int main() {
int a = 5, b = 3; // 5 = 0101, 3 = 0011
printf("a & b = %d\n", a & b);
return 0;
}বাইনারি হিসাব:
0101
0011
----
0001 → 1আউটপুট:
a & b = 1🔹 OR অপারেটর (|)
যেকোনো একটি বিট 1 হলে ফলাফল 1।
#include <stdio.h>
int main() {
int a = 5, b = 3;
printf("a | b = %d\n", a | b);
return 0;
}বাইনারি হিসাব:
0101
0011
----
0111 → 7আউটপুট:
a | b = 7🔹 XOR অপারেটর (^)
দুটি বিট ভিন্ন হলে 1, একই হলে 0।
#include <stdio.h>
int main() {
int a = 5, b = 3;
printf("a ^ b = %d\n", a ^ b);
return 0;
}বাইনারি হিসাব:
0101
0011
----
0110 → 6আউটপুট:
a ^ b = 6🔹 NOT অপারেটর (~)
সব বিট উল্টে দেয় — 1 → 0, 0 → 1
(দ্রষ্টব্য: সাইনড ইন্টিজারের জন্য কমপ্লিমেন্ট ফর্ম ব্যবহৃত হয়)
#include <stdio.h>
int main() {
int a = 5;
printf("~a = %d\n", ~a);
return 0;
}আউটপুট:
~a = -6(কারণ ~a = -(a+1))
🔹 Left Shift (<<)
বিটগুলোকে নির্দিষ্ট সংখ্যক পজিশন বাম দিকে সরায়।
প্রতিটি শিফটে সংখ্যা দ্বিগুণ (×2) হয়।
#include <stdio.h>
int main() {
int a = 5;
printf("a << 1 = %d\n", a << 1);
printf("a << 2 = %d\n", a << 2);
return 0;
}আউটপুট:
a << 1 = 10
a << 2 = 20🔹 Right Shift (>>)
বিটগুলোকে ডান দিকে সরায়।
প্রতিটি শিফটে সংখ্যা অর্ধেক (÷2) হয়।
#include <stdio.h>
int main() {
int a = 8;
printf("a >> 1 = %d\n", a >> 1);
printf("a >> 2 = %d\n", a >> 2);
return 0;
}আউটপুট:
a >> 1 = 4
a >> 2 = 2⚡ বাস্তব ব্যবহার
- হার্ডওয়্যার ডিভাইসের কন্ট্রোল বিট সেট বা ক্লিয়ার করা
- ডেটা কম্প্রেশন বা এনক্রিপশন
- দ্রুত গাণিতিক গণনা (গুণ / ভাগ ২ দিয়ে)
- ফ্ল্যাগ ম্যানিপুলেশন
💡 টিপস
✅ সবসময় বাইনারি রূপ বোঝার চেষ্টা করো।
✅ শিফট অপারেশনে মান খুব বড় হয়ে গেলে ওভারফ্লো হতে পারে।
✅ unsigned int ব্যবহার করলে ফলাফল পূর্বানুমানযোগ্য হয়।
🧾 সংক্ষেপে
| অপারেটর | কাজ | উদাহরণ | ফলাফল |
|---|---|---|---|
& | AND | 5 & 3 | 1 |
| ` | ` | OR | 5 | 3 |
^ | XOR | 5 ^ 3 | 6 |
~ | NOT | ~5 | -6 |
<< | Left Shift | 5 << 1 | 10 |
>> | Right Shift | 8 >> 2 | 2 |



