| গোলাম সারোয়ার চৌধুরী |

গত সংখ্যার পর…

আমরা যখন কম্পিউটারকে কোন ড্যাটা ইনপুট দেই, তখন কম্পিউটার ড্যাটাকে প্রসেস করে আমাদেরকে আউটপুট প্রদান করে। প্রসেসের কাজটি করে দেয় CPU (Central Processing Unit)। কিন্তু আমাদের দেয়া ড্যাটা বা প্রোগ্রামগুলোকে তো কম্পিউটার তার কোথাও না কোথাও রেখে প্রসেস করবে তাই তো? আর এই ড্যাটা বা প্রোগ্রামগুলোকে কম্পিউটার তার যে স্থানে রেখে প্রসেস করে তাকেই সাধারণ ভাষায় বলা চলে কম্পিউটার মেমোরি।

আমরা পড়ি আবার ভুলেও যাই। কিন্তু কম্পিউটার নির্বোধ হলেও সে কিন্তু আমাদের মতো ভুলে যায় না!  অন্তত সেই দিক থেকে কম্পিউটার আমাদের চেয়ে অনেকটাই বুদ্ধিমান বলা যায়।

আমরা কম্পিউটারকে যা কিছুই ইনপুট দেই না কেন, সে কিন্তু আমাদের দেয়া ড্যাটাগুলোকে ০, ১ এ রূপান্তরিত করেই তারপর প্রসেস করে। একটি কম্পিউটার তার মেমোরিতে কতটুকু ড্যাটা রাখতে পারবে তা নির্ভর করে তার বিট (নরঃ) সংখ্যার উপর।এই বিটগুলো ০ ও ১ এর সমন্বয়ে গঠিত। যেমন দুই বিটের মেমোরিতে সে চারটি ভিন্ন জিনিস রাখতে পারবে। নিচের টেবিলে দেখ।

১ম বিট – ২য় বিট

০ – ০

০ – ১

১ – ০

১ – ১

তাহলে দুই বিটের জন্য পেলাম ০০, ০১, ১০, ১১ চারটি ভিন্ন সংখ্যা। এবার তোমার বুদ্ধি খাটিয়ে বের করে ফেল ৩ ও ৪ বিটের জন্য কতটি ভিন্ন ভিন্ন সংখ্যা রাখা যায়।

হবে ৮ ও ১৬। মনে মনে কিন্তু তুমি ততক্ষণে একটা সূত্র বানিয়ে ফেলেছ! যেহেতু ২, ৩ ও ৪ বিটের জন্য যথাক্রমে ৪, ৮ ও ১৬টি ভিন্ন ভিন্ন সংখ্যা রাখা যায়, সুতরাং n সংখ্যক বিটের জন্য তোমার বানানো সূত্রটি হল ২n টি ভিন্ন ভিন্ন জিনিস রাখা যাবে।

আর এই ০, ১ এর সমন্বয়ে গঠিত সংখ্যাকে বলা হয় দ্বিমিক সংখ্যা (binary number)। অন্য ভাবে বলা যায়, যে সকল সংখ্যা গঠনে কেবল মাত্র দুইটি অঙ্ক ০, ১ ব্যবহৃত হয় সেই সংখ্যাকে বলা হয় দ্বিমিক সংখ্যা।  যেমন , ধর তুমি যদি তোমার কম্পিউটারকে ৬ ইনপুট দাও তাহলে, কম্পিউটার একে ১১০ দ্বিমিক সংখ্যা আকারে মেমোরিতে রাখবে। আমরা বাস্তব জীবনে গণনা বা পরিমাণ নির্ণেয়ের জন্য যে সকল সংখ্যা ব্যবহার করি সেগুলো ০, ১, ২, ৩, ৪, ৫, ৬, ৭, ৮, ৯, এই দশটি অঙ্ক দ্বারা গঠিত সংখ্যাকে বলা হয় দশমিক সংখ্যা বা দশভিত্তিক সংখ্যা (decimal number)। এবার এসো একটু ঝটপট  জেনে নেই, কিভাবে কম্পিউটার একটি দশভিত্তিক সংখ্যাকে দ্বিমিক সংখ্যায় রূপান্তরিত করে।

৬ সংখ্যাটিকে দ্বিমিক আকারে প্রকাশের পদ্ধতি নিম্নরূপ

Untitled-4

সুতরাং (৬)১০ =(১১০)২

এখানে ১০ হল দশমিক সংখ্যার ভিত্তি

(নধংব) এবং ২ হল দ্বিমিক সংখ্যার ভিত্তি।

উত্তর

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

এবার একটু খাতা কলম নিয়ে বসে যাও! ব্যাপনতো শুধু পড়লেই হবে না। তোমার মাথার মধ্যেও ব্যাপনের ঝড় তুলতে হবে। তোমার মাথায় একটু ঝড় তোলার জন্য (১২৩৭)১০ দশ ভিত্তিক সংখ্যার জন্য দ্বিমিক সংখ্যাটি কি তা বের করে ফেল। দশমিক সংখ্যাটি কি অনেক বড়? ভয় পেয়ে গেলে নাকি? না আমি জানি তোমাদের মাথায় অনেক বুদ্ধি তাই তোমরা ভয়ও পাওনা। এবার মিলিয়ে দেখ দ্বিমিক সংখ্যাটি (১০০১১০১০১০১) কিনা।

এক সাথে ৮বিট নিয়ে গঠিত হয় ১ বাইট (byte)। আর এই বাইটকেই বলা হয় কম্পিউটার মেমোরির একক। এক বাইট মেমোরিতে একটি সংখ্যা বা একটি বর্ণ (letter) রাখা যায়। অর্থাৎ প্রতি বাইটে একটি করে ড্যাটা বা নির্দেশনা (instruction) রাখা যায়। যেমন তুমি যদি তোমার নামটি কম্পিউটারে সংরক্ষণ (save) করে রাখতে চাও তাহলে তোমার নামের মধ্যে যতগুলো বর্ণ আছে ঠিক তত বাইট জায়গা কম্পিউটার তার মেমোরি থেকে তোমার নামের জন্য বরাদ্দ দেবে।

Untitled-5

যেহেতু কম্পিউটার তার মেমোরিতে ড্যাটাকে বাইনারি আকারে রাখে তাই, সাধারণত কম্পিউটার মেমোরির ২ এর গুণিতক আকারে প্রকাশ করা হয়।

image 46

= ৮ বিট = ১ বাইট

১০ = ১০২৪ বাইট = ১ কিলোবাইট বা ১K

১০ K = ১০২৪ K = ১ মেগাবাইট বা ১MB

১০MB = ১ গিগাবাইট বা ১GB

১০এই = ১ টেরাবাইট বা ১TB

এবার চল একটু জেনে নিই কম্পিউটারের মেমোরি কত প্রকার। সাধারণত আকার (size), তৈরিতে খরচ, গতি (speed) ইত্যাদি বৈশিষ্ট্যের ওপর ভিত্তি করে কম্পিউটার মেমোরিকে তিন ভাগে ভাগ করা যায়।

অভ্যন্তরীণ মেমোরি (Internal Memory): অভ্যন্তরীণ বলতে এখানে CPU এর ভেতর কার মেমোরির কথা বলা হচ্ছে। এই ধরনের মেমোরিগুলো কতকগুলো দ্রুত গতিসম্পন্ন রেজিস্টার দ্বারা গঠিত। এই ধরনের মেমোরি তৈরিতে খরচ খুবই বেশি এবং এদের আকার খুবই ছোট হয়। তবে এগুলো অস্থায়ী (volatile)। যে সব মেমোরিতে কম্পিউটার বন্ধ করলে ড্যাটা হারিয়ে যায়, সে মেমোরিগুলোকে অস্থায়ী মেমোরি বলা হয়। এই রেজিস্টার মেমোরির পরেই থাকে ক্যাশ মেমোরি।

প্রাথমিক মেমোরি/প্রধান মেমোরি (Primary memory/Main memory): প্রাথমিক মেমোরি বলতে সাধারণত RAM (Random Access Memory) কেই বুঝায়। CPU এর সব ধরনের প্রসেসিংই এই মেমোরিতে হয়। এটিও এক প্রকারের অস্থায়ী মেমোরি। তবে এটির গতি রেজিস্টার মেমোরির তুলনায় কম, আকার বড় ও খরচ কম। আমরা কম্পিউটারের সাহায্যে মুভি দেখা, গেম খেলা, প্রোগ্রামিং করা ইত্যাদি যা কিছুই করি না কেন, সব কিছুই RAM এ নির্বাহ (execute) হয়। আমরা প্রোগ্রামিং করার সময় মেমোরি বলতে RAM কেই বুঝব। ROM (Read Only Memory) কে এই প্রকারের মধ্যে ফেলা যায়।

সেকেন্ডারি মেমোরি (Secondary Memory): যদি আমরা কম্পিউটারে কোন কিছু স্থায়ীভাবে সংরক্ষু করে রাখতে চাই, তাহলে এই ধরনের মেমোরি দরকার। যেমন হার্ড ডিস্ক (Hard Disk), পেনড্রাইড (Pen Drive), মেমোরি কার্ড (memory card) ইত্যাদি। এগুলো স্থায়ী (non volatile) মেমোরি। অর্থাৎ কম্পিউটার বন্ধ করে দিলেও ড্যাটা সংরক্ষিত থাকে। এই প্রকারের মেমোরির আকার প্রাইমারি মেমোরির তুলনায় খুবই বড় হয়, তৈরিতে খরচ খুবই কম এবং খুব ধীরগতিসম্পন্ন হয়।

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

এবার তোমার জন্য একটি কাজ- ধর তোমার কম্পিউটারের RAM 2GB । তাহলে এতে কতগুলো ড্যাটা বা নির্দেশনা রাখা যাবে? তোমার জন্য একটু সহজ করে দেই-একটু আগেই জানলে প্রতি এক বাইটে একটি ড্যাটা বা নির্দেশনা রাখা যায়।

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