বিটওয়াইজ শিফট অপারেটর হল ডান-শিফ্ট অপারেটর (>>), যা shift_expression-এর বিটগুলিকে ডানদিকে নিয়ে যায় এবং বাম-শিফট অপারেটর (<<), যা বাম দিকে shift_expression এর বিট।
বাম-শিফ্ট অপারেটর শিফট-এক্সপ্রেশনের বিটগুলিকে সংযোজন-অভিব্যক্তি দ্বারা নির্দিষ্ট অবস্থানের সংখ্যা দ্বারা বামে স্থানান্তরিত করে। শিফ্ট অপারেশন দ্বারা খালি করা বিট পজিশন শূন্য পূর্ণ। একটি বাম স্থানান্তর হল একটি যৌক্তিক স্থানান্তর (সাইন বিট সহ যে বিটগুলি শেষ থেকে সরানো হয় সেগুলি বাতিল করা হয়)।
রাইট-শিফ্ট অপারেটর শিফট-এক্সপ্রেশনে বিট প্যাটার্নটিকে যোগ-অভিব্যক্তি দ্বারা নির্দিষ্ট অবস্থানের সংখ্যা দ্বারা ডানদিকে স্থানান্তরিত করে। স্বাক্ষরবিহীন সংখ্যার জন্য, শিফট অপারেশন দ্বারা খালি করা বিট পজিশনগুলি শূন্য-পূর্ণ। স্বাক্ষরিত সংখ্যার জন্য, শূন্য বিট অবস্থান পূরণ করতে সাইন বিট ব্যবহার করা হয়। অন্য কথায়, সংখ্যাটি ধনাত্মক হলে 0 ব্যবহার করা হয় এবং সংখ্যাটি ঋণাত্মক হলে 1 ব্যবহার করা হয়৷
উদাহরণ
#include<iostream> using namespace std; int main() { int a = 1, b = 3; // a right now is 00000001 // Left shifting it by 3 will make it 00001000, ie, 8 a = a << 3; cout << a << endl; // Right shifting a by 2 will make it 00000010, ie, 2 a = a >> 2; cout << a << endl; return 0; }
আউটপুট
এটি আউটপুট দেবে −
8 2
নোট করুন যে এই অপারেটরগুলি নেতিবাচক সংখ্যার সাথে খুব ভিন্নভাবে আচরণ করে। একটি স্বাক্ষরিত ঋণাত্মক সংখ্যার ডান-বদলের ফলাফল হল বাস্তবায়ন-নির্ভর। আপনি যদি একটি সাইন করা নম্বর বাম স্থানান্তর করেন যাতে সাইন বিট প্রভাবিত হয়, ফলাফলটি অনির্ধারিত থাকে৷
এছাড়াও 2টি জটিল অপারেটর রয়েছে যা সরাসরি বাম দিকের মানের সাথে মান নির্ধারণ করতে ব্যবহার করা যেতে পারে। এগুলি হল <<=অপারেটর এবং>>=অপারেটর।
শিফট অপারেটরগুলির একটি বিশদ পরিদর্শনের জন্য https://msdn.microsoft.com/en-us/library/336xbhcz.aspx দেখুন৷