Bitwise Operation
মাইক্রোকন্ট্রোলার প্রোগ্রাম করার জন্য প্রথমে যে জিনিস শেখা লাগবে তা হলো Bitwise Operation। সি প্রোগ্রামিং এ কিছু লজিকাল অপারেশান আছে যেগুলো হল AND, OR, NOT এবং XOR অপারেশান। এই অপারেশানগুলোর কাজ হচ্ছে দুটি বিটের মধ্যে কম্পেয়ার করা। এখন প্রশ্ন হতে পারে বিট কি? বিট হচ্ছে বাইনারি সংখ্যা বাবস্থার গঠনগত একক। এটি হয় ০ অথবা ১। Bitwise Operation এর প্রধান কাজ হল কম্পেয়ার করা।প্রথমেই আসি AND এবং OR নিয়ে। এটি আমদের গণিতের সেট এর এবং অথবা ছাড়া আর কিছুই না। AND হল কমন জিনিস আরOR হল যেকোনো একটাতে থাকলেই হবে। ধরি, ০ আর ১ এর মধ্যে AND এবং OR অপারেশান করাবো।প্রথম এবং দ্বিতীয় সংখ্যাতে ১ থাকলে উত্তর হবে True অর্থাৎ ১। OR Operation এর ক্ষেত্রে প্রথম অথবা দ্বিতীয় সংখ্যার যেকোনোটাতে ১ থাকলেই উত্তর True অর্থাৎ ১ হবে। এবার আশা করা যায় “এবং” এবং “অথবা” কেন লেখা হয় তার প্রকৃত কারণ জানা গেছে।বলে রাখা ভালো বুলিয়ান আলজেব্রায় ০ অর্থ মিথ্যা আর ১ অর্থও সত্য। ০ দ্বারা অফ এবং ১ দ্বারা অন ও বোঝানো হয়ে থাকে। তাই অনেক সময় সুইচে ০ এবং ১ লেখা দেখা যায়। মাইক্রোকন্ট্রোলার যেহেতু একটি ডিজিটাল চিপ তাই অন্যান্য সাধারণ ডিজিটাল চিপের মতো এরও লজিক লেভেল ৫ ভোল্ট। অর্থাৎ ৫ ভোল্ট পেলে অন / একটিভ আর শুন্য ভোল্টে এটি অফ / ইনএকটিভ। যেহেতু সত্য এবং মিথ্যার মাঝে কোন কিছু আর থাকতে পারে না, অর্থাৎ একটি বাক্য হয় সত্য হবে অথবা মিথ্যা হবে অথবা একটি লাইট হয় বন্ধ অথবা চালু ঠিক তেমনি মাইক্রোকন্ট্রোলারের ক্ষেত্রেও হয় এটি ৫ ভোল্টে একটিভ হবে অথবা ০ ভোল্টে ইনএকটিভ হবে। মাঝামাঝি কোন ভোল্টেজ দিলে এটি ঠিক মতো কাজ করবে না। হয় সে এটাকে ০ অথবা ৫ ধরে নিয়ে কাজ চালাবে।
এখানে যখন কোন পিন Active / High হয়েছে বলা হবে তখন বুঝে নিতে হবে যে পিনটিতে তখন ৫ ভোল্ট আউটপুট হবে।
আর যখন বলা হবে Inactive / Low তখন বুঝতে হবে পিনের আউটপুট শূন্য।
সি প্রোগ্রামিং এ AND কে & দ্বারা এবং OR কে | দ্বারা প্রকাশ করা হয়।এখন কিছু উদাহরণ দেখা যাকঃ
এখনে প্রত্যেক বাইনারি সংখ্যার আগে সি প্রোগ্রামিং এর রীতি অনুযায়ী 0b দেয়া হয়েছে। বাইনারি সংখ্যার প্রথম বিটকে বলে ০ তম বিট। অর্থাৎ ১০১১ এখানে ০ তম বিট হল ১। প্রথম বিট হল ১ , দ্বিতীয় বিট ০ এবং তৃতীয় বিট হল ১।
AND ( & )
1
2
3
4
5
0b1010
&
0b1100
———-
0b1000
এটাকে যদি আমরা সি প্রোগ্রামিং এর ভাষায় লিখতে চাই এবং অন্য কোন ভেরিয়েবল এ রাখতে চাই তাহলে লিখতে হবে
1
int variable = 0b1010 & 0b1100;
০ এবং ১ এর মধ্যে AND হবে ০। কারণ এদের মধ্যে কোন কমন নেই। আবার ০ এবং ০ এর উত্তর হবে ০ কারণ এদের মধ্যে কমন হল ০। আবার ১ এবং ১ এর উত্তর হবে ১।
OR ( | )
1
2
3
4
5
0b1010
Or
0b1100
———-
0b1110
এটাকে যদি আমরা সি প্রোগ্রামিং এর ভাষায় লিখতে চাই এবং অন্য কোন ভেরিয়েবল এ রাখতে চাই তাহলে লিখতে হবে
1
int variable = 0b1010 | 0b1100;
XOR ( ^ )
XOR অনেকটা OR এর মতোই কাজ করে কিন্তু যখন দুটি বিটই অন অর্থাৎ ১ থাকে তখন উত্তর হয় ০।
1
2
3
4
5
0b1010
XOR
0b1100
———-
0b0110
এটাকে যদি আমরা সি প্রোগ্রামিং এর ভাষায় লিখতে চাই এবং অন্য কোন ভেরিয়েবল এ রাখতে চাই তাহলে লিখতে হবে
1
variable = 0b1010 ^ 0b1100;
NOT ( ~ )
এখন জানবো NOT এর কাজ। এর কাজ হল উলটে দেয়া। অর্থাৎ যা আছে তার বিপরীত করে দেয়া। ধরি, 0b 0010 1100
সংখ্যাটির আমরা NOT অপারেশান করতে চাচ্ছি। তাহলে এটি হবে হচ্ছে 0b 1101 0011। অর্থাৎ বিটগুলো শুধুমাত্র উলটে গেল!!! একে যদি আমরা সি প্রোগ্রামিং এর ভাষায় লিখতে চাই এবং অন্য কোন ভেরিয়েবল এ রাখতে চাই তাহলে লিখতে হবে এভাবে।
1
int variable = ~(0b00101100);
-
Previous
প্রজেক্টকে একাধিক ফাইল ভাগ করা এবং External Library যুক্ত করা -
Next
প্রাথমিক প্রোগ্রামিং ধারণা ২ – লেফট শিফট ও রাইট শিফট