প্রাথমিক প্রোগ্রামিং ধারণা ২ – লেফট শিফট ও রাইট শিফট

Bangla tutorial series on Microcontroller, retreived from my previous blog d15tech.com. Dated here according to the original published date.

Posted by Shadly on January 7, 2014

প্রাথমিক ধাপ পার হওয়ার জন্য আমাদের আর অল্প কিছু জিনিস জানতে হবে। আর তা হল লেফট শিফট আর রাইট শিফট। এগুলো আবার কি রে বাবা !!! খুবই সহজ জিনিস। কোনো বিটকে ধাক্কা দিয়ে বামে কিংবা ডানে সরানোই হল যথাক্রমে লেফট শিফট আর রাইট শিফট। এদের যথাক্রমে « এবং » দ্বারা প্রকাশ করা হয়। ধরি ৮ বিটের একটি 0b ০০০০ ০০০১ । একে ৩ ঘর লেফট শিফট করবো। 0b ০০০০ ০০০১ « ৩ এরপর যা দাঁড়াবে তা হল 0b০০০০ ১০০০ অর্থাৎ ১ তিন ঘর সরে গেল। এই কনসেপ্ট আগামীতে আমাদের অনেক কাজে আসবে কোন স্পেসিফিক বিটকে অন(১) অথবা অফ(০) করতে।

মনে করি, আমরা 0b০০০০ ১০০১ এই সংখ্যার পঞ্চম বিটটি অন করতে চাই। তাহলে আমাদের যা করতে হবে তা হল

1
2
variable  =  0b00001001  ;
variable  =  variable  |  (1<<5)  ;

এর ফলে variable এর মান যা দাঁড়াবে তা হল 0b 0010 1001। এটাকে শর্টকাটে এভাবেও লেখা যায়,

1
variable|  =  (1<<5);

যদি আমরা একসাথে দুটি বিট ৫ ও ১ কে অন করতে চাই তাহলে লিখতে হবে ,

1
variable|  =  (1<<5)|(1<<3);

এর ফলে variable এর মান দাঁড়াবে 0b 0010 1011।

অন করার ব্যাপার তো গেল, এবার যদি অফ করতে চাই তাহলে ?? তাহলে প্রায় একই কাজ করতে হবে। আর তা হল নটের সাথে অ্যান্ড অপারেশান। কি বোঝা গেল না ? দাঁড়াও বলছি। ধরি, আমরা 0b 0000 1001 এই সংখ্যার তৃতীয় বিটটি অফ করতে চাই। তাহলে যা করতে হবে তা হল

1
2
variable  =  0b00001001  ;
variable  =  variable  &  (  ~  (1<<3)  )  ;

যাকে সহজ ভাষায় লেখা যায়

1
variable&  =  ~(1<<3)  ;

যার ফলে variableএর মান দাঁড়াবে 0b 0000 0001।

আবার একাধিক বিট অফ করতে গেলে একই রকম কাজ করতে হবে। যেমনঃ ০ এবং ৩ নাম্বার বিট অফ করতে চাইলে লিখতে হবে -

1
variable&  =  ~  (  (1<<3)  |  (1<<0)  )  ;

যার ফলে variableএর মান দাঁড়াবে 0b 0000 0000।

আর যদি আমরা কোন বিটকে Toggle করতে চাই অর্থাৎ যদি অন থাকে তাহলে অফ আর অফ থাকলে অন করতে চাই তাহলে যা করতে হবে তা হল XOR এর ব্যবহার।

মনে করি, আমরা 0b০০০০ ১০০১ এই সংখ্যার তৃতীয় বিটটি Toggle করতে চাই। তাহলে আমাদের যা করতে হবে তা হল

1
2
variable  =  0b00001001  ;
variable  =  variable  ^  (1<<3)  ;

এর ফলে variable এর মান যা দাঁড়াবে তা হল 0b 0010 1001। এটাকে শর্টকাটে এভাবেও লেখা যায়,

1
variable  ^  =  (1<<3);

এখন তোমাদের মনে প্রশ্ন আসতে পারে কেন এমনটি হয়। এই প্রশ্নের উত্তর বের করার দায়িত্ব তোমাদের উপর সঁপে দিলাম। কারণ শুধুমাত্র তারাই জীবনে ভালো কিছু করতে সক্ষম যারা কোন কিছু কারণ ছাড়া মেনে নিতে চায় না, যারা চিন্তা করতে ভালবাসে তারা। তাই আজকে এই পর্যন্তই পরবর্তীতে এই প্রশ্নের ব্যাখ্যা করা হবে। আর নিজে নিজে বুঝতে পারবে তার একটা চকলেট পাওনা রইলো তোমার চিন্তাশীলতার জন্য।