সোমবার, অক্টোবর ১১, ২০১০

বাইনারি এবং ডিজিটাল: দুজনে দুজনার!

খনো ভেবে দেখেছেন যে সংখ্যা নিয়ে কাজ করতে আদ্যিকালের মানুষদের কেমন সমস্যায় পড়তে হতো? পিথাগোরাসের মতো গণিতবিদ কেন দুই-এর বর্গমূল বের করতে নাকানিচুবানি খেয়েছিলেন? কেনই বা আর্কিমিডিসের মতো মহারথী শেষতক পাই-এর মান দশমিকের পর মাত্র দুই ঘর পর্যন্ত সঠিকভাবে বের করে রণে ভঙ্গ দিলেন? রোমান সংখ্যা পদ্ধতি জেনে থাকলে বলুন তো, রোমান পদ্ধতিতে MMCXLVIII = ? বোধহয় জানেন যে এখানে M = 1000, C = 100, L = 50, X = 10, V = 5 এবং I = 1 বোঝাচ্ছে। কিন্তু এটুকু জানলেই তো হবে না। এই চিহ্নগুলো কোন অবস্থানে বসলে তার হিসাবটা কেমন দাঁড়াবে সেটাও জানা চাই। যেমন, এই উদাহরণে MMCXLVIII = 1000 + 1000 + 100 + 50 - 10 + 5 + 1 + 1 + 1 = 2148। কত জটিল একটি প্রক্রিয়া! দেখতে এমনিতেই বিদঘুটে, তার ওপর আবার মান বের করতে আরেক ফেঁকড়া—কখনো যোগ কখনো বিয়োগ, একেবারে যাচ্ছেতাই অবস্থা। এমনতর সংখ্যাপাতন নিয়ে কাজ করতে গেলে তো পিথাগোরাসই হোক আর আর্কিমিডিসই হোক, সে যতই মহাপরাক্রমশালী গণিতজ্ঞ হোন না কেন, আজকালকের প্রাইমারি স্কুলের শিক্ষার্থীর কাছে পাটিগণিতের দৌড়ে গো-হারা হারবেন, তাতে আশ্চর্য কী!
 
আমরা এখন যে সংখ্যাপাতন ব্যবহার করি সেটা তবে কেমন? সেটা কি রোমান পদ্ধতির চেয়ে ভালো? ওই 2148-এর কথাই ধরুন। এখানে 2, 1, 4 এবং 8 চিহ্নগুলোর মানে কি তা আমরা ভালোই জানি। আমাদের সংখ্যাপাতনে ওই চিহ্নগুলোর একটা বিশেষ নাম আছে—অঙ্ক (digit)। রোমান সংখ্যাপাতনে যেমন কোন চিহ্ন কোথায় বসল সেটা খেয়াল করা জরুরি, তেমনি আমাদের সংখ্যাপাতনেও অঙ্কগুলোর অবস্থান জানা আবশ্যক, নতুবা সংখ্যাটার মান বের করা সম্ভব নয়। 2148-এর 2 এবং 4 যদি একে অপরের সঙ্গে জায়গা বদল করে তাহলে সংখ্যাটা পাল্টে 4128 হয়ে যায়। এমন কেন হয় তা বুঝতে হলে আরেকটু পেছনে তাকাতে হবে। 1, 2, 3, 4, 5, 6, 7, 8, 9—এই পর্যন্ত এসে দেখা যাচ্ছে, আমাদের অঙ্কের ভান্ডার ফুরিয়ে গেল। কারণ আমরা যেভাবে গুনতে শিখেছি সেখানে অঙ্ক আছে সর্বসাকল্যে দশটি। তাই উপায় না দেখে 9-এর পরে 10 বসাই। এখানে এক অঙ্কের সবচেয়ে বড় সংখ্যা 9-এর পরে চক্রাকারে 0 এসে জুটেছে, তবে একটা পুরো চক্কর ইতিমধ্যে যে দেওয়া শেষ তা বোঝাতেই ওই 0-এর বামে একটা 1 বসেছে। এভাবে 10, 11, 12, 13, ... 19-এর পরে গিয়ে আরেক চক্কর পুরো হওয়ায় 0-এর বামে একটা 2 বসে তৈরি করল 20। এমনিভাবে দুই অঙ্কের সবচেয়ে বড় সংখ্যা 99-এর পরে বসছে 100 এবং এভাবে অসীমতক চলছে তো চলছেই!
 
