आईबीएम हेक्साडेसिमल फ़्लोटिंग-पॉइंट

हेक्साडेसिमल फ़्लोटिंग-पॉइंट अंकगणित (जिसे अब आईबीएम द्वारा एचएफपी कहा जाता है) फ़्लोटिंग-पॉइंट संख्याओं को एन्कोड करने का एक प्रारूप है जिसे पहली बार आईबीएम आईबीएम सिस्टम/360|सिस्टम/360 कंप्यूटरों पर पेश किया गया था, और उस आर्किटेक्चर के आधार पर बाद की मशीनों पर समर्थित है,  साथ ही ऐसी मशीनें जिनका उद्देश्य सिस्टम/360 के साथ एप्लिकेशन-संगत होना था। आईईईई 754 फ़्लोटिंग पॉइंट की तुलना में, एचएफपी प्रारूप का महत्व लंबा है, और एक्सपोनेंटिएशन छोटा है। सभी एचएफपी प्रारूपों में 64 के घातांक पूर्वाग्रह के साथ घातांक के 7 बिट हैं। प्रतिनिधित्व योग्य संख्याओं की सामान्यीकृत सीमा 16 से है−65से 1663 (लगभग 5.39761 × 10−79से 7.237005 × 1075).

संख्या को निम्नलिखित सूत्र के रूप में दर्शाया गया है: (−1)चिन्ह× 0. significand × 16प्रतिपादक−64.

एकल-परिशुद्धता 32-बिट
एक एकल परिशुद्धता|एकल-परिशुद्धता एचएफपी संख्या (जिसे आईबीएम द्वारा संक्षिप्त कहा जाता है) को 32-बिट शब्द में संग्रहीत किया जाता है:



इस प्रारूप में प्रारंभिक बिट को दबाया नहीं जाता है, और मूलांक (हेक्साडेसिमल) बिंदु महत्व के बाईं ओर सेट है (आईबीएम दस्तावेज़ और आंकड़ों में अंश)।
 * - style="text-align:center"
 * style="width:20px"|1
 * style="width:20px"|
 * style="width:50px"|7
 * style="width:20px"|
 * style="width:20px"|
 * style="width:210px"|24
 * style="width:20px"|
 * style="text-align:left"|(width in bits)
 * - style="text-align:center"
 * colspan="1" style="text-align:center;background-color:#FC9"|S
 * colspan="3" style="text-align:center;background-color:#99F"|Exp
 * colspan="3" style="text-align:center;background-color:#9F9"|Fraction
 * colspan="1" style="text-align:center;background-color:#FFF"|
 * - style="text-align:center"
 * 31
 * 30
 * 24
 * 23
 * 0
 * align="left"|(bit index)*
 * colspan="8"| * IBM documentation numbers the bits from left to right, so that the most significant bit is designated as bit number 0.
 * }
 * colspan="8"| * IBM documentation numbers the bits from left to right, so that the most significant bit is designated as bit number 0.
 * }
 * }

चूँकि आधार 16 है, इस रूप में घातांक आईईईई 754 के समतुल्य से लगभग दोगुना बड़ा है, बाइनरी में समान घातांक सीमा रखने के लिए, 9 घातांक बिट्स की आवश्यकता होगी।

उदाहरण
मान -118.625 को एचएफपी एकल-परिशुद्धता फ़्लोटिंग-पॉइंट मान के रूप में एन्कोड करने पर विचार करें।

मान ऋणात्मक है, इसलिए साइन बिट 1 है।

मान 118.62510 बाइनरी में 1110110.101 है2. यह मान मूलांक बिंदु को एक समय में चार बिट्स (एक हेक्साडेसिमल अंक) के बाईं ओर ले जाकर सामान्यीकृत किया जाता है जब तक कि सबसे बायां अंक शून्य न हो जाए, जिससे 0.01110110101 प्राप्त होता है2. शेष सबसे दाहिने अंक शून्य से भरे हुए हैं, जिससे .0111 0110 1010 0000 0000 0000 का 24-बिट अंश प्राप्त होता है2.

