Friday, April 24, 2020

এসো বাইনারিকিয়া শিখি


------------
২৫ ‍এপ্রিল সকাল ৭:৩৮ – ১০:০৯
---------------------
ছোট্টবেলায় আমরা বাংলায় ১ থেকে ১০০ পর্যন্ত গণনা শিখতাম। এটাকে বলা হয় ‘শতকিয়া’। আমরা কত সহজেই না শতকিয়া শিখে ফেলি। একটার পর একটা সংখ্যা সহজেই চলে আসে। কিন্তু কমপিউটারের নিজস্ব কাজে ব্যবহৃত বাইনারি সংখ্যা পদ্ধতিতে কি অতটা সহজে ১ থেকে ১০০ পর্যন্ত আমরা লিখতে পারি?
ঠিক ধরেছ! আজকে আমরা বাইনারিতে ১ থেকে ১০০ পর্যন্ত গণনা করা শেখবো। অবশ্যই সহজ উপায়ে। আমি এটার নাম দিলাম ‘বাইনারিকিয়া’। নামটা মজার না? অবশ্যই মজার!! মজা স্কয়ার স্কয়ার!! মজার না হলেও কিচ্ছু করার নাই। কারণ-
”নাম রেখেছি বাইনারিকিয়া যখন দেখেছি
হয়তো বা সেই ক্ষণেই অংক কষেছি!
--
--
(শিক্ষার্থীদের) জল ভরা মেঘ ঐ দু’চোখে দেখতে আমি পেয়েছি
একলা মনে নির্জনেতে তাই সহজ করার উপায় খুঁজেছি।”
-
আমরা মানুষেরা সর্বোচ্চ ১০ টি অংক নিয়ে কাজ করতে পারি। অংকগুলো হলো 0, 1, 2, 3, 4, 5, 6, 7, 8, এবং 9। যেহেতু ১০টি অংক সেহেতু এই সংখ্যা পদ্ধতিকে বলা হয় Decimal বা দশমিক সংখ্যা পদ্ধতি।
কিন্তু মজার ব্যাপার হলো কমপিউটার যন্ত্রটা এতটাই নির্বোধ যে দশ দশটি অংক নিয়ে কাজ করার মত বুদ্ধি-সুদ্ধি তার একদমই নেই। সে শুধু বোঝে বিদ্যুৎ আছে আর বিদ্যুৎ নেই। বিদ্যুৎ থাকলে 1, আর না থাকলে 0। অর্থাৎ তার ব্যবহৃত অংক সংখ্যা দু’টি – 0 ও 1 । এটাকে বলে বাইনারি(Binary) সংখ্যা পদ্ধতি। আর 0 ও 1 কে বলে Bit(Binary Digit এর সংক্ষিপ্তরূপ)
-
দুধের বাচ্চারাও এগুলো জানে। এসব দুধ-ভাত বিষয়ক কথা বলা আমার এই টিউটোরিয়ালের মূখ্য উদ্দেশ্য নয়। কিছু একটা বলে শুরু করতে হয়। তাই বললাম আর কি? :P
-
বাইনারি সংখ্যা পদ্ধতিটি দুই অংক ভিত্তিক। তাহলে আমরা 20, 21, 22, 23 এভাবে লিখতেই পারি, তাই না? আসলে আমরা যা করতে যাচ্ছি তা হলো খুব জটিল কোনো হিসাব-নিকাশ না করেই 0 ও 1 দিয়ে ১, ২, ৩, ৪….১০০ এভাবে লিখার সহজ পদ্ধতি বের করার চেষ্টা করছি। প্রথমেই বলে নেয়া নিরাপদ মনে করছি, আমি নিজে নিজেকে সহজে বোঝানোর জন্য ;) এই পদ্ধতিটি চিন্তা করে বের করেছি। কোনো বই বা উৎসে এ পদ্ধতি থাকতে পারে আবার নাও থাকতে পারে। কিংবা এভাবে মাথা খাটানোর সুফল বাস্তবে পাওয়া যেতেও পারে আবার নাও যেতে পারে। কোনো কিছুর জন্যই কর্তৃপক্ষকে দায়ী করা যাবে না :P । শিখতে হবে নিজ দায়িত্বে, ব্যবহারিক মূল্য নিরুপন করতে হবে নিজ দায়িত্বে।
কথা অনেক হলো। এখন একটা কাজ কর। নিচের মত একটা ঘর এঁকে ফেল।
       23
     22
       21
        20





























লক্ষ্য করো, আমি ডান দিক থেকে লিখেছি।
20 এর মান 1 । তেমনি,
21 = 2
22 = 4
23 = 8
যেহেতু 20 এর মান 1 সেহেতু এই ঘরে 0 ও 1 কে একবার করে লিখতে পারবো। নিচে দেখ:
       23
     22
       21
        20



        0



        1




