তাহলে দেখা যাচ্ছে, কোনো অঙ্কের ঠিক বাম পাশে যে অঙ্কটি বসছে সেটা আসলে প্রথমোক্ত অঙ্কটি কতগুলো চক্কর সম্পন্ন করেছে তার হিসাব দেয়। 2148-এর ক্ষেত্রে, সবচেয়ে ডানের 8 থেকে বোঝা যায় যে সেটি তার সর্বশেষ চক্করের পর আট ধাপ এগিয়েছে। তার বামে 4 নির্দেশ করছে যে দশ অঙ্কের চারটি চক্কর (4 × 10 = 40) সম্পন্ন করে অবশিষ্ট 8 তার ডানে বসেছে। একইভাবে 4-এর বামে 1 নির্দেশ করছে যে সেখানে একটি চক্কর সম্পন্ন হয়ে 4 বাকি রয়েছে। এটা যেহেতু বাম থেকে তিন নম্বর স্থান, তাই এখানকার এক চক্কর মানে হলো সর্বমোট 1 × 10 × 10 = 100 চক্কর। তাহলে আমরা যে সংখ্যাপাতন ব্যবহার করি সেখানে বিভিন্ন অঙ্ক তার অবস্থান অনুযায়ী বিভিন্ন মান নেয়। 2148-এর মান বুঝতে হলে চক্করের হিসাবটা মাথায় থাকা দরকার। 2148 = (2 × 10 × 10 × 10) + (1 × 10 × 10) + (4 × 10) + 8
= 2 × 103 + 1 × 102 + 4 × 101 + 8 × 100

রোমানরা সংখ্যার বিভিন্ন চিহ্নের স্থানভিত্তিক মান বের করতে যে হরেক রকমের যোগ-বিয়োগের ব্যবসা ফেঁদেছিল, তার তুলনায় আমাদের সংখ্যাপাতন বেশ সাদামাটা। বাম থেকে যত নম্বর ঘর তার চেয়ে এক কম হবে দশের ঘাত (power) এবং এভাবে যা পাওয়া যাবে ওই ঘরে বসা অঙ্কের যা মান তার সঙ্গে গুণ করুন। তারপর এভাবে পাওয়া সবগুলো মান যোগ করতে হবে। দশটা চিহ্নেই কেল্লাফতে! অসীম পর্যন্ত সংখ্যা লেখা যাচ্ছে। রোমানদের সংখ্যা একটু বড় হলেই সেটাকে লেখার জন্য নিত্যনতুন চিহ্ন আমদানি করতে হতো।

প্রশ্ন হলো, আমাদের সংখ্যাপাতনে দশটার কম চিহ্ন ব্যবহার করে অসীমতক সংখ্যা লিখে যাওয়া সম্ভব? অবশ্যই সম্ভব! বর্তমানে প্রচলিত সংখ্যাপাতনের যে বিশেষ রূপটি আমরা দৈনন্দিন কাজকর্মে ব্যবহার করি সেটায় চিহ্ন বা অঙ্ক দশটি, তাই এর আরেক নাম দশমিক বা দশভিত্তিক (decimal) সংখ্যা-পদ্ধতি। এই একই সংখ্যাপাতনে যেকোনো n সংখ্যক (n স্বাভাবিক সংখ্যা) চিহ্ন ব্যবহার করে n-ভিত্তিক সংখ্যা-পদ্ধতি বানানো যায়। উদাহরণস্বরূপ পাঁচভিত্তিক সংখ্যা-পদ্ধতি বানিয়ে দেখা যাক। পাঁচভিত্তিকে অঙ্ক পাঁচটি—0, 1, 2, 3 এবং 4। এর বাইরে আর কোনো অঙ্ক সেখানে ব্যবহার করা চলবে না। দশ ভিত্তিকে যেমন 9-এর পরে 10 বসল তেমনি পাঁচভিত্তিকে 4-এর পরে 10 বসবে। একটু অদ্ভুত লাগছে বটে, তবে দশ ভিত্তিকের 5 এবং পাঁচ ভিত্তিকের 10 একই সংখ্যা নির্দেশ করে! সাধারণভাবে বলা যায়, a1a2a3a4...ak যদি k অঙ্কবিশিষ্ট n-ভিত্তিক সংখ্যা হয় তাহলে তার মান হবে, a1 × nk–1 + a2 × nk–2 + a3 × nk–3 + ... + ak–1 × n1 + ak × n0
এটাই হলো আমাদের বহুল ব্যবহূত সংখ্যাপাতনের সাধারণ রূপ। এখানে n-এর মান দশ বসালে সেটা হবে দশ ভিত্তিক সংখ্যাব্যবস্থা, পাঁচ বসালে পাঁচ ভিত্তিক, ত্রিশ বসালে ত্রিশ ভিত্তিক, ষোল বসালে ষোল ভিত্তিক ... ইত্যাদি ইত্যাদি। অবশ্য দশের বেশি ভিত্তি নিয়ে কাজ করতে গেলে নতুন চিহ্ন আমদানি করতে হবে। যেমন: ষোলভিত্তিক সংখ্যাব্যবস্থার অঙ্কগুলো হলো 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e এবং f।