सामान्यीकृत मान ने मूलांक बिंदु को दो हेक्साडेसिमल अंकों को बाईं ओर ले जाया, जिससे 16 का गुणक और घातांक प्राप्त हुआ+2. घातांक (+2) में +64 का पूर्वाग्रह जोड़ा जाता है, जिससे +66 प्राप्त होता है, जो 100 0010 है2.

चिह्न, घातांक प्लस पूर्वाग्रह और सामान्यीकृत अंश का संयोजन इस एन्कोडिंग का उत्पादन करता है:



दूसरे शब्दों में, प्रदर्शित संख्या −0.76A000 है16 × 1666 − 64 = −0.4633789… × 16+2 = −118.625
 * - style="text-align:center"
 * style="width:20px;text-align:center;background-color:#FC9"|S
 * style="width:90px;text-align:center;background-color:#99F"|Exp
 * style="width:250px;text-align:center;background-color:#9F9"|Fraction
 * style="text-align:center;background-color:#FFF"|
 * - style="text-align:center"
 * style="text-align:center;background-color:#FEC"|1
 * style="text-align:center;background-color:#CCF"|100 0010
 * style="text-align:center;background-color:#CFC"|0111 0110 1010 0000 0000 0000
 * style="text-align:center;background-color:#FFF"|
 * }

सबसे बड़ी प्रतिनिधित्व योग्य संख्या


प्रदर्शित संख्या +0.FFFFFF है16 × 16127 − 64 = (1 − 16−6) × 1663 ≈ +7.2370051 × 1075
 * - style="text-align:center"
 * style="width:20px;text-align:center;background-color:#FC9"|S
 * style="width:90px;text-align:center;background-color:#99F"|Exp
 * style="width:250px;text-align:center;background-color:#9F9"|Fraction
 * style="text-align:center;background-color:#FFF"|
 * - style="text-align:center"
 * style="text-align:center;background-color:#FEC"|0
 * style="text-align:center;background-color:#CCF"|111 1111
 * style="text-align:center;background-color:#CFC"|1111 1111 1111 1111 1111 1111
 * style="text-align:center;background-color:#FFF"|
 * }

सबसे छोटी सकारात्मक सामान्यीकृत संख्या


दर्शाई गई संख्या +0.1 है16 × 16− 64 = 16 −1×16−64 ≈ +5.397605 × 10−79.
 * - style="text-align:center"
 * style="width:20px;text-align:center;background-color:#FC9"|S
 * style="width:90px;text-align:center;background-color:#99F"|Exp
 * style="width:250px;text-align:center;background-color:#9F9"|Fraction
 * style="text-align:center;background-color:#FFF"|
 * - style="text-align:center"
 * style="text-align:center;background-color:#FEC"|0
 * style="text-align:center;background-color:#CCF"|000 0000
 * style="text-align:center;background-color:#CFC"|0001 0000 0000 0000 0000 0000
 * style="text-align:center;background-color:#FFF"|
 * }

शून्य


शून्य (0.0) को सभी शून्य बिट्स के रूप में सामान्यीकृत रूप में दर्शाया जाता है, जो अंकगणितीय रूप से मान +0.0 है16 × 16− 64 = +0 × 16−64 ≈ +0.000000 × 10−79 = 0. ऑल-बिट्स शून्य के एक अंश को देखते हुए, सकारात्मक या नकारात्मक साइन बिट और एक गैर-शून्य पक्षपाती घातांक का कोई भी संयोजन अंकगणितीय रूप से शून्य के बराबर मान प्राप्त करेगा। हालाँकि, सीपीयू हार्डवेयर द्वारा शून्य के लिए उत्पन्न सामान्यीकृत रूप सभी-बिट्स शून्य है। यह तीनों फ़्लोटिंग-पॉइंट सटीक प्रारूपों के लिए सत्य है। अन्य घातांक मानों के साथ जोड़ या घटाव परिणाम में सटीकता खो सकता है।
 * - style="text-align:center"
 * style="width:20px;text-align:center;background-color:#FC9"|S
 * style="width:90px;text-align:center;background-color:#99F"|Exp
 * style="width:250px;text-align:center;background-color:#9F9"|Fraction
 * style="text-align:center;background-color:#FFF"|
 * - style="text-align:center"
 * style="text-align:center;background-color:#FEC"|0
 * style="text-align:center;background-color:#CCF"|000 0000
 * style="text-align:center;background-color:#CFC"|0000 0000 0000 0000 0000 0000
 * style="text-align:center;background-color:#FFF"|
 * }

