दशमलव64 फ़्लोटिंग-पॉइंट प्रारूप

From alpha
Jump to navigation Jump to search

कम्प्यूटिंग में, दशमलव 64 दशमलव फ़्लोटिंग-पॉइंट कंप्यूटर क्रमांकन प्रारूप है जो कंप्यूटर मेमोरी में 8 बाइट्स (64 बिट्स) रखता है। यह उन अनुप्रयोगों के लिए है जहां वित्तीय और कर गणना जैसे दशमलव पूर्णांक का अनुकरण करना आवश्यक है।

दशमलव64 महत्वपूर्ण के 16 दशमलव अंक और −383 से +384 की घातांक सीमा का समर्थन करता है, अर्थात ±0.000000000000000×10^−383 से ±9.999999999999999×10^384। (सामान्यतः,±0000000000000000×10^−398 से ±9999999999999999×10^369।) इसके विपरीत, संबंधित बाइनरी प्रारूप, जो सबसे अधिक उपयोग किया जाने वाला प्रकार है, इस प्रकार जिसकी अनुमानित सीमा ±0.000000000000001×10^−308 से ±1.797693134862315×10^308 है क्योंकि महत्वपूर्ण सामान्यीकृत नहीं है, 16 से कम महत्वपूर्ण अंक वाले अधिकांश मूल्यों में कई संभावित प्रतिनिधित्व होते हैं; 1 × 102=0.1 × 103=0.01 × 104, आदि। शून्य में 768 संभावित प्रतिनिधित्व हैं (1536 यदि दोनों हस्ताक्षरित शून्य सम्मिलित हैं)।

दशमलव64 फ़्लोटिंग पॉइंट एक अपेक्षाकृत नया दशमलव फ़्लोटिंग-पॉइंट प्रारूप है, जिसे औपचारिक रूप से आईईईई 754-2008 संस्करण [1] आईईईई 754 के साथ-साथ आईएसओ/आईईसी/आईईईई 60559:2011 में प्रस्तुत किया गया है।[2]

दशमलव64 मानों का निरूपण

संकेत संयोजन घातांक निरंतरता महत्वपूर्ण निरंतरता
1 bit 5 bits 8 bits 50 bits
s mmmmm xxxxxxxx cccccccccccccccccccccccccccccccccccccccccccccccccc

आईईईई 754 दशमलव64 मानों के लिए दो वैकल्पिक प्रतिनिधित्व विधियों की अनुमति देता है। मानक यह निर्दिष्ट नहीं करता है कि यह कैसे दर्शाया जाए कि किस प्रतिनिधित्व का उपयोग किया जाता है, उदाहरण के लिए ऐसी स्थिति में जहां दशमलव 64 मान सिस्टम के बीच संप्रेषित होते हैं:

  • बाइनरी पूर्णांक महत्वपूर्ण क्षेत्र में, 16-अंकीय महत्वपूर्ण को बाइनरी पूर्णांक दशमलव (बीआईडी) के आधार पर बाइनरी कोडित धनात्मक पूर्णांक के रूप में दर्शाया जाता है।
  • सघन रूप से पैक किए गए दशमलव महत्वपूर्ण क्षेत्र में, 16-अंकीय महत्वपूर्ण को दशमलव कोडित धनात्मक पूर्णांक के रूप में दर्शाया जाता है, इस प्रकार जो सघन रूप से पैक किए गए दशमलव (डीपीडी) पर आधारित होता है, जिसमें 3 अंकों के 5 समूह होते हैं (विशेष रूप से एन्कोड किए गए सबसे महत्वपूर्ण अंक को छोड़कर) प्रत्येक को डिकलेट्स (10-बिट अनुक्रम) में दर्शाया जाता है। यह अधिक कुशल है, क्योंकि 210 = 1024, 0 से 999 तक की सभी संख्याओं को समाहित करने के लिए आवश्यकता से थोड़ा ही अधिक है।

दोनों विकल्प प्रतिनिधित्व योग्य संख्याओं की बिल्कुल समान श्रेणी प्रदान करते हैं: महत्वपूर्ण के 16 अंक और 3 × 28 = 768 संभावित दशमलव घातांक मान (बाइनरी64 संख्या में संग्रहीत सभी संभावित दशमलव घातांक मान दशमलव64 में दर्शाए जा सकते हैं, और इस प्रकार बाइनरी64 के महत्वपूर्ण के अधिकांश बिट्स को महत्वपूर्ण में दशमलव अंकों की लगभग समान संख्या रखते हुए संग्रहीत किया जाता है।)