এখন প্রশ্ন হলো, আলোচ্য সংখ্যাপাতনে সবচেয়ে সরল সংখ্যা-পদ্ধতি কোনটা হতে পারে? যেটায় সবচেয়ে কমসংখ্যক চিহ্ন ব্যবহার করা লাগে, সেটাই নিশ্চয়ই সবচেয়ে সরল। সবচেয়ে সরল সংখ্যা-পদ্ধতি হলো দুই ভিত্তিক (binary) পদ্ধতি। বাইনারি গণনায় 1-এ এসেই দেখা যাচ্ছে আমাদের অঙ্কের ভান্ডার ফুরিয়ে গেল। কারণ বাইনারিতে অঙ্ক আছে সর্বসাকল্যে দুটি—0 এবং 1। তাই উপায় না দেখে 1-এর পরে 10 বসাই। এখানে এক অঙ্কের সবচেয়ে বড় সংখ্যা 1-এর পরে চক্রাকারে 0 এসে জুটেছে, তবে একটা পুরো চক্কর ইতিমধ্যে যে দেওয়া শেষ তা বোঝাতেই ওই 0-এর বামে একটা 1 বসেছে। এভাবে 10, 11-তে গিয়ে আরেক চক্কর পুরো হওয়ায় 0-এর বামে আরও একটা 0 বসে সেই চক্করও খতম করে তৈরি করল 100। দশ ভিত্তিকে যা 4, বাইনারিতে সেটাই 100। তারপর আসবে 101, 110, 111, 1000, 1001, ... এভাবে অসীমতক চলতে থাকবে। বাইনারিতে 101010-এর মান কত? উপরের সংখ্যাপাতনের ‘চক্করওয়ালা’ সাধারণ সূত্র হতে লেখা যায়, বাইনারিতে 101010 = 1 × 25 + 0 × 24 + 1 × 23 + 0 × 22 + 1 × 21 + 0 × 20 = 42। অর্থাৎ বাইনারিতে যা 101010, দশভিত্তিকে তা-ই 42।
 
বর্তমানে তথ্যপ্রযুক্তির এই যুগে চারদিক কম্পিউটারে সয়লাব। এই কম্পিউটারের যাবতীয় কর্মকাণ্ডের মূলে আছে বাইনারি—1 আর 0, on আর off, বিদ্যুৎপ্রবাহের উপস্থিতি আর অনুপস্থিতি। বাইনারির ব্যাপারটা যদি না থাকত তাহলে আমরা কম্পিউটার বানাতে পারতাম না। কারণ হলো বিদ্যুতের কিংবা বিজলি বাতির মাত্র দুটি অবস্থা হতে পারে। আছে বা নেই, জ্বলে বা নিভে থাকে। এই আছে বা নেই দিয়ে যদি সব ‘কথা’কে প্রকাশ করা যায় তাহলেই কেবল বিদ্যুৎ দিয়ে ‘কাজ’ করার যন্ত্র বানানো সম্ভব। কম্পিউটার হোক বা মুঠোফোন হোক সবই এই এক আর শূন্যের ভোজবাজি। কম্পিউটারে টাইপ করার বেলায় একসেট ক্যারেক্টার ব্যবহূত হয়। প্রতিটি বর্ণ এক একটি ক্যারেক্টার, প্রতিটি বিরামচিহ্ন এবং কার-ফলা এক একটি ক্যারেক্টার, কিছু ক্যারেক্টার আছে যেগুলো চাপলে কম্পিউটারের পর্দায় সেটার জন্য নির্দিষ্ট কোনো চিহ্ন ভেসে ওঠে না কিন্তু লেখার ধাঁচকে প্রভাবিত করে—সেগুলোও এক একটা ক্যারেক্টার। আমাদের দেশে প্রতিটি মুঠোবার্তার সর্বোচ্চ সীমা 160 ক্যারেক্টার, 160 বর্ণ নয়। এই ক্যারেক্টারগুলোকে আলাদা আলাদাভাবে চিহ্নিত করার জন্য কম্পিউটারের ভেতরে বাইনারি পদ্ধতিকে কাজে লাগানো হয়। আগে ছিল আসকি সংকেত আর এখন হয়েছে ইউনিকোড। দুটোতেই সব বর্ণকে এক আর শূন্য দিয়ে সাজানো হয়েছে। কাজেই কম্পিউটারের কাজ করতে কোনো অসুবিধা হয় না। এ কারণে বাইনারি পদ্ধতিকে অনেকে ডিজিটাল পদ্ধতি বলে।
 
সবশেষে একটি প্রশ্ন। এই দুনিয়ায় 10 ধরনের মানুষ আছে—যারা বাইনারি বোঝে আর যারা বাইনারি বোঝে না। প্রিয় পাঠক, আপনি কোন দলে?

ডিজিটাল দিনের শুভেচ্ছা।
 
সৌজন্যে: প্রথম আলো (১০ অক্টোবর ২০১০, রবিবার)