এই ঘরে যদি আরো 0 ও 1 লিখতে চাই তাহলে আবারও একবার 0 এবং একবার 1 লিখতে পারবো। নিচে দেখ:
       23
     22
       21
        20



        0



        1



        0



        1













এভাবে 20 এর ঘরে একবার 0 ও একবার 1 লিখে যেত পারবো প্রয়োজন মত।
এবার আসা যাক 21 এর ঘরে। 21 এর মান 2 ।
এই ঘরে দুইটা করে 0 এবং দুইটা করে 1 লিখতে পারবো:
       23
     22
       21
        20


       0



       0



       1



       1














দুইবার 0 ও দুইবার 1 লেখার পর আবারও দুইবার 0 ও তারপর দুইবার 1, তারপর আবার দুইবার 0 ও দুইবার 1… এভাবে প্রয়োজন মত লিখতে পারবো। নিচে দেখ:
       23
     22
       21
        20


       0



       0



       1



       1



       0



       0



       1



       1


এবার দেখি 22 এর ঘর।
22 = 4
তারমানে চারবার 0 এবং চারবার 1 লেখা যাবে এই ঘরে:
       23
     22
       21
        20

       0
      


       0
      


       0
      


       0
      


       1
      


       1
      


       1
      


       1
      


তারপর আবার চারবার 0 ও চারবার 1:
       23
     22
       21
        20

       0
      


       0
      


       0
      


       0
      


       1
      


       1
      


       1
      


       1
      


       0



       0



       0



       0



       1



       1



       1           



       1



একই ভাবে আমরা 23 এর ঘরে আটবার করে 0 ও আটবার করে 1 লিখতে পারবো।
এবার বাইনারিকিয়া লেখার পালা। দু’টি পদ্ধতি আমি তোমাদেরকে দেখাতে পারি।
একটা হলো শর্টকাট পদ্ধতি। এতে মাথা একটু কম খাটালেও চলবে।
উপরে আমি যেভাবে ঘরগুলি পূরণ করেছি ঠিক সেভাবে চোখ বন্ধ করে ঘরগুলো পূরণ করে ফেল। পূরণ করার পর দেখতে হবে ঠিক এরকম:
       23
     22
       21
        20
       0
       0
       0
        0
       0
       0
       0
        1
       0
       0
       1
        0
       0
       0
       1
        1
       0
       1
       0
        0
       0
       1
       0
        1
       0
       1
       1
        0
       0
       1
       1
        1
       1
       0
       0
        0
       1
       0
       0
        1
       1
       0
       1
        0
       1
       0
       1
        1
       1
       1
       0
        0
       1
       1
       0
        1
       1
       1           
       1
        0
       1
       1
       1
        1

যেহেতু বাম পাশের শূন্য না রাখলেও চলে সেহেতু সেগুলো মুছে দিতে পারো।
       23
     22
       21
        20
      
      
      
        0
       
       
      
        1
      
      
       1
        0
      
      
       1
        1
      
       1
       0
        0
       
       1
       0
        1
      
       1
       1
        0
      
       1
       1
        1
       1
       0
       0
        0
       1
       0
       0
        1
       1
       0
       1
        0
       1
       0
       1
        1
       1
       1
       0
        0
       1
       1
       0
        1
       1
       1           
       1
        0
       1
       1
       1
        1

দেখতো একটা ম্যাজিক হয়ে গেছে কিনা। 0 থেকে 15 পর্যন্ত বাইনারি সংখ্যা লেখা হয়ে গেছে কিনা!

এবার আরেকটা পদ্ধতি দেখা যাক। একটু মাথা খাটাতে হবে।
       23
     22
       21
        20



        0



        1





















আমরা প্রথমেই শুন্য ও এক লিখলাম।
দুই লিখবো কিভাবে? প্রথম ঘরে নিয়ম অনুযায়ী একটা 0 বসবে। দ্বিতীয় ঘরে বসবে 1। কেন 1 বসবে? কারণ দ্বিতীয় ঘরে দুইটি 0 আর দুইটি 1 বসার কথা, তাই না? উপরের খালিঘরগুলোতে 0 এমনিতেই আছে। গুণে দেখ কয়টা ঘর? দুইটা ঘর। দুইটা ঘরে 0 আগে থেকেই আছে। তাহলে আমাদের ঘরে অবশ্যই 1 বসবে।
       23
     22
       21
        20



        0



        1


       1
        0

