परिशुद्धता मुद्दे
चूँकि आधार 16 है, बाइनरी महत्व में अधिकतम तीन अग्रणी शून्य बिट हो सकते हैं। इसका मतलब है कि जब संख्या को बाइनरी में परिवर्तित किया जाता है, तो सटीकता के कम से कम 21 बिट हो सकते हैं। डगमगाते परिशुद्धता प्रभाव के कारण, इसके कारण कुछ गणनाएँ बहुत ग़लत हो सकती हैं। इसकी काफी आलोचना हुई.

अशुद्धि का एक अच्छा उदाहरण दशमलव मान 0.1 का प्रतिनिधित्व है। इसका कोई सटीक बाइनरी या हेक्साडेसिमल प्रतिनिधित्व नहीं है। हेक्साडेसिमल प्रारूप में, इसे 0.19999999 के रूप में दर्शाया गया है...16 या 0.0001 1001 1001 1001 1001 1001 1001...2, वह है:



इसमें केवल 21 बिट्स हैं, जबकि बाइनरी संस्करण में 24 बिट्स परिशुद्धता है।
 * - style="text-align:center"
 * style="width:20px;text-align:center;background-color:#FC9"|S
 * style="width:90px;text-align:center;background-color:#99F"|Exp
 * style="width:250px;text-align:center;background-color:#9F9"|Fraction
 * style="text-align:center;background-color:#FFF"|
 * - style="text-align:center"
 * style="text-align:center;background-color:#FEC"|0
 * style="text-align:center;background-color:#CCF"|100 0000
 * style="text-align:center;background-color:#CFC"|0001 1001 1001 1001 1001 1010
 * style="text-align:center;background-color:#FFF"|
 * }

परिशुद्धता के छह हेक्साडेसिमल अंक लगभग छह दशमलव अंकों के बराबर हैं (यानी (6 - 1) लॉग10(16) ≈ 6.02). एकल परिशुद्धता हेक्साडेसिमल फ्लोट को दशमलव स्ट्रिंग में बदलने के लिए कम से कम 9 महत्वपूर्ण अंकों (यानी 6 लॉग) की आवश्यकता होगी10(16) + 1 ≈ 8.22) वापस उसी हेक्साडेसिमल फ्लोट मान में परिवर्तित करने के लिए।

डबल-सटीक 64-बिट
दोहरी सुनिश्चितता |डबल-प्रिसिजन एचएफपी प्रारूप (आईबीएम द्वारा लॉन्ग कहा जाता है) लघु प्रारूप के समान है, सिवाय इसके कि अंश क्षेत्र व्यापक है और डबल-प्रिसिजन संख्या एक डबल शब्द (8 बाइट्स) में संग्रहीत है:



इस प्रारूप का प्रतिपादक संबंधित आईईईई बाइनरी प्रारूप के रूप में केवल एक चौथाई रेंज को कवर करता है।
 * - style="text-align:center"
 * style="width:20px"|1
 * style="width:20px"|
 * style="width:50px"|7
 * style="width:20px"|
 * style="width:20px"|
 * style="width:320px"|56
 * style="width:20px"|
 * style="text-align:left"|(width in bits)
 * - style="text-align:center"
 * colspan="1" style="text-align:center;background-color:#FC9"|S
 * colspan="3" style="text-align:center;background-color:#99F"|Exp
 * colspan="3" style="text-align:center;background-color:#9F9"|Fraction
 * colspan="1" style="text-align:center;background-color:#FFF"|
 * - style="text-align:center"
 * 63
 * 62
 * 56
 * 55
 * 0
 * align="left"|(bit index)*
 * colspan="8"| * IBM documentation numbers the bits from left to right, so that the most significant bit is designated as bit number 0.
 * }
 * colspan="8"| * IBM documentation numbers the bits from left to right, so that the most significant bit is designated as bit number 0.
 * }
 * }

