दिलचस्प पोस्ट
त्रुटि LNK2038: '_MSC_VER' के लिए बेमेल पता चला: मान '1600' CppFile1.obj में मान '1700' से मेल नहीं खाती जीमेल एसएमटीपी को कोडिगनिटर ईमेल लाइब्रेरी के साथ ईमेल भेजना आप रिमोट गीट शाखा कैसे बनाते हैं? सी से शानदार रूप से C ++ को कॉल करें रूबी में मैं लैटिन लैटिन वर्णों की जगह कैसे बदलूं? VB.Net में प्रत्येक फॉर्म का क्यों एक डिफ़ॉल्ट उदाहरण है, लेकिन सी # में नहीं है? यूनिकोड \ u2026 को python2.7 में एक स्ट्रिंग में वर्णों की तरह निकाल रहा है Std :: ostream के लिए फ़्लोटिंग पॉइंट फ़ॉर्मेट जावा हीप आकार को स्थायी रूप से बढ़ाएं? उनमें से एक पर प्राथमिकता देने के दो मानों के आधार पर क्रमबद्ध करें JPanel और घटकों को बदलने की स्थिति स्वचालित रूप से ग्राफ़ में प्लॉट सहसंबंध मैट्रिक्स फ्लोट से दोगुने तेज का उपयोग कर रहा है? PHP, MySQL डाटाबेस में कई चेकबॉक्स और टेक्स्टबॉक्स सरणी डालने एंड्रॉइड स्टूडियो में ओपनसीवी

फ़्लोटिंग पॉइंट अंकगणित और दशमलव में 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) आम नहीं है