2012-04-11 24 views
29

मैं, एक सी किताब पढ़ रहा हूँ चल बिन्दु की सीमाओं के बारे में बात, लेखक तालिका दिया:सी में फ्लोटिंग पॉइंट डेटाटाइप की रेंज?

enter image description here

मैं नहीं जानता, जहां कॉलम सबसे छोटा सकारात्मक और सबसे बड़ा मान से आते हैं में संख्या।

+4

वे फ़्लोटिंग-पॉइंट प्रकार की सीमा से आते हैं। –

+9

सही लेकिन बेकार जवाब "आईईईई 754" होगा। –

+2

क्या आपका मतलब है कि उन मूल्यों की सीमाएं क्यों हैं? – SirGuy

उत्तर

18

ये संख्याएं IEEE-754 मानक से आती हैं, जो फ़्लोटिंग पॉइंट नंबरों के मानक प्रतिनिधित्व को परिभाषित करती है। लिंक explains पर विकिपीडिया लेख, इन श्रेणियों पर पहुंचने के लिए संकेतों, मंटिसा और एक्सपोनेंट के लिए उपयोग की जाने वाली बिट्स की संख्या को जानना।

1

उदाहरण के लिए आईईईई 754 में, इस प्रकार के एक्सपोनेंट हिस्से के आकार का परिणाम है। आप FLT_MAX, FLT_MIN, DBL_MAX, DBL_MIN के साथ flat.h में आकारों की जांच कर सकते हैं।

+0

के लिए बहुत उपयोगी सवाल यह मैक्रोज़ सी मानक मैक्रोज़ हैं? मैं क्यों पूछ रहा हूं INT_MAX और INT_MIN सीमाओं में उपलब्ध हैं। एच। –

+0

वे सीमाओं में उपलब्ध नहीं प्रतीत होते हैं। एच – MightyPork

25

एक 32 बिट चल बिन्दु संख्या अपूर्णांश 23 + 1 बिट और एक 8 बिट प्रतिपादक (-126 127, हालांकि प्रयोग किया जाता है) तो सबसे बड़ी संख्या आप का प्रतिनिधित्व कर सकते है:

(1 + 1/2 + ... 1/(2^23)) * (2^127) = 
(2^23 + 2^23 + .... 1) * (2^(127 - 23)) = 
(2^24 - 1) * (2^104) ~= 3.4e38 
2

dasblinkenlight जैसा कि पहले ही उत्तर दिया, संख्याएं आईईईई -754 में फ़्लोटिंग पॉइंट नंबरों का प्रतिनिधित्व करने के तरीके से आती हैं, और एंड्रियास के गणित का अच्छा टूटना है।

हालांकि - सावधान रहें कि तालिका के सुझाव के अनुसार फ्लोटिंग पॉइंट नंबरों की सटीकता बिल्कुल 6 या 15 महत्वपूर्ण दशमलव अंक नहीं है, क्योंकि आईईईई -754 संख्याओं की सटीकता महत्वपूर्ण बाइनरी अंकों की संख्या पर निर्भर करती है। जो आधार संख्या का प्रतिनिधित्व किया परिशुद्धता के 6-8 दशमलव अंक के लिए अनुवाद पर -

  • float 24 महत्वपूर्ण बाइनरी अंकों है।

  • double में 53 महत्वपूर्ण बाइनरी अंक हैं, जो लगभग 15 दशमलव अंक हैं। यदि आप रुचि रखते हैं

Another answer of mine आगे व्याख्या है।

1 बिट: हस्ताक्षर बिट

8 बिट: प्रतिपादक पी

6

में कुल 32 बिट होने संख्या जो इस तरह आवंटित किए जाते हैं प्रतिनिधित्व करने के लिए से आते हैं नाव डेटा प्रकार के लिए मान 23 बिट्स: अपूर्णांश

प्रतिपादक p + BIAS जहां पूर्वाग्रह 127 के रूप में संग्रहीत किया जाता है, अपूर्णांश 23 बिट और एक 24 वीं छिपा हुआ सा माना जाता है कि है 1. इस छिपा सा है सबसे महत्वपूर्ण बिट (MSB) अपूर्णांश की और ई xponent को चुना जाना चाहिए ताकि यह 1.

इसका मतलब है कि आप सबसे छोटी संख्या का प्रतिनिधित्व कर सकते हैं 01000000000000000000000000000000 जो 1x2^-126 = 1.17549435E-38 है।

सबसे बड़ा मूल्य 011111111111111111111111111111111 है, मंटिसा 2 * (1 - 1/65536) है और एक्सपोनेंट 127 है जो (1 - 1/65536) * 2^128 = 3.40277175E38 देता है।

इसी सिद्धांत बिट्स को छोड़कर डबल परिशुद्धता के लिए लागू कर रहे हैं:

1 बिट: हस्ताक्षर बिट

11 बिट्स: प्रतिपादक बिट्स

52 बिट्स: अपूर्णांश बिट्स

पूर्वाग्रह: 1023

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