दोनों स्थितियों में, महत्वपूर्ण के सबसे महत्वपूर्ण 4 बिट्स (जिनमें वास्तव में केवल 10 संभावित मान हैं) को 5-बिट क्षेत्र के 32 संभावित मानों में से 30 का उपयोग करने के लिए घातांक के सबसे महत्वपूर्ण 2 बिट्स (3 संभावित मान) के साथ जोड़ा जाता है। शेष संयोजन अनन्तता और NaNs को कूटबद्ध करते हैं।

संयोजन क्षेत्र प्रतिपादक एमएसबिट्स महत्वपूर्ण और एमएसबिट्स अन्य
00mmm 00 0xxx
01mmm 01 0xxx
10mmm 10 0xxx
1100m 00 100x
1101m 01 100x
1110m 10 100x
11110 ±अनन्त
11111 NaN. साइन बिट को नजरअंदाज कर दिया गया। घातांक निरंतरता क्षेत्र का पहला बिट यह निर्धारित करता है कि NaN सिग्नलिंग कर रहा है या नहीं।

इन्फिनिटी और NaN के स्थितियों में, एन्कोडिंग के अन्य सभी बिट्स को नजरअंदाज कर दिया जाता है। इस प्रकार, किसी सरणी को बाइट मान से भरकर इनफिनिटीज़ या NaNs में प्रारंभ करना संभव है।

बाइनरी पूर्णांक महत्वपूर्ण क्षेत्र

यह प्रारूप 0 से लेकर बाइनरी महत्वपूर्ण का उपयोग करता है 1016 − 1 = 9999999999999999 = 2386F26FC0FFFF16 = 1000111000011011110010011011111100000011111111111111112.

एन्कोडिंग, पूरी तरह से 64 बिट्स पर संग्रहीत, 10 × 250 − 1 = 11258999068426239 = 27FFFFFFFFFFFF16, तक बाइनरी महत्व का प्रतिनिधित्व कर सकता है, किन्तु 1016 − 1 से बड़े मान अनुचित हैं (और इनपुट पर सामना होने पर मानक को उन्हें 0 के रूप में मानने के लिए कार्यान्वयन की आवश्यकता होती है) ).

जैसा कि ऊपर वर्णित है, एन्कोडिंग इस पर निर्भर करती है कि महत्व के सबसे महत्वपूर्ण 4 बिट्स 0 से 7 (00002 से 01112), या उच्चतर (10002 या 10012) की सीमा में हैं।

यदि साइन बिट के बाद के 2 "00", "01" या "10" हैं, तो घातांक क्षेत्र में साइन बिट के बाद के 10 bits होते हैं, और महत्व शेष 53 bits होता है, जिसमें अंतर्निहित 0 bit होता है :

s 00eeeeeeee   (0)ttt tttttttttt tttttttttt tttttttttt tttttttttt tttttttttt                                                     
s 01eeeeeeee   (0)ttt tttttttttt tttttttttt tttttttttt tttttttttt tttttttttt                                                
s 10eeeeeeee   (0)ttt tttttttttt tttttttttt tttttttttt tttttttttt tttttttttt

इसमें असामान्य संख्याएँ सम्मिलित हैं जहाँ अग्रणी महत्वपूर्ण अंक 0 है। यदि साइन बिट के बाद के 2 bits "11" हैं, तो 10-बिट एक्सपोनेंट क्षेत्र को 2 bits दाईं ओर स्थानांतरित कर दिया जाता है (साइन बिट और उसके बाद "11" बिट्स दोनों के बाद), और दर्शाया गया महत्व शेष में है इस प्रकार 51 bits इस स्थिति में वास्तविक महत्व के अधिकांश बिट्स के लिए एक अंतर्निहित (अर्थात संग्रहीत नहीं) अग्रणी 3-बिट अनुक्रम "100" है (महत्व के शेष निचले बिट्स ttt...ttt में, सभी संभावित मान नहीं हैं) उपयोग किया गया)।

s 1100eeeeeeee (100)t tttttttttt tttttttttt tttttttttt tttttttttt tttttttttt                                          
s 1101eeeeeeee (100)t tttttttttt tttttttttt tttttttttt tttttttttt tttttttttt                                          
s 1110eeeeeeee (100)t tttttttttt tttttttttt tttttttttt tttttttttt tttttttttt

