প্রোগ্রামিংয়ের মজার দুনিয়া ৪

বাইনারি সংখ্যা কম্পিউটার বিজ্ঞানে খুবই গুরুত্বপূর্ণ। আমরা জানি, কম্পিউটার শুধু বাইনারি সংখ্যাই বুঝতে পারে। সব সংখ্যাকেই সে বাইনারি সংখ্যা দ্বারা চেনে। কম্পিউটার বিজ্ঞানে তাই বাইনারি সংখ্যার অনেক ব্যবহার রয়েছে। এ রকম ব্যবহার শেখার আগে আমরা বাইনারি সংখ্যা নিয়ে কাজ করা শিখব।

বাইনারি সংখ্যা

আমাদের প্রচলিত সংখ্যা পদ্ধতিকে বলা হয় দশমিক বা ডেসিমেল পদ্ধতি। এতে ১০টি অঙ্ক থাকায় ১ দশমিক সংখ্যা বলা হয়ে থাকে। এই ১০টি অঙ্ক হলো ০, ১, ২, ৩, ৪, ৫, ৬, ৭, ৮ ও ৯।

আমাদের সংখ্যা পদ্ধতিতে ঠিক কতটা অঙ্ক রয়েছে তাকে বলা হয়ে থাকে সংখ্যা পদ্ধতিটির বেস (base)। কাজেই আমাদের দশমিক সংখ্যা পদ্ধতির বেস হলো ১০।

বাইনারি সংখ্যাতে ব্যবহৃত অঙ্ক মাত্র দুটি: ০ এবং ১। এ জন্যই বাইনারি সংখ্যা পদ্ধতির বেস হলো ২। বাইনারিতে যেকোনো সংখ্যা লেখার জন্য আমরা এই দুটি অঙ্কই ব্যবহার করব। তোমাদের মনে প্রশ্ন আসতে পারে যে এত অল্প অঙ্ক দিয়ে কি আমাদের পক্ষে সব সংখ্যা লেখা সম্ভব?

আসলে অঙ্ক যত অল্প হোক না কেন, আমাদের পক্ষে যেকোনো সংখ্যাকে অবশ্যই বাইনারিতে লেখা সম্ভব। হয়তো দশমিক পদ্ধতিতে আমাদের যতগুলো অঙ্ক লাগত, তার তুলনায় অনেক বেশি লাগবে, কিন্তু লেখা অবশ্যই সম্ভব হবে। নিচের সারণিতে আমরা প্রথম দিকের কিছু সংখ্যার বাইনারি দেখব।

আমরা দেখতে পাচ্ছি, মাত্র ২ অঙ্ক দিয়ে যে দশমিক সংখ্যা লেখা সম্ভব, সেটাকে বাইনারিতে লিখলে ৫টি অঙ্ক লাগছে। আসলে আরও বেশি অঙ্ক লাগতে পারে। ২ অঙ্কের সবচেয়ে বড় সংখ্যা হলো ৯৯, যার বাইনারি হলো ‘১১০০০১১’ যাতে ৭টি অঙ্ক রয়েছে। আবার ৯৯ সংখ্যাটিকে বাইনারিতে রূপান্তর করলে যে সংখ্যাটি পেলাম, সেটাই বা আমরা হিসাব করলাম কীভাবে?

বাইনারি সংখ্যার রূপান্তর

দশমিক সংখ্যাকে বাইনারিতে রূপান্তরের অনেকগুলো উপায় আছে। এই উপায়গুলোর মধ্যে কিছু উপায় মুখে মুখে করার জন্য সহজ, কিছু উপায় প্রোগ্রাম লেখার জন্য সহজ। আমরা দুই রকম উপায়ই দেখব।

১. দাঁড়িপাল্লা ও বাটখারা উপায়

ধরো, তোমাকে আমি একটি দাঁড়িপাল্লা ও কিছু বাটখারা (যা দিয়ে ভর মাপা হয়) দিয়েছি এবং একটি নির্দিষ্ট বস্তুর ভর কত মাপতে বলছি। তুমি কীভাবে মাপবে? সাধারণত আমরা সবচেয়ে বড় বাটখারাটি দিয়ে চেষ্টা করি। যদি বাটখারার অংশ নিচে নেমে যায়, তখন আমরা এই বাটখারাটি নামিয়ে এর পরবর্তী বাটখারাটি দিয়ে চেষ্টা করি। আর যদি বস্তুর অংশটি নিচে নেমে যায়, তাহলে আমরা ওই বাটখারাটির সঙ্গে আরও বাটখারা যোগ করি। বস্তুর ওজন হয় সবগুলো বাটখারার সমষ্টি। দশমিক থেকে বাইনারিতে রূপান্তরের জন্য আমরা একই রকম উপায় চিন্তা করতে পারি। ধরি, আমাদের যে সংখ্যাটি দেওয়া হয়েছে, সেটি হলো আমাদের বস্তুর ওজন। তাহলে বাটখারা? দশমিক সংখ্যার ক্ষেত্রে প্রতিটি অবস্থানের জন্য যেমন একটি ওজন রয়েছে, বাইনারিতেও তা রয়েছে। যেমন দশমিক সংখ্যার ক্ষেত্রে, আমরা সর্ব ডানের অঙ্কের ওজন বলি একক বা এক, তার বাঁয়ের অঙ্কটির ওজন হয় দশক বা দশ, পরেরটি শতক বা এক শ ইত্যাদি। বাইনারিতে অবস্থান অনুযায়ী এই ওজনগুলো নিচের সারণিতে পাওয়া যাবে:

কাজেই দশমিক থেকে বাইনারিতে রূপান্তরের জন্য আমরা বাইনারির ওজনগুলো নিয়ে কাজ করলেই বের করতে পারব। ধর, আমরা ১৯-এর বাইনারি বের করতে চাই। তাহলে কোন বাটখারাটি ব্যবহার করব? অবশ্যই ১৬-কে ব্যবহার করব। আর বাকি থাকবে ৩। এর জন্য আমরা ব্যবহার করব ২ এবং ১-কে। তাহলে দেখো, আমরা যেসব অবস্থানের ওজনগুলোকে ব্যবহার করেছি, সেসব অবস্থানে ১ বসবে এবং বাকি অবস্থানগুলোতে ০ বসবে। এভাবে করে বসালে আমরা পাই ‘১০০১১’, যা ১৯-এর বাইনারি। একই নিয়মে আমরা যদি ৯৯-এর বাইনারি করতে চাই, তাহলে আমাদের দরকার হবে ৬৪, ৩২, ২ ও ১। এ কারণেই ৯৯-এর বাইনারি ‘১১০০০১১’।

এখন নিজে নিজে চেষ্টা করে দেখো তো ১২৩, ১৭৮ ও ২৫০-এর বাইনারি কত বের করতে পারো কি না?

২. ভাগ পদ্ধতি

দশমিক থেকে বাইনারি রূপান্তরের আরও একটি পদ্ধতি হলো ভাগ পদ্ধতি। এই পদ্ধতিতে যে সংখ্যাটিকে বাইনারিতে রূপান্তর করতে হবে তাকে দুই ভাগ করে ভাগফল ও ভাগশেষ বের করব। ভাগশেষ যেটি পাব, সেটি হবে আমাদের বাইনারি সংখ্যার সর্ব ডানের অঙ্ক। এরপর আমরা ভাগফলটিকে আবার ২ দিয়ে ভাগ করব এবং নতুন ভাগফল ও ভাগশেষ বের করব। এই ভাগশেষ হবে দ্বিতীয় অবস্থানের অঙ্ক। এভাবে করে আমরা ভাগ করতে থাকব যতক্ষণ পর্যন্ত ভাগফল শূন্য না হয়।

যেমন ১৯-এর ক্ষেত্রে ধাপগুলো নিচে দেখানো হলো:

১. ১৯/২। ভাগফল: ৯ ভাগশেষ: ১। কাজেই সর্ব ডানের অঙ্ক হলো ১।

২. ৯/২। ভাগফল: ৪ ভাগশেষ: ১। কাজেই এর বাঁয়ের অঙ্ক হলো ১।

৩. ৪/২। ভাগফল: ২ ভাগশেষ: ০। কাজেই এর বাঁয়ের অঙ্ক হলো ০।

৪. ২/২। ভাগফল: ১ ভাগশেষ: ০। কাজেই এর বাঁয়ের অঙ্ক হলো ০।

৫. ১/২। ভাগফল: ০ ভাগশেষ: ১। কাজেই সর্ব বাঁয়ের অঙ্ক হলো ১। যেহেতু ভাগফল ০ কাজেই আমাদের কাজ শেষ।

এখান থেকে আমরা পাই যে ১৯-এর বাইনারি ১০০১১।

বাইনারি সংখ্যায় অঙ্ক সংখ্যা

তাহলে আমরা যদি হিসাব করে বলতে চাই যে একটি দশমিক সংখ্যাকে বাইনারিতে রূপান্তরিত করলে কতগুলো অঙ্ক থাকবে সেটা কীভাবে বলতে পারি?

যদি আমরা দাঁড়িপাল্লা উপায়ে বলতে চাই, তাহলে একটু চিন্তা করলেই বের করতে পারব। আমরা দেখি যে ওই উপায়ে আসলে আমরা সবচেয়ে বড় যে ওজন নিয়ে কাজ করি, তার যে অবস্থান সেটাই আসলে আমাদের বাইনারি সংখ্যার অঙ্কসংখ্যা। যেমন যেহেতু ১৯-এর ক্ষেত্রে আমাদের প্রথমে ১৬ ওজনটিকে নিতে হবে, যার অবস্থান ৫ কাজেই ১৯ কে বাইনারিতে রূপান্তর করলে আমরা ৫ অঙ্কের একটি সংখ্যা পাব।

গাণিতিক ভাষায় আমরা বলতে পারি যে বাইনারিতে রূপান্তর করা একটি সংখ্যা ঘ-এ অঙ্ক থাকবে মোট log2(N) টি।