दोन कॉम्प्युटर एकमेकांशी कसे 'बोलतात'? (अच्युत गोडबोले)

achyut godbole
achyut godbole

आपण आकडे "ऍस्की' किंवा "एबसिडीक' पद्धतीनं मांडले, तर त्यांच्यातल्या गणिताचे नियम आपल्याला सहजपणे ठरवता येत नाहीत; आणि त्यामुळे त्या नियमांचा वापर करून इलेक्‍ट्रॉनिक सर्किट्‌सही बनवता येत नाहीत. म्हणून ही गणितं करण्यासाठी बायनरी पद्धतीचा वापर करतात. म्हणजे जिथं आकड्यांचा वापर मजकूर किंवा टेक्‍स्ट म्हणून केलेला असतो, तेव्हा "ऍस्की' किंवा "एबसिडीक'च वापरतात; पण जेव्हा आकडेमोड करायची असते तेव्हा ते आकडे बायनरी स्वरूपातच मांडावे लागतात. याचं कारण आपण बायनरी स्वरूपात मांडलेल्या आकड्यांच्या गणिताचे नियम लिहू शकतो; आणि त्यांच्यावर आधारित इलेक्‍ट्रॉनिक सर्किट्‌स डिझाईन करून कॉम्प्युटरमध्ये वापरू शकतो.

"डिजिटल' जगात सगळी माहिती 0 आणि 1 च्या कोड-भाषेत साठवली जाते; पण माणूस म्हटलं की मतभेद आलेच. या कोड भाषेतही "ऍस्की' आणि "एबसिडीक' अशा दोन पद्धती निघाल्या. काही कॉम्प्युटर्स एक वापरतात तर काही दुसरी. 010000001 याचा अर्थ एका पध्दतीत "A" असेल, तर दुसऱ्यामध्ये भलताच काही असेल. म्हणजे दोन कॉम्प्युटर्समध्ये सुसंवाद साधणं दोन माणसांइतकंच कठीण! त्यातून गोंधळ म्हणजे जर काही आकडेमोड करायची असेल, तर "बायनरी' ही आणखीनच वेगळी पद्धत वापरावी लागते. याचं कारण त्यासाठी "ऍस्की' किंवा "एबसिडीक' या पद्धती वापरता येत नाहीत. उदाहरणार्थ, "ऍस्की' पद्धतीप्रमाणं 2 म्हणजे 00110010, 3 म्हणजे 00110011 आणि 5 म्हणजे 00110101. आता यामध्ये 2 + 3 म्हणजे 5 यायला पाहिजेत; पण तसं होत नाही.

थोडक्‍यात जर आपण हे आकडे "ऍस्की' किंवा "एबसिडीक' पद्धतीनं मांडले, तर त्यांच्यातल्या गणिताचे नियम आपल्याला सहजपणे ठरवता येत नाहीत; आणि त्यामुळे त्या नियमांचा वापर करून इलेक्‍ट्रॉनिक सर्किट्‌सही बनवता येत नाहीत. म्हणून ही गणितं करण्यासाठी बायनरी पद्धतीचा वापर करतात. म्हणजे जिथं आकड्यांचा वापर मजकूर किंवा टेक्‍स्ट म्हणून केलेला असतो (उदाहरणार्थ, हे ठिकाण माझ्या घरापासून 10 किलोमीटरवर आहे) तेव्हा "ऍस्की' किंवा "एबसिडीक'च वापरतात; पण जेव्हा आकडेमोड करायची असते तेव्हा ते आकडे बायनरी स्वरूपातच मांडावे लागतात. याचं कारण आपण बायनरी स्वरूपात मांडलेल्या आकड्यांच्या गणिताचे नियम लिहू शकतो; आणि त्यांच्यावर आधारित इलेक्‍ट्रॉनिक सर्किट्‌स डिझाईन करून कॉम्प्युटरमध्ये वापरू शकतो.

