कंप्यूटर एक डिजिटल मशीन है जो केवल दो अवस्थाओं - चालू (1) और बंद (0) - को समझती है। इन दो अंकों पर आधारित संख्या प्रणाली को बाइनरी संख्या प्रणाली (Binary Number System) कहते हैं। हमारे लिए मनुष्यों के लिए संख्याओं, अक्षरों, चित्रों और ध्वनि को बाइनरी (0 और 1) में परिवर्तित करने की प्रक्रिया को डेटा प्रतिनिधित्व (Data Representation) कहा जाता है। इस अध्याय में हम संख्या प्रणाली के प्रकार, संख्या रूपांतरण, बाइनरी अंकगणित, ASCII कोड तथा विभिन्न कोडिंग पद्धतियों का अध्ययन करेंगे।
संख्या प्रणाली वह विधि है जिसके द्वारा संख्याओं को व्यक्त किया जाता है। किसी भी संख्या प्रणाली में चार महत्वपूर्ण अवधारणाएँ होती हैं: आधार (Base/Radix), अंक (Digits), स्थानीय मान (Place Value) और दशमलव बिंदु। मुख्य संख्या प्रणालियाँ चार हैं:
किसी संख्या प्रणाली का आधार ही उसकी पहचान है। उदाहरण के लिए, बाइनरी संख्या 101 को $(101)2$ तथा दशमलव संख्या 101 को $(101)$ लिखा जाता है।
किसी भी संख्या का मान उसके अंकों और उनके स्थानीय मान पर निर्भर करता है। किसी अंक का स्थानीय मान = अंक × (आधार)^(स्थिति का घातांक)। सबसे दाईं ओर का स्थान घातांक 0 से शुरू होता है। उदाहरण के लिए, $(1A5){16}$ में: $$1 \times 16^2 + A(10) \times 16^1 + 5 \times 16^0 = 256 + 160 + 5 = (421)$$
प्रत्येक अंक को उसके स्थानीय मान के साथ गुणा करके जोड़ दिया जाता है। उदाहरण: $$(1101)2 = 1 \times 2^3 + 1 \times 2^2 + 0 \times 2^1 + 1 \times 2^0 = 8 + 4 + 0 + 1 = (13)$$ $$(47)8 = 4 \times 8^1 + 7 \times 8^0 = 32 + 7 = (39)$$
दशमलव संख्या को 2 से बार-बार भाग देते हैं और शेषफल (Remainder) को लिखते जाते हैं। शेषफलों को अंतिम भागफल से आरंभ करके उल्टे क्रम में पढ़ा जाता है। उदाहरण के लिए, $(13){10}$ को बाइनरी में बदलने पर: - 13 ÷ 2 = 6, शेष 1 - 6 ÷ 2 = 3, शेष 0 - 3 ÷ 2 = 1, शेष 1 - 1 ÷ 2 = 0, शेष 1 अतः $(13) = (1101)_2$।
दशमलव बिंदु के बाद के भाग को आधार (2 या 8 या 16) से गुणा किया जाता है और प्राप्त पूर्णांक को लिखते जाते हैं। उदाहरण: $(0.625){10}$ को बाइनरी में: - 0.625 × 2 = 1.25 → पूर्णांक 1 - 0.25 × 2 = 0.5 → पूर्णांक 0 - 0.5 × 2 = 1.0 → पूर्णांक 1 अतः $(0.625) = (0.101)_2$।
बाइनरी अंकों को दाईं ओर से बाएँ क्रम में 3-3 (ऑक्टल के लिए) या 4-4 (हेक्साडेसिमल के लिए) के समूहों में बाँटा जाता है और प्रत्येक समूह को उसके समकक्ष मान में बदला जाता है। उदाहरण: $(110101)2$ को ऑक्टल में: 110 101 → 6 5 = $(65)_8$। $(110101)_2$ को हेक्साडेसिमल में: 0011 0101 → 3 5 = $(35)$।
बाइनरी जोड़ के नियम: - 0 + 0 = 0 - 0 + 1 = 1 - 1 + 0 = 1 - 1 + 1 = 0, कैरी 1 - 1 + 1 + 1 = 1, कैरी 1
उदाहरण: $(1011)_2 + (101)_2$ को जोड़ने पर हमें $(10000)_2$ प्राप्त होता है।
बाइनरी घटाव के नियम: - 0 - 0 = 0 - 1 - 0 = 1 - 1 - 1 = 0 - 0 - 1 = 1, बॉरो (Borrow) 1
बाइनरी गुणा दशमलव गुणा के समान है, बस यहाँ केवल 0 और 1 का उपयोग होता है। किसी बाइनरी संख्या को 2 से गुणा करने का सरल तरीका उसके अंत में एक 0 जोड़ देना है, और 2 से भाग करने के लिए अंतिम अंक हटा देना है।
n बिट में हम $2^n$ भिन्न मान प्रदर्शित कर सकते हैं। उदाहरण के लिए, 4 बिट में $2^4 = 16$ मान (0 से 15 तक) प्रदर्शित हो सकते हैं। यही कारण है कि एक बाइट (8 बिट) में $2^8 = 256$ भिन्न मान प्रदर्शित होते हैं।
कंप्यूटर में अक्षरों, अंकों और विशेष प्रतीकों को बाइनरी रूप में प्रदर्शित करने के लिए कोडिंग पद्धतियों का उपयोग होता है।
यह सबसे प्रचलित कोडिंग पद्धति है। मानक ASCII 7 बिट का उपयोग करती है, जिससे 128 ($2^7$) वर्ण प्रदर्शित होते हैं। बाद में विस्तारित ASCII (Extended ASCII) 8 बिट (256 वर्ण) का उपयोग करती है। कुछ महत्वपूर्ण मान: - 'A' = 65, 'B' = 66, 'C' = 67 ... (बड़े अक्षर) - 'a' = 97, 'b' = 98 ... (छोटे अक्षर) - '0' = 48, '1' = 49 ... (अंक) - स्पेस = 32
भारतीय भाषाओं (हिंदी, बांग्ला, गुजराती आदि) के वर्णों के लिए बनाई गई 8-बिट कोडिंग पद्धति। यह भारतीय मानक ब्यूरो (BIS) द्वारा विकसित की गई थी।
यूनिकोड एक अंतर्राष्ट्रीय मानक है जो विश्व की सभी भाषाओं के वर्णों को अद्वितीय संख्याएँ प्रदान करता है। यह 8 बिट, 16 बिट या 32 बिट में हो सकता है। UTF-8, UTF-16 और UTF-32 इसके प्रचलित रूप हैं। यूनिकोड ASCII और ISCII दोनों का विस्तार है और इसमें सभी वर्णों का प्रतिनिधित्व संभव है।
कंप्यूटर में वास्तविक डेटा (जैसे तापमान 27.5, लोगों की संख्या 1500) को संग्रहीत करने के लिए निश्चित संख्या में बिट आवंटित किए जाते हैं। पूर्णांकों (Integers) को सामान्यतः 16, 32 या 64 बिट में तथा वास्तविक संख्याओं को वैज्ञानिक संकेतन (Mantissa और Exponent) के रूप में संग्रहीत किया जाता है। ऋणात्मक संख्याओं के लिए सामान्यतः 2 का पूरक (2's Complement) विधि का उपयोग होता है, जो घटाव को जोड़ में बदल देती है।
किसी बाइनरी संख्या का 1 का पूरक प्राप्त करने के लिए सभी बिट उलट दिए जाते हैं (0 को 1 और 1 को 0)। फिर परिणाम में 1 जोड़ने पर 2 का पूरक प्राप्त होता है। उदाहरण: $(0110)_2$ का 1 का पूरक $(1001)_2$ है और 2 का पूरक $(1010)_2$ है। 2 के पूरक का सबसे बड़ा लाभ यह है कि घटाव को जोड़ के रूप में निष्पादित किया जा सकता है।
पाइथन में हम संख्याओं को विभिन्न प्रणालियों में आसानी से प्रदर्शित और रूपांतरित कर सकते हैं:
# दशमलव संख्या को बाइनरी में बदलना
print(bin(13)) # 0b1101
print(oct(39)) # 0o47
print(hex(421)) # 0x1a5
# बाइनरी को दशमलव में बदलना
print(int("1101", 2)) # 13
print(int("47", 8)) # 39
print(int("1a5", 16)) # 421
# वर्ण को ASCII मान में बदलना
print(ord("A")) # 65
print(chr(97)) # 'a'
| संख्या प्रणाली | आधार | प्रयुक्त अंक | उदाहरण |
|---|---|---|---|
| दशमलव (Decimal) | 10 | 0-9 | 142 |
| बाइनरी (Binary) | 2 | 0, 1 | 1011 |
| ऑक्टल (Octal) | 8 | 0-7 | 217 |
| हेक्साडेसिमल (Hexadecimal) | 16 | 0-9, A-F | 8F2 |
| वर्ण | ASCII दशमलव | बाइनरी |
|---|---|---|
| 0 | 48 | 0110000 |
| A | 65 | 1000001 |
| Z | 90 | 1011010 |
| a | 97 | 1100001 |
| z | 122 | 1111010 |
| पद्धति | बिट | उपयोग |
|---|---|---|
| मानक ASCII | 7 बिट | 128 वर्ण |
| विस्तारित ASCII | 8 बिट | 256 वर्ण |
| ISCII | 8 बिट | भारतीय भाषाएँ |
| यूनिकोड (UTF-8) | 8-32 बिट | सभी विश्व भाषाएँ |
डेटा प्रतिनिधित्व कंप्यूटर विज्ञान की वह मूलभूत इकाई है जिसके द्वारा यह समझा जा सकता है कि कंप्यूटर केवल 0 और 1 के संयोजन से ही सभी सूचनाओं को संग्रहीत और प्रदर्शित करता है। संख्या प्रणालियों के रूपांतरण, बाइनरी अंकगणित तथा ASCII, ISCII और यूनिकोड जैसी कोडिंग पद्धतियों की समझ विद्यार्थी को कंप्यूटर की आंतरिक कार्यप्रणाली से परिचित कराती है। यह अध्याय बूलियन लॉजिक और प्रोग्रामिंग की नींव रखता है, क्योंकि प्रोग्राम में उपयोग होने वाला प्रत्येक डेटा अंततः बाइनरी रूप में ही संग्रहीत होता है।