दिलचस्प पोस्ट
एक "git निर्यात" (जैसे "svn निर्यात") करें? बाहरी स्कोप में परिभाषित नाम कितना बुरा है? एक्शन बार नेविगेशन मोड को एंड्रॉइड एल में पदावनत किया गया है क्या पहले पूरे रिपॉजिटरी को चेक किए बिना विरल चेक करना संभव है? पृष्ठ दिखाना बंद करें हाइबरनेट मानदंड एपीआई से एसक्यूएल कैसे प्राप्त करें (लॉगिंग के लिए * * नहीं) मैं CSS के साथ पृष्ठ में किसी अन्य तत्व की स्थिति के आधार पर एक तत्व का चयन कैसे करूं? प्रगति बार के साथ फ़ाइल प्रतिलिपि JSON सांकेतिक शब्दों में बदलना MySQL परिणाम सीएलआर-परिभाषित विधियों जैसे कहां हैं। बिनइनवॉक दस्तावेज? कस्टम JSON deserializer जीएसएन का उपयोग कर IPhone वेब अनुप्रयोग में स्क्रॉल करना अक्षम करें? Homebrew के लिए PATH को कैसे संशोधित करें? सी # 4 समर्थन एक्सटेंशन विधियों में गतिशील कीवर्ड क्या होगा? लिनक्स में फ़ाइल एक्सटेंशन / माइम प्रकार पंजीकृत करें

फ़्लोटिंग पॉइंट अंकगणित और दशमलव में 0.1 का प्रतिनिधित्व कैसे करें

मैं अस्थायी बिंदु अंकगणितीय को बेहतर समझने की कोशिश कर रहा हूं और 'हर कंप्यूटर वैज्ञानिक को फ़्लोटिंग पॉइंट अंकगणित के बारे में पता होना चाहिए' के ​​कुछ लिंक देखे हैं।

मैं अभी भी नहीं समझता कि एक संख्या जैसे कि 0.1 या 0.5 को तैरता है और दशमलव के रूप में।

क्या कोई कृपया इसकी व्याख्या कर सकता है कि स्मृति कैसे रखी गई है?

मैं फ्लोट के दो हिस्से होने के बारे में जानता हूं (यानी, कुछ की शक्ति के लिए एक नंबर)

वेब के समाधान से एकत्रित समाधान "फ़्लोटिंग पॉइंट अंकगणित और दशमलव में 0.1 का प्रतिनिधित्व कैसे करें"

मैंने हमेशा लोगों को हार्ल्ड श्मिट के ऑनलाइन कनवर्टर की ओर इशारा किया है , साथ में अपनी अच्छी तस्वीरों के साथ विकिपीडिया आईईईई 754-19 85 लेख के साथ।

उन दो विशिष्ट मानों के लिए, आपको (0.1 के लिए) मिलता है:

 s eeeeeeee mmmmmmmmmmmmmmmmmmmmmmm 1/n 0 01111011 10011001100110011001101 | || || || || || +- 8388608 | || || || || |+--- 2097152 | || || || || +---- 1048576 | || || || |+------- 131072 | || || || +-------- 65536 | || || |+----------- 8192 | || || +------------ 4096 | || |+--------------- 512 | || +---------------- 256 | |+------------------- 32 | +-------------------- 16 +----------------------- 2 

यह संकेत सकारात्मक है, यह बहुत आसान है

एक्सपोनेंट 64+32+16+8+2+1 = 123 - 127 bias = -4 , इसलिए गुणक 2 -4 या 1/16

मंटिसा चंकी है। यह 1 (अंतर्निहित आधार) प्लस ( 1/(2 n ) मूल्य के साथ उन सभी बिट्स के लिए होते हैं, जैसे n 1 से शुरू होता है और दाएं से बढ़ता है), {1/2, 1/16, 1/32, 1/256, 1/512, 1/4096, 1/8192, 1/65536, 1/131072, 1/1048576, 1/2097152, 1/8388608}

जब आप इन सभी को जोड़ते हैं, तो आपको 1.60000002384185791015625 मिलता है।

जब गुणक द्वारा आप गुणा करते हैं, तो आप 0.100000001490116119384765625 प्राप्त करते हैं, यही वजह है कि वे कहते हैं कि आप वास्तव में एक आईईईईई 754 फ्लोट के रूप में 0.1 प्रतिनिधित्व नहीं कर सकते, और एसओ पर लोगों का जवाब देने के लिए इतना अवसर प्रदान करता है "why doesn't 0.1 + 0.1 + 0.1 == 0.3?" प्रकार के प्रश्न 🙂


0.5 उदाहरण काफी हद तक आसान है। इसे इस रूप में दर्शाया गया है:

 s eeeeeeee mmmmmmmmmmmmmmmmmmmmmmm 0 01111110 00000000000000000000000 

जिसका अर्थ है कि यह निहित आधार है, 1 , प्लस अन्य कोई अन्य additives (सभी mantissa बिट्स शून्य हैं)।

संकेत फिर सकारात्मक है एक्सपोनेंट 64+32+16+8+4+2 = 126 - 127 bias = -1 । इसलिए गुणक 2 -1 जो 1/2 या 0.5

तो अंतिम मूल्य 1 गुणा 0.5 या 0.5 गुणा किया जाता है। देखा!


मुझे दशमलव के संदर्भ में कभी-कभी इसके बारे में सोचना आसान लगता है

संख्या 1.345 के बराबर है

 1 + 3/10 + 4/100 + 5/1000 

या:

  -1 -2 -3 1 + 3*10 + 4*10 + 5*10 

इसी प्रकार, दशमलव 0.8125 लिए IEEE754 प्रतिनिधित्व है:

 s eeeeeeee mmmmmmmmmmmmmmmmmmmmmmm 0 01111110 10100000000000000000000 

1 के निहित आधार के साथ, यह द्विआधारी के बराबर है:

  01111110-01111111 1.101 * 2 

या:

  -1 (1 + 1/2 + 1/8) * 2 (no 1/4 since that bit is 0) 

जो बन जाता है:

 (8/8 + 4/8 + 1/8) * 1/2 

और फिर हो जाता है:

 13/8 * 1/2 = 0.8125 

विकिपीडिया प्रविष्टि और आईईईई समूह को देखें , पहले।

असल में, वहाँ एक संकेत, एक संख्या, और एक exponent है एक आधार में एक नंबर दूसरे आधार पर पूर्ण रूप से नहीं दिखाया जा सकता है यदि स्रोत आधार में गंतव्य आधार पर कारक मौजूद नहीं हैं। उदाहरण के लिए, 1/3 का एक परिमित दशमलव संख्या के रूप में प्रतिनिधित्व नहीं किया जा सकता है, लेकिन त्रिभुज (बेस -3) संख्या के रूप में प्रतिनिधित्व करने के लिए तुच्छ है: (0.1) 3

तो 0.5 में एक परिमित बाइनरी प्रस्तुति है, (0.1) 2 , वह है, 2 -1 , लेकिन 0.1 में दोहराए जाने वाले प्रतिनिधित्व हैं क्योंकि 2 और 10 में एक कारक (5) आम नहीं है