दशमलव से हेक्स कन्वर्टर
नतीजा
हेक्साडेसिमल
- स्थानीय मान
- 2×4096 + 10×256 + 3×16 + 15
दशमलव से हेक्स कन्वर्टर किसी पूर्ण संख्या को आधार-10 से आधार-16 में दोबारा लिखता है। तरीक़ा वही बार-बार भाग देना है जो बाइनरी बनाता है, बस दो की जगह सोलह आ जाता है: संख्या को सोलह से भाग दीजिए, शेषफल लिख लीजिए, भागफल को सोलह से भाग दीजिए, और यही तब तक दोहराइए जब तक भागफल शून्य न हो जाए। बदलता है तो अंकों का समूह। दो से भाग देने पर 0 या 1 के सिवा कुछ बच ही नहीं सकता, पर सोलह से भाग देने पर 0 से 15 तक कुछ भी बच सकता है, और आधार-16 उन दस से पंद्रह तक के मानों को A से F तक के अक्षरों में लिखता है — A दस के लिए, B ग्यारह के लिए, और इसी तरह F पंद्रह के लिए। इसलिए शेषफल सीधे हेक्साडेसिमल अंक बनकर नहीं आते; वे संख्याओं की तरह आते हैं, और नौ से ऊपर का हर शेषफल जवाब पूरा होने से पहले अपने अक्षर में लिखा जाना चाहिए। 10815 लीजिए: 10815 ÷ 16 = 675 शेषफल 15, फिर 675 ÷ 16 = 42 शेषफल 3, फिर 42 ÷ 16 = 2 शेषफल 10, और आख़िर में 2 ÷ 16 = 0 शेषफल 2। नीचे से ऊपर पढ़िए तो शेषफल हैं 2, 10, 3, 15 — जो 2, A, 3, F बन जाते हैं, इसलिए 10815 हेक्साडेसिमल में 2A3F है। जवाब के साथ छपा जोड़ यही संख्या दूसरे सिरे से दिखाता है: आधार-16 में स्थान 4096, 256, 16 और 1 के होते हैं, और 2A3F यानी 2×4096 प्लस 10×256 प्लस 3×16 प्लस 15, जो जुड़कर फिर 10815 बनता है। यहाँ यह जोड़ सिर्फ़ पुष्टि नहीं करता, ढूँढ़ता भी है: बाइनरी में सारे गुणांक एक ही होते हैं, इसलिए वहाँ कोई अंक छिप नहीं सकता, पर यहाँ हर गुणांक अलग है और ग़लत अक्षर पकड़ा जाता है। आधार-16 इस्तेमाल होता ही इसलिए है कि एक हेक्साडेसिमल अंक ठीक चार बाइनरी अंकों का होता है, तो एक बाइट हमेशा दो अक्षर की और बत्तीस बिट का मान हमेशा आठ अक्षर का — इसीलिए रंगों के कोड, मेमोरी के पते और हैश इसी तरह लिखे जाते हैं।
10815 को सोलह से भाग देते हुए, एक-एक चक्कर, जब तक भागफल शून्य न हो जाए
| चरण | भाग | भागफल | शेषफल |
|---|---|---|---|
| 1 | 10815 ÷ 16 | 675 | 15 (F) |
| 2 | 675 ÷ 16 | 42 | 3 |
| 3 | 42 ÷ 16 | 2 | 10 (A) |
| 4 | 2 ÷ 16 | 0 | 2 |
इस सीढ़ी के चार में से दो शेषफल संख्या के बाद कोष्ठक में उसका अक्षर लिखकर दिखाए गए हैं — 15 (F) और 10 (A) — और यह दोहरा रूप ही इस तालिका के होने की वजह है। हिसाब आपको 15 देता है; जवाब को F चाहिए। जो ठीक-ठीक भाग देता है और फिर शेषफल वाला कॉलम ज्यों का त्यों नीचे उतार लेता है, वह 2A3F के बजाय 2103 लिख बैठता है, और यही वह एक ग़लती है जिसका न्योता यह बदलाव देता है। कॉलम नीचे से ऊपर पढ़िए तो जवाब के चिह्न क्रम से सामने आते हैं: 2, 10, 3, 15, जो नौ से ऊपर के दोनों मान बदल देने पर 2A3F बन जाता है। तालिका 10815 पर टिकी है जबकि ऊपर का पैनल आपकी टाइप की हुई जो भी संख्या बदलता है, क्योंकि यह नतीजा नहीं, तरीक़ा दिखा रही है। हर चक्कर में भागफल क़रीब सोलह गुना गिरता है, इसलिए सबसे बड़े स्वीकार्य इनपुट की सीढ़ी भी सिर्फ़ चौदह पंक्तियों की बनती है — और वह ठीक उतनी ही लंबी है जितना हेक्साडेसिमल की हद का मान, 1FFFFFFFFFFFFF।
फ़ॉर्मूला
10815 ÷ 16 = 675 r 15 → 675 ÷ 16 = 42 r 3 → 42 ÷ 16 = 2 r 10 → 2 ÷ 16 = 0 r 2 ⇒ 10815 = 2A3F = 2×4096 + 10×256 + 3×16 + 15
- 10815
- जिस पूर्ण संख्या को बदलना है, आधार-10 में लिखी हुई। दशमलव बिंदु और हज़ार का विभाजक दोनों पूर्णांकित किए बिना अस्वीकार कर दिए जाते हैं, इसलिए 10815 लिखिए, 10,815 नहीं
- ÷ 16
- वह क़दम जो दोहराया जाता है, इस पेज के बाइनरी रूप में जो दो आती थी उसकी जगह सोलह। सोलह वह आधार है जिसमें जाना है, इसलिए हर चक्कर यह पूछता है कि इसमें कितने सोलह समाते हैं और क्या बचता है
- भागफल
- वह हिस्सा जो अगले चक्कर में चलता है। काम तब रुकता है जब भागफल शून्य हो जाए, यानी जवाब में इससे ऊँचा कोई स्थान नहीं चाहिए
- शेषफल
- उस चक्कर से निकला मान, और यहाँ वह 0 या 1 के बजाय 0 से 15 तक कुछ भी हो सकता है। यही फ़र्क़ मिटाना इस बदलाव में ग़लती करने का सबसे आम तरीक़ा है: शेषफल 15 जवाब का अंक 15 नहीं है, क्योंकि आधार-16 में उसके लिए एक भी अकेला चिह्न नहीं है
- A — F
- वे अक्षर जो दस से पंद्रह तक के मान रखते हैं, जहाँ A दस, B ग्यारह, C बारह, D तेरह, E चौदह और F पंद्रह है। ये सीखने की अलग लिपि नहीं हैं: हर एक बस वही संख्या है जो एक अकेले दशमलव चिह्न में नहीं लिखी जा सकती थी
- ⇒ 2A3F
- नीचे से ऊपर जोड़कर बनाए गए अंक, जिनमें नौ से ऊपर का हर शेषफल पहले ही अपने अक्षर में बदल चुका है। सबसे पहले मिला शेषफल सबसे दाहिना चिह्न है, इसलिए चक्करों को उसी क्रम में पढ़ लेने पर जवाब उलटा मिलता है
- 2×4096 + 10×256 + 3×16 + 15
- जवाब को स्थानीय मानों की तरह वापस पढ़ना। बाइनरी के उलट, यहाँ सारे गुणांक एक नहीं हैं — और यही वह जाँच है जो ग़लत संख्या में बदले गए अक्षर को पकड़ती है, क्योंकि ग़लत A पूरा जोड़ बदल देता है
हेक्साडेसिमल वह शॉर्टकट है जिसमें इंजीनियर सोचते हैं, इसलिए यह बदलाव तब पड़ता है जब कोई मान इन दोनों के बीच आ-जा रहा हो। रंगों के कोड रोज़ का उदाहरण हैं: 0 से 255 तक चलने वाला एक चैनल दो हेक्साडेसिमल अक्षरों का होता है, इसीलिए रंग छह अक्षरों में लिखा जाता है, और इसीलिए किसी डिज़ाइनर का 10815 और किसी डेवलपर का 2A3F एक ही रंग हैं। मेमोरी के पते, चेकसम, हैश और दस्तावेज़ के रजिस्टर मान इसी वजह से आधार-16 में छपते हैं — हर अक्षर चार बिट का है, इसलिए किसी मान की चौड़ाई एक नज़र में पढ़ ली जाती है। जो स्टैक ट्रेस या पैकेट डंप पढ़ता है वह यह बदलाव उलटी दिशा में दिन में दर्जनों बार करता है, और जो मास्क या मैजिक नंबर लिखता है वह इसी दिशा में। पढ़ाई में यह सीधे माँगा जाता है, आमतौर पर 'दशमलव से हेक्स बदलिए और काम दिखाइए' के रूप में, और नीचे की सीढ़ी ठीक वही काम है: हर भाग के लिए एक पंक्ति, अक्षर पहले से रखे हुए। यह वह क़दम भी है जिससे किसी मान की चौड़ाई साफ़ हो जाती है, क्योंकि दो अक्षर एक बाइट हैं और आठ एक बत्तीस बिट का शब्द, इसलिए यह बदलाव यह भी बता देता है कि जिस रूप में मान जा रहा है वहाँ वह कितने अक्षर घेरेगा।
हल किए हुए उदाहरण
10815 को हेक्साडेसिमल में लिखना
- 10815 ÷ 16 = 675, शेषफल 15 — 15 लिख लीजिए, जो F है
- 675 ÷ 16 = 42, शेषफल 3
- 42 ÷ 16 = 2, शेषफल 10 — जो A है
- 2 ÷ 16 = 0, शेषफल 2 — भागफल शून्य हो गया, तो यहीं रुकिए
- शेषफल नीचे से ऊपर पढ़िए: 2, 10, 3, 15
- 10 की जगह A और 15 की जगह F रखिए: जवाब है 2A3F
यही डिफ़ॉल्ट है, और यही दोनों बदलाव दिखाता है। ध्यान दीजिए कि चार में से दो शेषफलों को अक्षर चाहिए, और यह आम बात है, बदक़िस्मती नहीं: नौ से ऊपर का शेषफल सोलह में से क़रीब छह बार आता है, इसलिए तीन-चार अक्षरों का जवाब आमतौर पर कम से कम एक अक्षर रखता ही है।
पूरी बाइट, 255
- 255 ÷ 16 = 15, शेषफल 15 — इसे F लिखिए
- 15 ÷ 16 = 0, शेषफल 15 — इसे भी F लिखिए
- भागफल शून्य हो गया, तो दोनों शेषफल नीचे से ऊपर पढ़िए: FF
एक बाइट में समाने वाले सबसे बड़े मान के लिए दो अक्षर, और हेक्साडेसिमल के अस्तित्व की वजह ठीक यही है। FF और 255 की जोड़ी याद रखने लायक़ है: यही रंग के एक चैनल की हद है, यही ज़्यादातर भाषाओं में ऋणरहित बाइट की हद है, और यही एक अक्षर के बराबर कच्चा डेटा है।
सोलह की घात, 1048576
- 1048576 ÷ 16 = 65536, शेषफल 0
- 65536 ÷ 16 = 4096, शेषफल 0
- 4096 ÷ 16 = 256, शेषफल 0
- 256 ÷ 16 = 16, शेषफल 0
- 16 ÷ 16 = 1, शेषफल 0
- 1 ÷ 16 = 0, शेषफल 1 — नीचे से ऊपर पढ़िए तो 100000
बाइनरी पेज के दो की घात वाले उदाहरण की हेक्साडेसिमल प्रतिध्वनि: आधार की घात एक अकेला 1 और उसके बाद शून्य बनकर आती है। 1048576 यानी 16⁵ और साथ ही 2²⁰, और इसी में इस लिखावट का पूरा फ़ायदा है — वही मान बाइनरी में 100000000000000000000 है और हेक्साडेसिमल में 100000, और दूसरा पढ़ा जा सकता है।
ऋणात्मक संख्या
- ऋण चिह्न बदला नहीं जाता, साथ चलता है: अंक पहले उदाहरण की तरह 10815 के निकाले जाते हैं
- 10815 ÷ 16 = 675 शेषफल 15, और इसी तरह नीचे 0 शेषफल 2 तक
- नीचे से ऊपर पढ़े गए अंक हैं 2, A, 3, F
- चिह्न आगे लगाइए: -2A3F
आगे लगा ऋण चिह्न स्वीकार होता है और आगे ही छपता है, और स्थानीय मानों का जोड़ कोष्ठक में लपेटा जाता है ताकि ऋण पहले पद पर नहीं, पूरे जोड़ पर लगे। यह भी देख लीजिए कि यह क्या नहीं है: यह किसी परिमाण की चिह्नित पढ़त है, वह दो का पूरक बिट-पैटर्न नहीं जो कोई मशीन रखती। अगर आपको किसी ऋणात्मक मान की चिह्नित लिखावट नहीं, रजिस्टर का अंदरूनी पैटर्न चाहिए, तो वह दूसरा सवाल है और दूसरा पेज।
सीमाएँ
यह पेज सिर्फ़ पूर्ण संख्याएँ बदलता है, इसलिए दशमलव बिंदु पूर्णांकित किए बिना अस्वीकार कर दिया जाता है — 10815.5 यहाँ बदला नहीं जा सकता। हज़ार के विभाजक भी अस्वीकार होते हैं: 10815 लिखिए, 10,815 नहीं, क्योंकि कॉमा कुछ भाषाओं में दशमलव बिंदु होता है और दो पढ़तों के बीच अंदाज़ा लगाने से साफ़-साफ़ पूछ लेना बेहतर है। इनपुट ज़्यादा से ज़्यादा 9007199254740991 हो सकता है, जो चौदह हेक्साडेसिमल अक्षर बनता है और उसका हेक्साडेसिमल रूप 1FFFFFFFFFFFFF है — वही हद जो बाइनरी पेजों पर तिरपन अंकों की बनकर आती है, क्योंकि यह एक ही सीमा है जो दो आधारों में लिखी गई है। आगे के शून्य और आगे लगा ऋण चिह्न दोनों स्वीकार होते हैं; ऋण परिमाण की एक चिह्नित पढ़त देता है, दो का पूरक बिट-पैटर्न नहीं। बड़े-छोटे अक्षर दोनों स्वीकार होते हैं और जवाब हमेशा बड़े अक्षरों में छपता है। नीचे की तालिका 10815 की सीढ़ी छापती है और आपकी टाइप की हुई संख्या के साथ नहीं चलती। उलटी दिशा में बदलना, यानी हेक्साडेसिमल से वापस दशमलव, अपने अलग पेज पर है, और यह पेज नतीजे पर कोई गणना नहीं करता।
अक्सर पूछे जाने वाले सवाल
- दशमलव संख्या को हाथ से हेक्स में कैसे बदलें?
- सोलह से भाग दीजिए, शेषफल लिख लीजिए, फिर भागफल को सोलह से भाग दीजिए और यही तब तक दोहराइए जब तक भागफल शून्य न हो जाए। शेषफल नीचे से ऊपर पढ़िए, और नौ से ऊपर के हर शेषफल के लिए उसका अक्षर रख दीजिए: 10 यानी A, 11 यानी B, 12 यानी C, 13 यानी D, 14 यानी E और 15 यानी F। 10815 के लिए शेषफल ऊपर से नीचे 15, 3, 10, 2 निकलते हैं, जो ऊपर की ओर पढ़कर और अक्षर रखकर 2A3F बनते हैं।
- हेक्साडेसिमल में अक्षर आख़िर इस्तेमाल क्यों होते हैं?
- क्योंकि आधार-16 को सोलह अलग-अलग चिह्न चाहिए और दशमलव अंक सिर्फ़ दस देते हैं। बाक़ी छह चिह्न कहीं से तो आने ही हैं, और अक्षर वह रिवाज़ हैं जिस पर हर जगह सहमति है। A दस है और F पंद्रह, इसलिए इस पद्धति के अंक 0 से 9 और फिर A से F तक चलते हैं। यह बदलाव के ऊपर से रटने की कोई अलग चीज़ नहीं है — कोई अक्षर बस उस शेषफल का नाम है जो एक अकेले दशमलव चिह्न में नहीं समाया।
- यहाँ सबसे बड़ी कौन-सी दशमलव संख्या बदल सकता हूँ?
- 9007199254740991, जो हेक्साडेसिमल में 1FFFFFFFFFFFFF है — चौदह अक्षर। यह हद उसी जगह से आती है जहाँ से बाइनरी पेजों की तिरपन अंकों वाली हद आती है, क्योंकि यह वही संख्या है जो दो आधारों में लिखी गई हो। इससे बड़ा कुछ भी बदलने के बजाय एक संदेश के साथ अस्वीकार कर दिया जाता है, क्योंकि इस चौड़ाई के आगे मशीन पड़ोसी पूर्ण संख्याओं में फ़र्क़ नहीं कर पाती और बदला हुआ जवाब भरोसे के लायक़ नहीं होता।
- क्या हेक्साडेसिमल बाइनरी ही है, बस छोटी लिखी हुई?
- यह वही मान है, ऐसे आधार में लिखा हुआ जो दो की घात है, और इसीलिए इन दोनों के बीच आना-जाना इतना आसान है। हेक्साडेसिमल का हर अक्षर ठीक चार बाइनरी अंकों का होता है, इसलिए 2A3F यानी 0010 1010 0011 1111, जिसमें कुछ भी बाक़ी नहीं बचता। यह इस उदाहरण का संयोग नहीं है: यह हर हेक्साडेसिमल संख्या पर लागू होता है, और यही इसके इस्तेमाल की वजह है। बदलाव में कुछ खोता नहीं और कुछ पूर्णांकित करना नहीं पड़ता।
- क्या दशमलव बिंदु वाली संख्या बदल सकता हूँ?
- यहाँ नहीं। यह पेज पूर्ण संख्याएँ लेता है, इसलिए 10815.5 पूर्णांकित करने के बजाय अस्वीकार कर दिया जाता है। आधार-16 में भिन्न पूरी तरह परिभाषित हैं — बिंदु के दाईं ओर के स्थान सोलहवें, दो सौ छप्पनवें हिस्से के होते हैं — पर उन्हें स्वीकार करने का मतलब यह तय करना होता कि कितने चिह्न रखने हैं और आख़िरी को कैसे पूर्णांकित करना है, और इस परिवार का हर पेज पूर्ण संख्याएँ ही बदलता है।
- पेज हेक्साडेसिमल संख्या के साथ स्थानीय मानों का जोड़ भी क्यों छापता है?
- क्योंकि यही वह जाँच है जो अक्षर बदलने की ग़लती पकड़ती है। अगर आपने शेषफल 15 को ग़लत अक्षर बना दिया, या जहाँ F चाहिए था वहाँ A रख दिया, तो छपा हुआ जोड़ उस संख्या तक वापस नहीं पहुँचेगा जिससे आपने शुरू किया था — 2×4096 + 10×256 + 3×16 + 15 केवल तभी 10815 है जब अक्षर ठीक पढ़े गए हों। इस जोड़ के बाइनरी रूप के उलट, यहाँ गुणांक एक-एक नहीं हैं, इसलिए जवाब के हर चिह्न का हिसाब अलग से लगता है।
संदर्भ
- Hexadecimal — base sixteen, the letters A to F as the values ten to fifteen, and conversion to and from decimal — Wolfram MathWorld (United States)
- Number base — why a numeral's value depends on its position and on the base, and how one quantity is written in several bases — Wolfram MathWorld (United States)
- Powers of two — the sequence that the base-sixteen positions double up into, catalogued as OEIS A000079 — OEIS Foundation Inc. (United States)