पण ही बायनरी पद्धती आहे तरी काय? आणि त्यांच्यातल्या गणिताचे नियम काय आहेत? आपण दशमान (डेसिमल) पद्धतीचा विचार केला, तर आपल्या लक्षात येईल, की कुठलाही आकडा आपण जेव्हा लिहितो (उदाहरणार्थ, 5674 ), तेव्हा आपण (1000 X5 ) + (100 X6 ) X (10 X7 )+ (1 X 4 ) असं म्हणत असतो. यातल्या 1, 10, 100, 1000 ...........यांना "पोझिशनल कॉन्स्टंट्‌स' म्हणतात. आणि दरवेळी पूर्वीच्या पोझिशनल कॉन्स्टंटला 10 नं गुणून त्यापुढचा पोझिशनल कॉन्स्टंट मिळतो. याचं कारण ही डेसिमल पद्धत आहे. दशमान पद्धतीत आपण 0 ते 9 एवढेच अंक वापरू शकतो. त्यापेक्षा जास्त झाले, की आपल्याला दोन अंक वापरावे लागतात. उदाहरणार्थ 10, 11 वगैरे. यातला पहिला 1 म्हणजे किती दहा आहेत ते दाखवतो. म्हणूनच 11 म्हणजे 10 + 1 असं आपण मानतो.

पण जसे डेसिमल पद्धतीत 0 ते 9 असे 10 च अंक असतात, तसे बायनरी पद्धतीत फक्त दोनच अंक असतात ः 0 आणि 1. आणि पोझिशनल कॉन्स्टंट्‌सही त्यामुळे 1, 2, 4, 8, 16, 32, 64 असे असतात. दर वेळी मागच्याला 2 नं गुणलं, की पुढचा पोझिशनल कॉन्स्टंट मिळतो. आता कुठलाही बायनरी आकडा डेसिमलमध्ये रूपांतरीत करता येतो. उदाहरणार्थ 010110 म्हणजे (32 X0 ) + (16 X 1) X (8 X 0)+ (4 X1 ) + (2 X 1) + (1 X 0) म्हणजेच 0+ 16 + 0 + 4 + 2 + 0 = 22. अशा तऱ्हेनं आपण कुठलाही बायनरी आकडाही डेसिमलमध्ये रूपांतरीत करू शकतो. त्याचप्रमाणं आपल्याला कुठलीही डेसिमल संख्याही बायनरीमध्ये रूपांतरीत करता येते.
उदाहरणार्थ, डेसिमल पद्धतीतले 0, 1, 2, 3, 4, 5, 6 आणि 7 हे आकडे बायनरी पद्धतीत 000, 001, 010, 011, 100, 101, 110 आणि 111 असे मांडता येतात. पण आपण जेव्हा एखादा आकडा 0 आणि 1 अशा स्वरूपात लिहितो, तेव्हा तो दशमान, बायनरी, "ऍस्की' किंवा "एबसिडीक' यापैकी कुठली पद्धत वापरून लिहिला आहे हे स्पष्टपणे लिहावं लागतं. नाहीतर खूप गोंधळ होण्याची शक्‍यता असते. उदाहरणार्थ, 101 हा अकडा दशमान पद्धतीत नेहमी आपण "एकशेएक' समजत असलो, तरी बायनरीमध्ये त्याचा अर्थ (4 X 1) + (2 X 0) + (1 X 1) = "पाच' असाच आहे. कोणी म्हणालं की, मी तुला बायनरी 10010001 एवढा महिन्याला देतो, तर तुमच्या हातात कोटी वगैरे रुपये न पडता दरमहा फक्त (128 X 1) + (64 X 0) + (32 X 0) + (16 X 1) + (8 X 0) + (4 X 0) + (2 X 0) + (1 X 1) = एकशेपंचेचाळीस रुपये पडतील!
आता या बायनरी आकड्यात गणितं कशी करायची? बायनरीमध्ये 2 म्हणजे 010, 3 म्हणजे 011 आणि 5 म्हणजे 101. आपल्याला माहीत आहे, की 2 + 3 म्हणजे बायनरी पद्धतीत 010 + 001 म्हणजे 101 व्हायला पाहिजेत. (दशमान पद्धतीत 010 + 011 हीच बेरीज एकवीस होईल!) म्हणजे बायनरी गणितासाठी या अर्थी वेगळे नियम पाहिजेत. वरचं उदाहरण पुन्हा तपासूया.
010
+ 011
हातचा 1
बेरीज 101
म्हणजे बायनरी पद्धतीच्या बेरजेत 0 + 1 = 1 तसंच 1 + 1 = 10, म्हणजेच 1 + 1 =0 आणि हातचा 1 (जसे दशमान पद्धतीत 9 + 5 = 14 म्हणजेच 9 + 5 = 4 आणि हातचा 1.) बायनरी पद्धतीत 0 आणि 1 हे दोनच अंक असल्यानं हा हातच्याचा गोंधळ! तसंच या उदाहरणात वापरलेले नाहीत; पण इतरही दोन नियम बायनरी गणितात मोडतात. ते म्हणजे 1+ 0 = 1 आणि 0 + 0 = 0. म्हणजेच बायनरी गणितातले हे चार नियम असे आहेत : 0 + 0 = 0, 0 + 1= 1 तसंच 1 + 0 = 1 आणि 1 + 1= 0 आणि हातचा 1.
बायनरी अंकांची वजाबाकी करताना ती बेरजेतच रूपांतरीत करून मग ती साध्य करतात.
हा उपद्‌व्याप करण्याचं कारण म्हणजे बायनरी संख्यांची बेरीज करण्यासाठी आपल्याकडे ऍडर सर्किट असतं. आता वजाबाकीचं बेरजेत रूपांतर केल्यामुळं वजाबाकीसाठीही ऍडर सर्किट वापरता येतं. यानंतर फक्त गुणाकार आणि भागाकार राहतात; पण गुणाकार म्हणजे एकापाठोपाठ एक केलेल्या बेरजा आणि भागाकार म्हणजे एकापाठोपाठ केलेल्या वजाबाक्‍या असं आपण साधारणपणे मानलं, तर त्यांच्यासाठीही सर्किट्‌स बनवता येतात.

