इसका इस्तेमाल कैसे करें
- फ़ॉर्मेट चुनें: हाफ, सिंगल या डबल प्रिसिजन।
- यह लिखें के तहत दशमलव संख्या चुनें, किसी संख्या को बदलने के लिए, या बिट पैटर्न (हेक्साडेसिमल) चुनें, संग्रहीत बिट पढ़ने के लिए।
- मान में मान लिखें। पेज आपके लिखते समय अपडेट होता है।
- रंगीन बिट, फ़ील्ड की तालिका और परिणाम की तालिका पढ़ें। राउंडिंग त्रुटि सिर्फ दशमलव संख्या के लिए दिखती है।
संख्या फ़ील्ड में कैसे बँटती है
बाइनरी फ़्लोटिंग-पॉइंट संख्या के तीन फ़ील्ड होते हैं: एक साइन बिट, एक एक्सपोनेंट फ़ील्ड और एक फ़्रैक्शन फ़ील्ड। सिंगल प्रिसिजन 1, 8 और 23 बिट लेता है; डबल प्रिसिजन 1, 11 और 52; हाफ प्रिसिजन 1, 5 और 10। सामान्य संख्या के लिए मान (−1)^साइन × 1.फ़्रैक्शन × 2^(एक्सपोनेंट फ़ील्ड − बायस) है, जहाँ सिंगल प्रिसिजन के लिए बायस 127 है (IEEE 754 अपने बाइनरी फ़ॉर्मेट में फ़ील्ड परिभाषित करता है)।
0.15625 = 1.25 × 2^−3 → साइन 0, एक्सपोनेंट 127 − 3 = 124 = 01111100, फ़्रैक्शन 0100… → 0 01111100 01000000000000000000000 = 3E200000
निकटतम मान तक गोल करना
ज्यादातर दशमलव संख्याएँ बाइनरी में ठीक संग्रहीत नहीं हो सकतीं। पेज लिखी गई संख्या को फ़ॉर्मेट के सबसे नजदीकी संग्रहीत होने लायक मान तक गोल करता है, और बराबर दूरी हो तो वह मान चुना जाता है जिसका आखिरी बिट सम (even) हो। दो पड़ोसी मानों के बीच की दूरी एक ulp (unit in the last place) है, और राउंडिंग त्रुटि आधे ulp से ज्यादा नहीं होती। सिंगल प्रिसिजन में 0.1 का संग्रहीत मान 0.100000001490116119384765625 है, इसलिए त्रुटि +1.49 × 10^-9 है, जो 0.2 ulp है।
विशेष मान
- शून्य: एक्सपोनेंट और फ़्रैक्शन शून्य। उसका साइन बिट रहता है, इसलिए −0 और +0 दो अलग पैटर्न हैं।
- सबनॉर्मल संख्याएँ: एक्सपोनेंट फ़ील्ड शून्य और कोई छिपा बिट नहीं। वे शून्य और सबसे छोटी सामान्य संख्या के बीच का फासला भरती हैं।
- अनंत (Infinity): एक्सपोनेंट सारे एक और फ़्रैक्शन शून्य। जो दशमलव सबसे बड़ी परिमित संख्या से आगे गोल होता है, वह Infinity बन जाता है।
- NaN: एक्सपोनेंट सारे एक और फ़्रैक्शन शून्य नहीं। फ़्रैक्शन का सबसे ऊपर वाला बिट शांत NaN को संकेत देने वाले NaN से अलग करता है; बाकी फ़्रैक्शन पेलोड है।
पेज क्या नहीं दिखाता
- गणित: पेज दिखाता है कि संख्या कैसे संग्रहीत होती है, दो संग्रहीत संख्याओं को जोड़ने या गुणा करने का परिणाम नहीं।
- IEEE 754-2008 के दशमलव फ़्लोटिंग-पॉइंट फ़ॉर्मेट, जो आधार 10 पर चलते हैं, और दूसरे फ़ॉर्मेट जैसे bfloat16 या 8-बिट फ़्लोट।
- दो का पूरक (two's complement) पूर्णांक: देखें दो का पूरक कैलकुलेटर।
उदाहरण: सिंगल प्रिसिजन में 0.1
फ़ॉर्मेट को सिंगल प्रिसिजन पर रखकर 0.1 लिखें। 0.1 है 1.6 × 2^−4, और सिग्निफ़िकैंड 1.6 को 23 फ़्रैक्शन बिट में नहीं लिखा जा सकता। फ़्रैक्शन ऊपर गोल होता है, इसलिए संग्रहीत मान 0.1 से थोड़ा बड़ा है।
| परिणाम | मान |
|---|---|
| हेक्साडेसिमल | 3DCCCCCD |
| ठीक संग्रहीत मान | 0.100000001490116119384765625 |
| राउंडिंग त्रुटि (संग्रहीत घटा टाइप किया गया) | +1.490116119384765625e-9 |
| ulps में राउंडिंग त्रुटि | +0.200 |
अक्सर पूछे जाने वाले सवाल
कंप्यूटर में 0.1 + 0.2 ठीक 0.3 क्यों नहीं होता?
न 0.1 और न 0.2 बाइनरी में ठीक संग्रहीत हो सकते हैं, और उनके जोड़ को फिर से गोल किया जाता है। डबल प्रिसिजन में 0.1 + 0.2 का परिणाम 0.30000000000000004 है, जो संग्रहीत 0.3 से ठीक ऊपर का मान है।
ठीक संग्रहीत मान और लिखी गई संख्या में क्या फर्क है?
लिखी गई संख्या वह दशमलव है जो आपने लिखा। ठीक संग्रहीत मान वह बाइनरी संख्या है जिसे फ़ॉर्मेट सचमुच रखता है, पूरा लिखा हुआ। राउंडिंग त्रुटि उन दोनों का फर्क है, इसलिए आप देख सकते हैं कि वे कितनी दूर हैं।
ulp का मतलब क्या है?
ulp आखिरी स्थान की इकाई है: एक संग्रहीत मान और उसी बाइनेड (दो की एक ही घात की सीमा) में अगले मान के बीच का अंतर। निकटतम मान तक गोल करने की त्रुटि आधे ulp से ज्यादा कभी नहीं होती, और पेज त्रुटि को संख्या में और ulps में दोनों तरह दिखाता है।
सिंगल प्रिसिजन में 1e39 Infinity क्यों बन जाता है?
सिंगल प्रिसिजन का सबसे बड़ा मान लगभग 3.4028235 × 10^38 है। जो संख्या उससे आगे गोल होती है, उसका कोई परिमित संग्रहीत मान नहीं होता, इसलिए फ़ॉर्मेट Infinity लेता है, और पेज परिणाम को बहुत बड़ा चिह्नित करता है।
क्या NaN कोई जानकारी रख सकता है?
हाँ। NaN के फ़्रैक्शन बिट उसके मान के लिए इस्तेमाल नहीं होते, इसलिए कोई प्रोग्राम वहाँ पेलोड रख सकता है। पेज NaN का फ़्रैक्शन उसके पेलोड के रूप में दिखाता है, और बताता है कि वह शांत है या संकेत देने वाला।
स्रोत
- IEEE 754 (IEEE Standards Association) (अंग्रेजी में)
- Wikipedia (अंग्रेजी में): IEEE 754
- Wikipedia (अंग्रेजी में): Single-precision floating-point format
- Wikipedia (अंग्रेजी में): Double-precision floating-point format
- Wikipedia (अंग्रेजी में): Half-precision floating-point format
आँकड़े और टेक्स्ट आखिरी बार बुधवार, 11 नवंबर 2026 को जाँचे गए।