জাভাস্ক্রিপ্ট বিটওয়াইজ অপারেটর (JavaScript Bitwise Operator) বিস্তারিত টিউটোরিয়াল
আমরা সাধারণত জাভাস্ক্রিপ্টে + – * / এই ধরণের অপারেটর ব্যবহার করে থাকি। কিন্তু বিটওয়াইজ অপারেটরগুলো একটু ভিন্ন রকম এবং এগুলো বাইনারি লেভেলে কাজ করে। অর্থাৎ প্রতিটি সংখ্যাকে বাইনারিতে রূপান্তর করে তারপর সেই বাইনারি ডেটার উপর অপারেশন চালায়।
বিটওয়াইজ অপারেটরসমূহ:
| অপারেটর | নাম | ব্যাখ্যা |
|---|---|---|
| & | AND | দুই বিটই 1 হলে ফলাফল 1 হয় |
| | | OR | যেকোনো একটি বিট 1 হলে ফলাফল 1 হয় |
| ^ | XOR | দুই বিট ভিন্ন হলে 1 হয় |
| ~ | NOT | সব বিট উল্টে দেয় (1 → 0, 0 → 1) |
| << | Left Shift | বিটগুলো বামদিকে সরানো হয় |
| >> | Right Shift | বিটগুলো ডানদিকে সরানো হয় |
উদাহরণ সহ ব্যাখ্যা:
var a = 5; // 0101
var b = 3; // 0011
console.log(a & b); // Output: 1
console.log(a | b); // Output: 7
console.log(a ^ b); // Output: 6
console.log(~a); // Output: -6
console.log(a << 1); // Output: 10
console.log(a >> 1); // Output: 2
</script>
বিস্তারিত বিশ্লেষণ:
- a & b: 0101 & 0011 = 0001 → 1
- a | b: 0101 | 0011 = 0111 → 7
- a ^ b: 0101 ^ 0011 = 0110 → 6
- ~a: ~0101 = 1010 → -6 (JavaScript এ 2’s complement ব্যবহার করে)
- a << 1: 0101 → 1010 = 10
- a >> 1: 0101 → 0010 = 2
বিটওয়াইজ অপারেটরের ব্যবহার কোথায়?
এই অপারেটরগুলো সাধারনত পারফর্মেন্স-কেন্দ্রিক কাজ যেমন:
- Encryption ও Compression
- Game development
- Graphics Programming
- Permission System (Bit Masking)
বিট মাস্কিং (Bit Masking) এর সংক্ষিপ্ত উদাহরণ:
var read = 1; // 0001
var write = 2; // 0010
var execute = 4; // 0100
var permission = read | execute; // 0101
console.log(permission & write); // 0 (Write নেই)
console.log(permission & read); // 1 (Read আছে)
</script>
উপসংহার:
বিটওয়াইজ অপারেটরগুলো দেখতে কঠিন মনে হলেও বাস্তব জীবনের অনেক গুরুত্বপূর্ণ কাজের জন্য এগুলো অপরিহার্য। আপনি যদি পারফর্মেন্স-ক্রিটিক্যাল বা লো-লেভেল প্রোগ্রামিং করতে চান, তাহলে বিটওয়াইজ অপারেটরগুলো অবশ্যই শেখা উচিত।