এবার তিন লিখি চল। প্রথম ঘরে হিসেবমত 1 বসবে। আর দ্বিতীয় ঘরে বসবে 1। কারণ এই ঘরে আরেকটা 1 লিখলে দুইটা 0 ও দুইটা 1 এর হিসাব পূর্ণ হয়।
       23
     22
       21
        20



        0



        1


       1
        0


       1
        1


      
       









এখন একটা প্রশ্ন উঠতেই পারে- তিন লিখতে যে দুই ঘর লাগবে এটা কী করে বুঝবো? তিন ঘর লাগবে না কী করে বুঝবো?
এর দুইটি ব্যাখ্যা আমি তোমাকে এই মুহূর্তে দিতে পারি।
লক্ষ্য করি, তৃতীয় ঘরের মান 4(22)। 4 লেখার আগপর্যন্ত মানে 3 পর্যন্ত লেখার জন্য এই ঘরের আগ পর্যন্ত-ই যথেষ্ট। যখনই 4 আসবে তখনই এই ঘরের প্রথম প্রয়োজন পড়বে।
আরেকটা কৌশল হলো, প্রতিটা সারির প্রত্যেকটি কলাম 1 দ্বারা পূর্ণ না হওয়া পর্যন্ত এর পরের ঘরের প্রয়োজন পড়বে না। যখন প্রত্যেকটা ঘর 1 দ্বারা পূর্ণ হয়ে যাবে ঠিক তার পরের সংখ্যার জন্য আরেকটি নতুন ঘরের প্রয়োজন পড়বে। আমার দেখানো পদ্ধতিতে আরো কিছু সংখ্যা বানাতে থাকো। এক সময় দেখবে তুমি নিজেই অনেক কিছু আবিষ্কার করে ফেলেছো।
আচ্ছা এবার চার লিখে ফেলি। কি বল?
প্রথম ঘরে বসবে 0।
দ্বিতীয় ঘরে বসবে অবশ্যই 0। কারণ এই ঘরে ইতিমধ্যে দুই বার 0 ও দুইবার 1 বসানো হয়ে গেছে। এবার তো আবার 0 দিয়েই শুরু করতে হবে, তাই না?
লক্ষ্য করি, উপরের সারির দুই কলামে 1 1 দ্বারা পূর্ণ হয়ে গেছে। তাহলে এবার তৃতীয় ঘরটি ব্যবহার করতে হবে। তৃতীয় ঘরটির উপরের চারটি ঘর ফাঁকা মানে ওখানে 0 আছে। যেহেতু এই ঘরে চারটি 0 ও চারটি 1 বসাতে হবে সেহেতু আমরা অবশ্যই 1 বসাবো।(পরবর্তী সংখ্যাগুলোর জন্য আরো তিনটা 1 এই ঘরে বসানোর সুযোগ আমরা পাব)

       23
     22
       21
        20



        0



        1


       1
        0


       1
        1


       0
        0









এবার তোমরা নিজে নিজে মাথা খাটিয়ে বাকী সংখ্যাগুলো লিখে ফেল। তোমরা হয়তো আরো সহজ পদ্ধতিতে বের করতে পার। কিন্তু তাতে ক্ষতি কী? নতুন আরেকটা পদ্ধতি জানলে এবং মাথা খাটিয়ে বুঝলে এবং মাথা খাটিয়ে সংখ্যা বানালে। মাথা খাটানোর আনন্দটাই আলাদা। যখন মাথা খাটাবে তখন আনন্দ পাবে। যখন আনন্দ পাবে তখন মাথাটা খাটতে থাকবে, সচল হতে থাকবে। যখন মাথা খাটবে ও সচল হবে তখন আনন্দের মাত্রা আরো বেড়ে যাবে। আনন্দের while(1) লুপ আজীবন চলতে থাকবে।
এই যেমন ধরো- আমি মাথা খাটিয়ে নিজের মত করে এই পদ্ধতিটি বের করেছি। এতে আমার যে কত আনন্দ লেগেছে তা বলে বোঝানো যাবে না। তারপর যখন তোমাদের জন্য টিউটোরিয়ালটি লিখলাম তখন তো আনন্দ আর ধরে না। আল্লাহ আমাকে আমার উপকারের জন্য যে জিনিস দান করেছে সেটা যখন অন্যের উপকারেও ব্যয় করা হয় তখন আনন্দও হয়, আল্লাহর দেয়া দায়িত্ব পালন করার ফলে আত্মতৃপ্তিও হয়।
তোমরাও সব সময় চেষ্টা করবে মাথা খাটাতে, আনন্দ পেতে এবং অপরকে সাহায্য করে নিজের আনন্দকে while(1) লুপ-এর মধ্যে ফেলে দিতে।

2 comments: