কম্পিউটারের জগত আর আমাদের জগতের মূল পার্থক্য এখানেই যে, আমরা যোগ-বিয়োগ করি ১০-এর ভিত্তিতে। আর কম্পিউটার কি না তা করে ২-এর ভিত্তিতে। আমাদের হাতে আছে ১০ টি অংক-০ থেকে ৯। সেখানে কম্পিউটারের হাতে আছে মাত্র দুইটি-০ এবং ১! এই ০ এবং ১-এর জোরেই কি না সে এত কঠিন কঠিন সমস্যা সমাধান করে বসে আছে! আজ আমরা ঘুরে বেড়াবো এই ০ এবং ১-এর জগতে।
আমরা যাকে অংক বলি, ইংরেজিতে যা ডিজিট, কম্পিউটারের ভাষায় তা হল বীট। একটি বীটকে আমরা এভাবে কল্পনা করতে পারি, যেটা হয় ০ হবে, নাহয় ১। ১ বলতে বুঝায় true, আর ০ বলতে বুঝায় false। আরও সহজ ভাষায় ১ মানে আছে, ০ মানে নাই। এই ০ এবং ১-এর যাবতীয় সমস্যা নিয়ে গণিতের যে শাখা কাজ করে, তার নাম হল বুলিয়ান এলজেবরা। এই ধারণা প্রথম উঠে আসে জর্জ বুলের The Mathematical Analysis of Logic(1847) বইতে। বুলিয়ান এলজেবরার উপর ভিত্তি করেই গড়ে উঠেছে ডিজিটাল ইলেকট্রনিক্স। সেই সাথে সেট থিওরি কিংবা পরিসংখ্যানেও রয়েছে এর অবদান।
এখন প্রশ্ন হলো এই ০ এবং ১ নিয়ে আমরা কী এমন করতে পারি? আমরা আমাদের দশমিক সংখ্যাগুলোর যোগ, বিয়োগ, গুণ, ভাগ করি। একইভাবে এই ০ এবং ১-এ আমরা মূলত তিন ধরণের অপারেশন ব্যবহার করে থাকি।
তার প্রথমটি হল নেগেশন, যার অন্য নাম NOT। এটির কাজ খুবই সহজ। এটি একটি ইউনারি অপারেটর, যার মানে কি না এটি একটি বীটের উপর কাজ করে। একে যে বীটটি দেওয়া হয়, এটি সে বীটটিকে উল্টে দেয়। অর্থাৎ, 1-কে NOT করলে হয় 0, 0-কে NOT করলে হয় 1. NOT অপারেটরটিকে প্রকাশ করা হয় ¬ দিয়ে। অর্থাৎ, ¬(true) = false
অপর দুটি অপারেটর বাইনারি। অর্থাৎ তারা দু’টি বীট নিয়ে কাজ করে। তাদের একটি হল কনজাংশন। নাম যতটাই কঠিন মনে হোক না কেন, এর কাজ বড়ই সহজ। এটি true (1) হবে যদি এবং কেবল যদি, দু’টি বীটই true হয়। অন্য সকল ক্ষেত্রেই এটি হবে false (0). কনজাংশনের আরেকটি নাম আছে, তা হল AND, এবং এটি প্রকাশ করা হয় ^ দিয়ে। এখন দেখা যাক, দুইটি বীট থেকে আমরা কতভাবে কনজাংশন বের করতে পারি। তার আগে আমাদের জানা দরকার, দুইটি বিটের কত ধরণের সমাবেশ (combination) আমরা করতে পারি। উত্তরটি খুবই সহজ, এদের প্রতিটিই ০ এবং ১-এর মধ্যে যেকোনো একটি নিতে পারবে। তাহলে মোট সমাবেশ সংখ্যা হবে 2*2 = 4। এখন আমরা এই সকল সম্ভাব্য সমাবেশের জন্য কনজাংশন বের করে ফেলি।
A | B | A^B (A AND B) |
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
অর্থাৎ, আমরা শুধু এক ক্ষেত্রেই 1 (true) পাবো, এবং তা হল, যখন দুইটি বীটই true হবে। এবার বল তো, তিনটি বীট থাকলে তখন কী হবে? উত্তরটা থাকছে লেখার শেষে!
আর অন্য অপারেটরটি হল ডিসজাংশন। ডিসজাংশনের অন্য নাম হল OR, এবং একে প্রকাশ করা হয় v দিয়ে। এটিও দুটি বীটের উপর কাজ করে। এই বীটগুলোর যেকোনো একটি true হলেই তাদের ডিসজাংশনও true হবে। তো আমরা দেখে নিই দুইটি বীটের সকল সম্ভাব্য সমাবেশের ডিসজাংশন।
A | B | A v B (A OR B) |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
খেয়াল রাখবে, বীটগুলোর যেকোনো একটি true হলেই ডিসজাংশন true হয়ে যাবে।
এই তিনটি অপারেশনকে বলা হয় বুলিয়ান এলজেবরার প্রাথমিক অপারেশন। এগুলোর সমন্বয়ে আরও কিছু সেকেন্ডারি অপারেশন রয়েছে। আমরা জানি, দুইটি বীটের সম্ভাব্য সমাবেশ রয়েছে চার ধরণের। আবার এই চার ধরণের সমাবেশের প্রতিটির জন্যই কোনো একটি বাইনারি অপারেশনের উত্তর আসতে পারে দুই ধরণের, ০ এবং ১।
A | B | A (Some Binary Operation) B |
0 | 0 | 0 or 1 |
0 | 1 | 0 or 1 |
1 | 0 | 0 or 1 |
1 | 1 | 0 or 1 |
তাহলে মোট বাইনারি অপারেটর বানানো সম্ভব – 222*2 = 16 টি। আমরা এর কয়েকটি নিয়ে নিচে কথা বলবো।
(১) x → y, অথবা Cxy, একে বলা হয় ম্যাটারিয়াল ইমপ্লিকেশন। এটি একটি প্রশ্নের মত – x সত্য হুলে y সত্য কি না?
- যদি x-এর মান true হয়, তাহলে x→y-এর মান হবে y-এর মান। অর্থাৎ এক্ষেত্রে y true হলে x->y true হবে, y false হলে x->y false হবে।
- আবার x-এর মান যদি false হয়, তাহলে x→y -এর মান y-এর উপর নির্ভর করে না। এক্ষেত্রে x→y-এর মান সব সময় true হবে। কারণ x তো সত্যি না, তাহলে x সত্য হলে y সত্য কথাটি সত্য!
(২) Exclusive-OR: এটি অনেকটা ডিসজাংশনের মতই। পার্থক্য হল, এতে বীটগুলোর যেকোনো একটি true হলে তখনই এটি true হবে। অন্যথায় false. অর্থাৎ, সবগুলো বীট একইসাথে true হলে এটি false হয়ে যাবে, ডিসজাংশনের ক্ষেত্রে যেটি হত true. এই অপারেশনটি যোগের ক্ষেত্রে খুবই গুরুতপূর্ণ।
A | B | A EX-OR B |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
(৩) বুলিয়ান সাম্যতাঃ x ≡ y। এটি true হবে যদি x এবং y-এর মান একই হয়।
A | B | A ≡ B |
0 | 0 | 1 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
খেয়াল করে দেখো, এটি exclusive-OR-এর ঠিক উল্টো! এজন্য এর অন্য নাম হল EX-NOR। একইভাবে AND, OR-এর ঠিক উল্টো কাজ যারা করে, তাদের নাম হল NAND এবং NOR. এবার নিচের টেবিলটি পূরণ করে ফেলো তো!
A | B | C | AND | OR | EX-OR | NAND | NOR | EX-NOR |
0 | 0 | 0 | ||||||
0 | 0 | 1 | ||||||
0 | 1 | 0 | ||||||
0 | 1 | 1 | ||||||
1 | 0 | 0 | ||||||
1 | 0 | 1 | ||||||
1 | 1 | 0 | ||||||
1 | 1 | 1 |
আজ এটুকুই। পরবর্তী পর্বে আমরা বুলিয়ান এলজেব্রার কিছু সূত্র দেখবো এবং এটি আমাদের কী কাজে লাগবে তা নিয়ে আলোচনা করবো।