साइन बिट के बाद 2-बिट अनुक्रम 11 इंगित करता है कि महत्वपूर्ण के लिए अंतर्निहित 3-बिट उपसर्ग 100 है। बाइनरी प्रारूपों के लिए सामान्य मानों के महत्वपूर्ण में अंतर्निहित 1-बिट उपसर्ग 1 की तुलना करें। साइन बिट के बाद 2-बिट अनुक्रम 00, 01, या 10 घातांक क्षेत्र का भाग हैं।

महत्व क्षेत्र के अग्रणी बिट्स सबसे महत्वपूर्ण दशमलव अंक को एन्कोड नहीं करते हैं; वह बस एक बड़ी शुद्ध-बाइनरी संख्या का भाग हैं। उदाहरण के लिए, 8000000000000000 का महत्व बाइनरी 0111000110101111110101001001100011010000000000000000002 के रूप में एन्कोड किया गया है, इस प्रकार जिसमें अग्रणी 4 बिट एन्कोडिंग 7 है; पहला महत्व जिसके लिए 54वें बिट की आवश्यकता होती है वह 253 = 9007199254740992. है। उच्चतम वैध महत्व 9999999999999999 है जिसका बाइनरी एन्कोडिंग (100)0111000011011110010011011111100000011111111111111112 है ( 3 सबसे महत्वपूर्ण बिट्स (100) संग्रहीत नहीं हैं किन्तु अंतर्निहित हैं जैसा कि ऊपर दिखाया गया है; और अगला बिट है वैध एन्कोडिंग में सदैव शून्य)।

उपरोक्त स्थितियों में, दर्शाया गया मान है

(−1)sign × 10exponent−398 × significand

यदि साइन बिट के बाद के चार बिट 1111 हैं तो मान अनंत या NaN है, जैसा कि ऊपर वर्णित है:

s 11110 xx...x    ±infinity                                                                                          
s 11111 0x...x    a quiet NaN                                                                                                                                                                                                                                                                                                                                              
s 11111 1x...x    a signalling NaN

घनीभूत दशमलव महत्वपूर्ण क्षेत्र

इस संस्करण में, महत्वपूर्ण को दशमलव अंकों की श्रृंखला के रूप में संग्रहीत किया जाता है। अग्रणी अंक 0 और 9 (3 या 4 बाइनरी बिट्स) के बीच है, और शेष महत्वपूर्ण सघन रूप से पैक दशमलव (डीपीडी) एन्कोडिंग का उपयोग करता है।

सबसे आगे वाला 2 bits घातांक और अग्रणी अंक (3 या 4 bits) महत्वपूर्ण को पांच बिट्स में संयोजित किया जाता है जो साइन बिट का अनुसरण करते हैं।

उसके बाद के आठ बिट्स घातांक निरंतरता क्षेत्र हैं, जो घातांक के कम-महत्वपूर्ण बिट्स प्रदान करते हैं।

अंतिम 50 bits महत्वपूर्ण निरंतरता क्षेत्र हैं, जिसमें पांच 10-बिट डिकलेट (कंप्यूटिंग) सम्मिलित हैं।[3] इस प्रकार प्रत्येक डिकलेट तीन दशमलव अंकों को कूटबद्ध करता है [3] डीपीडी एन्कोडिंग का उपयोग करता है।

यदि साइन बिट के बाद पहले दो बिट 00, 01, या 10 हैं, तो वह घातांक के अग्रणी बिट हैं, और उसके बाद के तीन बिट टीटीटी को अग्रणी दशमलव अंक (0 से 7) के रूप में समझा जाता है:

s 00 TTT (00)eeeeeeee (0TTT)[tttttttttt][tttttttttt][tttttttttt][tttttttttt][tttttttttt]                                   
s 01 TTT (01)eeeeeeee (0TTT)[tttttttttt][tttttttttt][tttttttttt][tttttttttt][tttttttttt]                              
s 10 TTT (10)eeeeeeee (0TTT)[tttttttttt][tttttttttt][tttttttttt][tttttttttt][tttttttttt]

यदि साइन बिट के बाद पहले दो बिट्स 11 हैं, तो दूसरे 2-बिट्स घातांक के अग्रणी बिट्स हैं, और अगले बिट t को प्रमुख दशमलव अंक (8 या 9) बनाने के लिए अंतर्निहित बिट्स 100 के साथ उपसर्ग किया जाता है:

