বিটওয়াইজ অপারেটর (Bitwise Operator) — একদম সহজভাবে বুঝে ফেলো

A.H.Raihan Blog
0

 

বিটওয়াইজ অপারেটর (Bitwise Operator) — একদম সহজভাবে বুঝে ফেলো

প্রোগ্রামিংয়ে আমরা সাধারণত logical operator (যেমন &&, ||, !) ব্যবহার করি শর্ত যাচাই করার জন্য।
কিন্তু bitwise operator একটু আলাদা — এটা কাজ করে bit-level এ, মানে সংখ্যার binary রূপের উপর সরাসরি অপারেশন চালায়।

এই জিনিসটা competitive programming (CP) এ অনেক দরকারি, কারণ এটা দিয়ে আমরা —

  • দ্রুত কিছু গণনা করতে পারি

  • সেট (set) বা mask হিসেবে সংখ্যা ব্যবহার করতে পারি

  • পারফরম্যান্স বাড়াতে পারি

চলো এখন ধাপে ধাপে বুঝে ফেলি। 👇


🧩 ১️⃣  বিটওয়াইজ অপারেটরগুলা কী?

অপারেটর নাম কাজ
& AND দুই bit-ই 1 হলে 1
` ` OR
^ XOR দুই bit আলাদা হলে 1
~ NOT সব bit উল্টে দেয় (1 → 0, 0 → 1)
<< Left Shift bit গুলোকে বামে সরিয়ে দেয়
>> Right Shift bit গুলোকে ডানে সরিয়ে দেয়

🧠 ২️⃣  Bitwise কীভাবে কাজ করে?

ধরা যাক:


Expression Binary Result Decimal Result Explanation
a & b 0001 1 দুই জায়গায়ই 1 থাকলে 1
`a b` 0111 7
a ^ b 0110 6 ভিন্ন হলে 1
~a 1010 -6 1 ↔ 0 উল্টে যায় (Two’s complement)
a << 1 1010 10 সব bit এক ধাপ বামে (×2)
a >> 1 0010 2 সব bit এক ধাপ ডানে (÷2)

💡 ৩️⃣  Bitwise vs Logical Operator

ধরন উদাহরণ কাজের ধরণ ফলাফল
Logical &&, ` , !`
Bitwise &, ` , ^, ~` bit-level এ কাজ করে

🔹 উদাহরণ:


দুইটাই দেখতে একইরকম মনে হলেও কাজ পুরো আলাদা।


🧰 ৪️⃣  বাস্তব জীবনের উদাহরণ: Permissions System 🎯

ধরো তুমি একটা সিস্টেম বানাচ্ছো যেখানে প্রতিটি user এর permission (যেমন read, write, execute) binary আকারে সংরক্ষণ করা হয়।

Permission Binary Decimal
Read 001 1
Write 010 2
Execute 100 4

এখন:


👉 এখন user এর permission: 7 (111)

এখন যদি চেক করতে চাও user এর write permission আছে কিনা:


✅ Output: Has Write Access

অর্থাৎ bitwise operator দিয়ে permission সিস্টেম, feature flags, mask, toggle — এসব খুব দ্রুত করা যায়।


⚡ ৫️⃣  Competitive Programming এ ব্যবহার

  1. Subset Enumeration (Masking):

    for (int mask = 0; mask < (1 << n); mask++) {
        // subset তৈরি
    }
    
  2. Check i-th bit is ON/OFF:

    if (mask & (1 << i)) cout << "Bit " << i << " is ON\n";
    
  3. Turn ON/OFF bits:

    mask |= (1 << i);  // Turn ON
    mask &= ~(1 << i); // Turn OFF
    
  4. Count bits:

    __builtin_popcount(mask); // কতগুলো bit 1 আছে
Example:



🎯 সারসংক্ষেপ

  • Bitwise অপারেটর মানে হলো সংখ্যা কে bit ধরে কাজ করা।

  • এটা দ্রুত, powerful, আর অনেক hidden trick solve করতে সাহায্য করে।

  • CP-তে subset, mask, optimization, permission system — এসব ক্ষেত্রে খুব দরকারি।

Post a Comment

0 Comments
Post a Comment (0)
To Top