প্রগ্রামিং এ লেফট(<<) শিফট ও রাইট(>>) শিফট এর ধারনা।

লিফট শিফট এবং রাইট শিফট এর মান সহজ পদ্ধতিতে কি নির্নয় করা যায়?? হ্যা লিফট শিফট এবং রাইট শিফট এর মান সহজ পদ্ধতিতে নিখুতভাবে নির্নয় করা যায়। এটা করার জন্যে আমরা আগে লিফট শিফট এবং রাইট শিফট কি সেটা জেনে রাখি। যেমন আমরা যদি ১০(10 << 2) কে লিফট শিফট দুই ঘর করতে চাই তাহলে এর মান কি হবে? কম্পাইলার প্রথমে দশকে বাইনারি ডিজিট এ পরিনত করবে তারপর প্রত্যেক ডিজিট কে দুই ঘর বামে বনিয়ে আসবে।এবং তারপর ঐ মানটাকে বাইনারি থেকে ডেসিমেলে কনভার্ট করে দশমিক মান টা প্রকাশ করবে।নিচে স্টেপ গুলো দেখান হল।

১ম স্টেপঃ

দশমিক কে বাইনারিতে রুপান্তর।

১০ এর বাইনারি মান =১০১০
২য় স্টেপঃ

উপরিক্ত মানের প্রত্যেকটা ডিজিট কে দুই ঘর বামে সরালে পাওয়া যাই কি?

পাওয়া যায় হচ্ছে ১০১০০০
৩য় স্টেপঃ

এই স্টেপ এ বাইনারি মান টিকে আবার দশমিকে কনভার্ট করে দশমিক মান প্রকাশ করা হয়। এবং এই মানটা আসে ৪০

লক্ষনিয় বিষয়ঃউপরিক্ত বিষয় টি ভাল ভাবে লক্ষ করলে দেখা যাবে যখনি বলা হল দুই ঘর বামে লিফট করতে তখনি বাইনারি মান টি দুই ঘর বামে সরে গেল বা তারসাথে দুই টা শুন্য যোগ করা হল অর্থাৎ ১০১০ থেকে দুইটা শুন্য যোগ করে ১০১০০০ হল। আরও লক্ষনিয় যে আমরা কি করলে দশমিকের একটা সংখ্যার শেষে দুই টা শুন্য পাব।এটা সহজেই বলে দেওয়া যাই যে,আমরা যদি একটা সংখ্যার সাথে দশ গুন করি তাহলে সংখ্যার শেষে একটা শুন্য বাড়বে যেমন ১০*১০=১০০। ভাবে ১০০ গুন করলে দুইটি শুন্য বারবে ১০*১০০=১০০০। এভাবে বাইনারি সংখ্যার ক্ষেত্রেও ১০(এটা বাইনারি ডিজিট যার দশমিক মান ২)গুন করলে একটা শুন্য পাব সংখ্যাটির শেষে।১০০(এটা বাইনারি ডিজিট যার দশমিক মান ৪) দুইটা শুন্য পাব। অর্থাৎ উপরিক্ত বিষয় গুলো থেকে বলা যায়।আসলে লিফট মানেই হচ্ছে গুন।কিভাবে সেটা??যেমন ধরি ধরি ১২>>২; এই স্টেম্যান্ট এর মান কত হবে? বাইনারি মান আসবে ১১০০০০ এর দশমিক মান হবে ৪৮। কিন্তু এত কিছু করতে গেলে আমাদের অনেক মাথা ঘামানোর দরকার ।

সহজ ভাবে হচ্ছে আমরা ত জানলাম লিফট শিফট মানে গুনন

দেখি এখন কিভাবে সেটা গুনন। প্রথমে ১২ এর বাইনারি মান ১১০০ * ১০০(যেহেতু লিফট শিফট ২ সেইজন্যে দুইটা শুন্য ডানে পাওয়া যাবে তাই ১০০ দিয়ে গুনন)১১০০০০ এটাই উপরিক্ত মান বা ৪৮। অর্থাৎ ১২ * ৪(যেহেতু বাইনারি ১০০ এর দশমিক মান ৪ এবং লেফট দুই এর জন্যে দুই টা শুন্য পাব তাই বাইনারি ১০০ দ্বারা গুন) = ৪৮

এভাবে ১২>>৩ = ১২* ৮ = ৯৬(৮যেহেতু বাইনারি ১০০০ এর দশমিক মান ৮)

আর কয়েক টি উদাহরন

১।০<<৩ = ০*১০০০=০।

২।৪<<১=৪*২=৮।

৩।৮<<১=৮*২=১৬।

এভাবেই চলতে থাকবে।

এখন রাইট শিফট দ্বারা কি বুঝি???

যদি বলে ১২>>২ ।এটা কিভাবে সম্পন্ন হবে>

১ম স্টেপঃ

১২ এর বাইনারি মান।

২য় স্টেপঃ

সেই মানের প্রতিটি ডিজিট কে দুই ঘর ডানে সরাতে হবে ।

৩য় স্টেপঃ

তারপর তাকে দশমিকে রুপান্তর করে ফল প্রকাশ করতে হবে।এবং এই ক্ষেত্রেও লক্ষ করলে দেখা যাবে যে দুই ঘর ডানে সরানোর কারনে দুইটা শুন্য হারায় যাচ্ছেআর কখন দুটা শুন্য হারাই যাবে কোন সংখ্যার ডান থেকে?যখন তাকে ১০০ দারা ভাগ করা হবে।

অর্থাৎ বলা যায় রাইট মানেই হল ভাগ।

তাই ১২>>২ (১১০০/১০০=দশমিক মান ১২/৪)এর মান হবে ১২/৪ =৩

আরও কিছু উদাহরন হলঃ

১।১০৪>>৩=১০৪/৮=১৬।

২.১০০>>২ = ১০০/৪=২৫।

৩.১>>২=১/৪=০.২৫==০।

সুতরাং লেফট শিফট মানেই গুন রাইট শিফট মানেই হল ভাগ