s 1100 T (00)eeeeeeee (100T)[tttttttttt][tttttttttt][tttttttttt][tttttttttt][tttttttttt]                                       
s 1101 T (01)eeeeeeee (100T)[tttttttttt][tttttttttt][tttttttttt][tttttttttt][tttttttttt]                                        
s 1110 T (10)eeeeeeee (100T)[tttttttttt][tttttttttt][tttttttttt][tttttttttt][tttttttttt]

साइन बिट के बाद 5-बिट क्षेत्र के शेष दो संयोजन (11 110 और 11 111) का उपयोग क्रमशः ±अनंत और NaN का प्रतिनिधित्व करने के लिए किया जाता है।

डिकलेट्स के लिए DPD/3BCD ट्रांसकोडिंग निम्न तालिका द्वारा दी गई है। b9...b0 DPD के बिट्स हैं, और d2...d0 तीन BCD अंक हैं।

Densely packed decimal encoding rules[4]
DPD encoded value Decimal digits
Code space (1024 states) b9 b8 b7 b6 b5 b4 b3 b2 b1 b0 d2 d1 d0 Values encoded Description Occurrences (1000 states)
50.0% (512 states) a b c d e f 0 g h i 0abc 0def 0ghi (0–7) (0–7) (0–7) Three small digits 51.2% (512 states)
37.5% (384 states) a b c d e f 1 0 0 i 0abc 0def 100i (0–7) (0–7) (8–9) Two small digits,
one large
38.4% (384 states)
a b c g h f 1 0 1 i 0abc 100f 0ghi (0–7) (8–9) (0–7)
g h c d e f 1 1 0 i 100c 0def 0ghi (8–9) (0–7) (0–7)
9.375% (96 states) g h c 0 0 f 1 1 1 i 100c 100f 0ghi (8–9) (8–9) (0–7) One small digit,
two large
9.6% (96 states)
d e c 0 1 f 1 1 1 i 100c 0def 100i (8–9) (0–7) (8–9)
a b c 1 0 f 1 1 1 i 0abc 100f 100i (0–7) (8–9) (8–9)
3.125% (32 states, 8 used) x x c 1 1 f 1 1 1 i 100c 100f 100i (8–9) (8–9) (8–9) Three large digits, bits b9 and b8 are don't care 0.8% (8 states)

8 दशमलव मान जिनके सभी अंक 8 या 9 हैं, उनमें से प्रत्येक में चार कोडिंग हैं। उपरोक्त तालिका में x चिह्नित बिट्स इनपुट पर ध्यान नहीं देते हैं, किन्तु गणना किए गए परिणामों में सदैव 0 होंगे। ( वह 8 × 3 = 24 गैर-मानक एन्कोडिंग 103 = 1000 and 210 = 1024. बीच के अंतर को भरते हैं)

उपरोक्त स्थितियों में, दशमलव अंकों के डिकोड किए गए अनुक्रम के वास्तविक महत्वपूर्ण के साथ, दर्शाया गया मान है

यह भी देखें

संदर्भ

  1. IEEE Computer Society (2008-08-29). फ़्लोटिंग-पॉइंट अंकगणित के लिए आईईईई मानक. IEEE. doi:10.1109/IEEESTD.2008.4610935. ISBN 978-0-7381-5753-5. IEEE Std 754-2008. Retrieved 2016-02-08.
  2. "आईएसओ/आईईसी/आईईईई 60559:2011". 2011. Retrieved 2016-02-08. {{cite journal}}: Cite journal requires |journal= (help)
  3. 3.0 3.1 Muller, Jean-Michel; Brisebarre, Nicolas; de Dinechin, Florent; Jeannerod, Claude-Pierre; Lefèvre, Vincent; Melquiond, Guillaume; Revol, Nathalie; Stehlé, Damien; Torres, Serge (2010). फ़्लोटिंग-पॉइंट अंकगणित की पुस्तिका (1 ed.). Birkhäuser. doi:10.1007/978-0-8176-4705-6. ISBN 978-0-8176-4704-9. LCCN 2009939668.
  4. Cowlishaw, Michael Frederic (2007-02-13) [2000-10-03]. "A Summary of Densely Packed Decimal encoding". IBM. Archived from the original on 2015-09-24. Retrieved 2016-02-07.