परिशुद्धता के 14 हेक्साडेसिमल अंक लगभग 17 दशमलव अंकों के बराबर हैं। डबल प्रिसिजन हेक्साडेसिमल फ्लोट को दशमलव स्ट्रिंग में बदलने के लिए वापस उसी हेक्साडेसिमल फ्लोट मान में बदलने के लिए कम से कम 18 महत्वपूर्ण अंकों की आवश्यकता होगी।

विस्तारित-परिशुद्धता 128-बिट
आईबीएम द्वारा विस्तारित-परिशुद्धता कहा जाता है, एक चौगुनी परिशुद्धता फ़्लोटिंग-पॉइंट प्रारूप | चौगुनी-परिशुद्धता एचएफपी प्रारूप को सिस्टम/370 श्रृंखला में जोड़ा गया था और कुछ एस/360 मॉडल (एस/360-85, -195, और अन्य विशेष अनुरोध पर या ओएस सॉफ्टवेयर द्वारा सिम्युलेटेड) पर उपलब्ध था। विस्तारित-सटीक अंश फ़ील्ड व्यापक है, और विस्तारित-सटीक संख्या को दो दोहरे शब्दों (16 बाइट्स) के रूप में संग्रहीत किया जाता है:



परिशुद्धता के 28 हेक्साडेसिमल अंक लगभग 32 दशमलव अंकों के बराबर हैं। विस्तारित परिशुद्धता एचएफपी को दशमलव स्ट्रिंग में बदलने के लिए उसी एचएफपी मान में वापस बदलने के लिए कम से कम 35 महत्वपूर्ण अंकों की आवश्यकता होगी। निम्न-क्रम वाले भाग में संग्रहीत घातांक उच्च-क्रम वाले भाग से 14 कम है, जब तक कि यह शून्य से कम न हो।
 * colspan="8" |High-order part
 * - style="text-align:center"
 * style="width:20px"|1
 * style="width:20px"|
 * style="width:50px"|7
 * style="width:20px"|
 * style="width:20px"|
 * style="width:320px"|56
 * style="width:20px"|
 * style="text-align:left"|(width in bits)
 * - style="text-align:center"
 * colspan="1" style="text-align:center;background-color:#FC9"|S
 * colspan="3" style="text-align:center;background-color:#99F"|Exp
 * colspan="3" style="text-align:center;background-color:#9F9"|Fraction (high-order 14 digits)
 * colspan="1" style="text-align:center;background-color:#FFF"|
 * - style="text-align:center"
 * 127
 * 126
 * 120
 * 119
 * 64
 * align="left"|(bit index)*
 * colspan="8" |Low-order part
 * - style="text-align:center"
 * colspan="4"|8
 * 56
 * style="text-align:left"|(width in bits)
 * - style="text-align:center"
 * colspan="4" style="text-align:center;background-color:#CCC"|Unused
 * colspan="3" style="text-align:center;background-color:#9F9"|Fraction (low-order 14 digits)
 * colspan="1" style="text-align:center;background-color:#FFF"|
 * - style="text-align:center"
 * 63
 * colspan="2"|...
 * 56
 * 55
 * 0
 * align="left"|(bit index)*
 * colspan="8"| * IBM documentation numbers the bits from left to right, so that the most significant bit is designated as bit number 0.
 * }
 * 56
 * 55
 * 0
 * align="left"|(bit index)*
 * colspan="8"| * IBM documentation numbers the bits from left to right, so that the most significant bit is designated as bit number 0.
 * }
 * colspan="8"| * IBM documentation numbers the bits from left to right, so that the most significant bit is designated as bit number 0.
 * }

