BCD और Gray Code
विशेष बाइनरी एन्कोडिंग
विशेष कोड सीखेंसभी बाइनरी प्रतिनिधित्व शुद्ध base-2 नहीं होते। BCD (Binary-Coded Decimal) और Gray code विशेष एन्कोडिंग हैं जो डिजिटल सिस्टम में विशिष्ट समस्याओं को हल करती हैं—कैलकुलेटर पर नंबर दिखाने से लेकर बिना त्रुटि के रोटरी एन्कोडर पढ़ने तक।
Binary-Coded Decimal (BCD)
BCD क्या है?
BCD प्रत्येक दशमलव अंक को 4-बिट बाइनरी संख्या के रूप में दर्शाता है:
| Decimal | BCD | Pure Binary |
|---|---|---|
| 0 | 0000 | 0000 |
| 5 | 0101 | 0101 |
| 9 | 1001 | 1001 |
| 10 | 0001 0000 | 1010 |
| 42 | 0100 0010 | 101010 |
| 99 | 1001 1001 | 1100011 |
मुख्य अंतर
BCD प्रति दशमलव अंक 4 बिट का उपयोग करता है; शुद्ध बाइनरी अधिक संक्षिप्त है लेकिन प्रदर्शित करना कठिन है।
BCD का उपयोग क्यों करें?
आसान दशमलव प्रदर्शन
- प्रत्येक 4-बिट समूह → 7-सेगमेंट डिस्प्ले पर एक अंक
- जटिल बाइनरी-से-दशमलव रूपांतरण की आवश्यकता नहीं
- कैलकुलेटर और मीटर इसका उपयोग करते हैं
सटीक दशमलव मान
- वित्तीय गणनाओं में सटीक दशमलव की आवश्यकता होती है
- 0.10 BCD में सटीक है, बाइनरी floating-point में अनुमानित
- मुद्रा में गोलाई त्रुटियों से बचाता है
मानव-पठनीय भंडारण
- टाइमस्टैम्प अक्सर BCD में संग्रहीत होते हैं
- Hex dump में पढ़ना आसान
- BIOS real-time clock BCD का उपयोग करते हैं
BCD अंकगणित
जोड़ की चुनौती
BCD जोड़ में समायोजन की आवश्यकता होती है जब परिणाम > 9 हो:
- 0101 + 0100 = 1001 (5 + 4 = 9) ✓ मान्य BCD
- 0111 + 0101 = 1100 (7 + 5 = 12) ✗ अमान्य BCD
- सही करने के लिए 6 (0110) जोड़ना होगा: 1100 + 0110 = 0001 0010 = 12
6 क्यों जोड़ें?
BCD केवल 0000-1001 (0-9) मानों का उपयोग करता है। 1010-1111 (10-15) मान अमान्य हैं। 6 जोड़ने से अगले अंक में कैरी होता है।
BCD के प्रकार
Packed BCD
- प्रति बाइट दो अंक
- अधिक कुशल भंडारण
- उदाहरण: 42 = 0100 0010 एक बाइट में
Unpacked BCD
- प्रति बाइट एक अंक (ऊपरी 4 बिट अप्रयुक्त/शून्य)
- आसान प्रसंस्करण
- उदाहरण: 42 = 00000100 00000010 (दो बाइट)
Excess-3 BCD
- एन्कोडिंग से पहले प्रत्येक अंक में 3 जोड़ें
- कुछ अंकगणित सर्किट को सरल बनाता है
- 0 = 0011, 9 = 1100
Gray Code
Gray Code क्या है?
Gray code एक बाइनरी अनुक्रम है जहां लगातार मानों के बीच केवल एक बिट बदलता है:
| Decimal | Binary | Gray Code |
|---|---|---|
| 0 | 0000 | 0000 |
| 1 | 0001 | 0001 |
| 2 | 0010 | 0011 |
| 3 | 0011 | 0010 |
| 4 | 0100 | 0110 |
| 5 | 0101 | 0111 |
| 6 | 0110 | 0101 |
| 7 | 0111 | 0100 |
Gray Code क्यों महत्वपूर्ण है
Gray Code जो समस्या हल करता है
सामान्य बाइनरी में, 7 (0111) से 8 (1000) पर जाने पर 4 बिट एक साथ बदलते हैं।
- अगर सेंसर ठीक उसी समय स्विच नहीं करते
- क्षणिक गलत रीडिंग होती है
- संक्षेप में 0000, 0001, 0011, 0111, या 1111 पढ़ सकता है
Gray Code समाधान
- एक समय में केवल एक बिट बदलता है
- कोई अस्पष्ट मध्यवर्ती अवस्था नहीं
- पोजिशन एन्कोडर के लिए आवश्यक
Gray Code अनुप्रयोग
रोटरी एन्कोडर
- मोटर पोजिशन सेंसिंग
- वॉल्यूम नॉब (डिजिटल)
- रोबोटिक्स जॉइंट एंगल
- CNC मशीन पोजिशनिंग
त्रुटि न्यूनीकरण
- Analog-to-digital रूपांतरण
- Genetic algorithm (crossover)
- Karnaugh map (लॉजिक मिनिमाइजेशन)
संचार
- कुछ error-correcting code
- कुछ मॉड्यूलेशन स्कीम
बाइनरी को Gray Code में बदलना
विधि
- सबसे महत्वपूर्ण बिट (MSB) को वैसा ही रखें
- प्रत्येक बिट को उसके बाईं ओर के बिट के साथ XOR करें
उदाहरण: 1011 (बाइनरी) को Gray में बदलें
- MSB: 1 (रखें)
- 1 XOR 0 = 1
- 0 XOR 1 = 1
- 1 XOR 1 = 0
- परिणाम: 1110 (Gray)
सूत्र
Gray[i] = Binary[i] XOR Binary[i+1]
Gray[MSB] = Binary[MSB]
Gray Code को बाइनरी में बदलना
विधि
- MSB को वैसा ही रखें
- प्रत्येक Gray बिट को पिछले Binary बिट के साथ XOR करें
उदाहरण: 1110 (Gray) को Binary में बदलें
- MSB: 1 (रखें)
- 1 XOR 1 = 0
- 0 XOR 1 = 1
- 1 XOR 0 = 1
- परिणाम: 1011 (binary)
निष्कर्ष
BCD और Gray code विशेष बाइनरी एन्कोडिंग हैं जो विशिष्ट समस्याओं को हल करती हैं। BCD दशमलव प्रदर्शन को सरल बनाता है और सटीक दशमलव अंकगणित सुनिश्चित करता है—कैलकुलेटर और वित्तीय सिस्टम के लिए महत्वपूर्ण। Gray code सुनिश्चित करता है कि लगातार मानों के बीच केवल एक बिट बदले—पोजिशन एन्कोडर और त्रुटि रोकथाम के लिए आवश्यक। हालांकि दोनों शुद्ध बाइनरी जितने सामान्य नहीं हैं, इन्हें समझने से पता चलता है कि विभिन्न संख्या प्रतिनिधित्व विभिन्न इंजीनियरिंग आवश्यकताओं को कैसे पूरा करते हैं।