याच पद्धतीचा वापर करून क्‍लॉड शॅनन या एमआयटीमध्ये शिकत असलेल्या प्रचंड हुशार विद्यार्थ्यानं बायनरी गणिताचा पाया घातला. एवढंच नव्हे, तर ती गणितं हार्डवेअरनं सोडविण्यासाठी स्विचेस आणि रीलेज यांचा वापर करून "ऍडर'सारखी सर्किट्‌ससुद्धा तयार केली. अशीच ऍडरसारखी सर्किट्‌स आपण वापरतो त्या कॅल्क्‍युलेटरमध्येही असतात. आपण कॅल्क्‍युलेटरवरच्या कीपॅडवरचे आपल्याला समजतील असे दशमान पद्धतीतले आकडे दाबले, की आतमध्ये त्यांचं बायनरी अंकांमध्ये रूपांतर होतं. (उदाहरणार्थ, 5 = 101, 7 = 111 वगैरे.) त्यानंतर कॅल्क्‍युलेटरमधली पाहिजे ती सर्किट्‌स (उदा. बेरजेसाठी ऍडर) वापरून त्यांची बायनरीच्या गणिताच्या नियमानुसार बायनरीमध्ये उत्तरं तयार होतात. पुन्हा ते उत्तर आपल्याला कळावं म्हणून या बायनरी अंकांचं दशमान पद्धतीत रूपांतर करून ते कॅल्क्‍युलेटर आपल्याला त्याच्या स्क्रीनवर दाखवतं. म्हणूनच बाहेर आपण 2 + 3 केलं, की कॅलक्‍युलेटरवर 5 हा आकडा दिसतो. पण आतमध्ये 010 +011=101 असंच गणित सोडवलं जातं. अशा अनेक सर्किटस्‌चा मिळून मग कॉम्प्युटरचा मेंदू म्हणजेच सेंट्रल प्रोसेसिंग युनिट (CPU) मधलं ऍरिथमेटिक अँड लॉजिकल युनिट (ALU) बनलेलं असतं. इथं सगळी आकडेमोड होते. इनिऍकपासून आतापर्यंतचे बहुतांशी कॉम्प्युटर्स याच कल्पनेवर आधारलेले आहेत.