अंकगणितीय परिचालन
उपलब्ध अंकगणितीय परिचालन जोड़ और घटाव, सामान्यीकृत और असामान्यीकृत दोनों हैं, और तुलना करते हैं। घातांक अंतर के आधार पर पूर्वसामान्यीकरण किया जाता है। पूर्व-सामान्यीकृत असामान्य मानों को गुणा और विभाजित करें, और परिणाम को एक गार्ड अंक के बाद छोटा करें। दो से भाग को सरल बनाने के लिए एक आधा ऑपरेशन है। ईएसए/390 से शुरू होकर, एक वर्गमूल ऑपरेशन होता है। सटीक हानि से बचने के लिए सभी ऑपरेशनों में एक हेक्साडेसिमल गार्ड अंक होता है। अधिकांश अंकगणितीय ऑपरेशन साधारण पॉकेट कैलकुलेटर की तरह छोटे-छोटे होते हैं। इसलिए, 1 − 16−8 = 1. इस मामले में, परिणाम शून्य से पूर्णांकित है।

आईबीएम मेनफ्रेम पर आईईईई 754
1998 में S/390 G5 से शुरुआत, आईबीएम मेनफ्रेम में आईईईई बाइनरी फ़्लोटिंग-पॉइंट इकाइयां भी शामिल हैं जो फ़्लोटिंग-पॉइंट अंकगणित के लिए आईईईई 754|आईईईई 754 मानक के अनुरूप हैं। IEEE दशमलव फ़्लोटिंग-पॉइंट को IBM सिस्टम z9 GA2 में जोड़ा गया था 2007 में millicode  का उपयोग करके और 2008 में हार्डवेयर में IBM System z10 तक। आधुनिक आईबीएम मेनफ्रेम 3 हेक्साडेसिमल (एचएफपी) प्रारूप, 3 बाइनरी (बीएफपी) प्रारूप और 3 दशमलव (डीएफपी) प्रारूप के साथ तीन फ्लोटिंग-पॉइंट रेडिस का समर्थन करते हैं। प्रति कोर दो फ़्लोटिंग-पॉइंट इकाइयाँ हैं; एक एचएफपी और बीएफपी का समर्थन करता है, और एक डीएफपी का समर्थन करता है; एक रजिस्टर फ़ाइल है, एफपीआर, जिसमें सभी 3 प्रारूप हैं। 2015 में IBM_z13_(माइक्रोप्रोसेसर) से शुरुआत करते हुए, प्रोसेसर ने एक वेक्टर सुविधा जोड़ी है जिसमें 32 वेक्टर रजिस्टर शामिल हैं, प्रत्येक 128 बिट चौड़ा है; एक वेक्टर रजिस्टर में दो 64-बिट या चार 32-बिट फ़्लोटिंग-पॉइंट नंबर हो सकते हैं। पारंपरिक 16 फ़्लोटिंग-पॉइंट रजिस्टरों को नए वेक्टर रजिस्टरों पर मढ़ा जाता है, इसलिए कुछ डेटा को पारंपरिक फ़्लोटिंग-पॉइंट निर्देशों या नए वेक्टर निर्देशों के साथ हेरफेर किया जा सकता है।

विशेष उपयोग
IBM HFP प्रारूप का उपयोग इसमें किया जाता है:

चूंकि आईबीएम एचएफपी प्रारूप का उपयोग करने वाला हार्डवेयर का एकमात्र शेष प्रदाता है, और उस प्रारूप का समर्थन करने वाली एकमात्र आईबीएम मशीनें उनके मेनफ्रेम हैं, कुछ फ़ाइल प्रारूपों को इसकी आवश्यकता होती है। एक अपवाद एसएएस 5 ट्रांसपोर्ट फ़ाइल प्रारूप है, जिसकी एफडीए को आवश्यकता होती है; उस प्रारूप में, फ़ाइल में सभी फ़्लोटिंग-पॉइंट नंबर आईबीएम मेनफ़्रेम प्रतिनिधित्व का उपयोग करके संग्रहीत किए जाते हैं। [...] अधिकांश प्लेटफ़ॉर्म फ़्लोटिंग-पॉइंट नंबरों के लिए IEEE प्रतिनिधित्व का उपयोग करते हैं। [...] ट्रांसपोर्ट फ़ाइलों को पढ़ने और/या लिखने में आपकी सहायता के लिए, हम आईईईई प्रतिनिधित्व (या तो बड़े एंडियन या छोटे एंडियन) से ट्रांसपोर्ट प्रतिनिधित्व और फिर से वापस परिवर्तित करने के लिए रूटीन प्रदान कर रहे हैं। आईबीएम के प्रारूप के लिए कोड जीएनयू लेसर जनरल पब्लिक लाइसेंस|एलजीपीएलवी2.1 के तहत भी उपलब्ध है।
 * नई औषधि अनुप्रयोग (एनडीए) अध्ययन प्रस्तुतियाँ के लिए खाद्य एवं औषधि प्रशासन (एफडीए) द्वारा आवश्यक एसएएस 5 परिवहन फ़ाइलें (.एक्सपीटी),
 * मौसम भविष्यवाणी मॉडल के आउटपुट का आदान-प्रदान करने के लिए जीआरआईबी (जीआरआईडेड बाइनरी) डेटा फ़ाइलें (वर्तमान संस्करण में आईईईई एकल-सटीक फ़्लोटिंग-पॉइंट प्रारूप),
 * GDSII (ग्राफ़िक डेटाबेस सिस्टम II) प्रारूप फ़ाइलें (ओपन आर्टवर्क सिस्टम इंटरचेंज स्टैंडर्ड प्रतिस्थापन है), और
 * SEG Y (सोसायटी ऑफ एक्सप्लोरेशन जियोफिजिसिस्ट Y) प्रारूप फ़ाइलें (IEEE एकल-परिशुद्धता फ़्लोटिंग-पॉइंट प्रारूप 2002 में प्रारूप में जोड़ा गया था)।

सिस्टम जो आईबीएम फ़्लोटिंग-पॉइंट प्रारूप का उपयोग करते हैं

 * आईबीएम सिस्टम/360 और उत्तराधिकारी
 * आरसीए स्पेक्ट्रा 70
 * इंग्लिश इलेक्ट्रिक सिस्टम 4
 * GEC 4000 श्रृंखला के मिनी कंप्यूटर
 * इंटरडेटा 16-बिट और 32-बिट कंप्यूटर
 * एसडीएस सिग्मा श्रृंखला
 * डेटा जनरल मिनी कंप्यूटर
 * आईसीएल 2900 सीरीज के कंप्यूटर
 * सीमेंस 7.700 और 7.500 श्रृंखला मेनफ्रेम और उत्तराधिकारी

यह भी देखें

 * आईईईई 754|फ़्लोटिंग-पॉइंट अंकगणित के लिए आईईईई 754 मानक
 * माइक्रोसॉफ्ट बाइनरी फॉर्मेट

अग्रिम पठन

 * Harding, L. J. (1966), "Idiosyncrasies of System/360 Floating-Point", Proceedings of SHARE 27, August 8–12, 1966, Presented at SHARE XXVII, Toronto, Canada
 * Harding, L. J. (1966), "Modifications of System/360 Floating Point", SHARE Secretary Distribution, pp. 11–27, SSD 157, C4470
 * Harding, L. J. (1966), "Idiosyncrasies of System/360 Floating-Point", Proceedings of SHARE 27, August 8–12, 1966, Presented at SHARE XXVII, Toronto, Canada
 * Harding, L. J. (1966), "Modifications of System/360 Floating Point", SHARE Secretary Distribution, pp. 11–27, SSD 157, C4470