आपला संबंध फक्त कीबोर्ड, प्रिंटर किंवा स्क्रीन यांच्याशी येतो. तिथं A, t, 8 किंवा ! अशी आपल्याला कळतील अशीच चिन्हं आपण वापरतो. त्यामुळे कॉम्प्युटरच्या आतमध्ये सगळा कारभार 0 आणि 1 च्या स्वरूपात चालेला असला तरी तो छापताना, स्क्रीनवर दाखवताना किंवा कीबोर्डवर टाईप करताना आपण आपल्याला कळतील अशाच चिन्हांमध्ये व्यवहार करतो. या चिन्हांचं 0 आणि 1 मध्ये रूपांतर करणं आणि पुन्हा आपल्याला दाखवताना 0 आणि 1 यांचं आपल्याला कळतील अशा चिन्हांमध्ये रूपांतर करणं हे सगळं कॉम्प्युटर आपल्या नकळत आतल्या आत करत असतो.
म्हणजे, आता डिस्क, मेमरी आणि सीपीयू असे कॉम्प्युटरचे भाग झाले. माहिती सारखी या सगळ्यांमधून इकडून तिकडे 0 आणि 1 च्या कोड-भाषेत बिट्‌समध्ये जात असते. एखादं अक्षर एका ठिकाणाहून दुसरीकडे पाठवायचं झालं, की त्या दुसऱ्या ठिकाणचेही आठ बिट्‌स या पहिल्या ठिकाणासारखेच ऑफ (0) किंवा ऑन (1) केले जातात. यासाठीच कॉम्प्युटरचे हे सगळे भाग तारांनी जोडलेले असतात, त्यांना "बस' असं म्हणतात.

सगळी माहिती महाग आणि मर्यादित क्षमतेच्या मेमरीत साठवता येत नसल्यानं आपण डिस्कवर ठेवतो; पण प्रत्यक्ष वापरताना पुन्हा ती मेमरीत आणावी लागते. त्यातून त्यावर आकडेमोड करायची झाली, तर ती मेमरीतून सीपीयूत न्यावी लागते. कारण सीपीयूमध्येच गणितं करण्यासाठी ऍडरसारखी अनेक सर्किटस्‌ असतात. समजा, एका कंपनीमध्ये 1000 कर्मचारी आहेत. असंही समजा, की प्रत्येक कर्मचाऱ्यासाठी त्याचं नाव, पत्ता, मूळ पगार, जन्मतारीख, हुद्दा, खातं वगैरे माहितीचं रेकॉर्ड डिस्कवर ठेवलंय. या कंपनीची पगार पत्रिका तयार करायची असेल, तर यातलं प्रत्येक कर्मचाऱ्याचं रेकॉर्ड एकापाठोपाठ एक मेमरीत वाचावं लागेल. एक रेकॉर्ड वाचलं, की मग त्यातला "मूळ पगार' हा मेमरीतून सीपीयूकडे आकडेमोडीसाठी बसच्या मार्गे पाठवावा लागेल. तिथं त्यावर पाहिजे ती आकडेमोड करण्यात येईल. (उदाहरणार्थ, मूळ पगार X 10% = प्रॉव्हिडंड फंड किंवा मूळ पगार X 30% = हाऊस रेंट अलाऊन्स वगैरे). यानंतर ही आकडेमोडीची उत्तरं पुन्हा मेमरीत बसनं उलटी पाठवण्यात येतील. आता मेमरीतल्या नाव, पत्ता, मूळ पगार, जन्मतारीख, हुद्दा, खातं, प्रॉव्हिडंड फंड, हाऊस रेंट अलाऊन्स वगैरे माहिती प्रिंटरकडे वेगळ्या बसच्या मार्गे पाठवून पगारपत्रिका छापता येईल. मग दुसऱ्या कर्मचाऱ्यासाठी हीच प्रक्रिया पुन्हा करावी लागेल. यासाठी "कोबॉल' आणि "सी'सारख्या कॉम्प्युटरच्या प्रत्येक भाषेत अशा सूचनांचा संच असतो. याच सूचना पाहिजेत तशा एकाखाली एक लिहून मग प्रोग्रॅम्स लिहिता येतात.

Read latest Marathi news, Watch Live Streaming on Esakal and Maharashtra News. Breaking news from India, Pune, Mumbai. Get the Politics, Entertainment, Sports, Lifestyle, Jobs, and Education updates. And Live taja batmya on Esakal Mobile App. Download the Esakal Marathi news Channel app for Android and IOS.

Related Stories

No stories found.
Esakal Marathi News
www.esakal.com