2012-06-06 12 views
27

मैं फ्लोट्स और कंप्यूटर-प्रोसेस किए गए फ़्लोटिंग-पॉइंट ऑपरेशंस के बारे में बहुत कुछ पढ़ रहा हूं। उनके बारे में पढ़ते समय सबसे बड़ा सवाल यह है कि वे इतने गलत क्यों हैं? मैं समझता हूं क्योंकि यह बाइनरी सभी वास्तविक संख्याओं का सटीक रूप से प्रतिनिधित्व नहीं कर सकता है, इसलिए संख्याएं 'सर्वश्रेष्ठ' अनुमान के लिए गोल की जाती हैं।बाइनरी, फ्लोट्स और आधुनिक कंप्यूटर

मेरा सवाल यह है कि, यह जानकर, हम अभी भी कंप्यूटर परिचालन के लिए आधार के रूप में बाइनरी का उपयोग क्यों करते हैं? निश्चित रूप से 2 से अधिक बड़े बेस नंबर का उपयोग करके फ्लोटिंग-पॉइंट ऑपरेशंस की सटीकता में तेजी आएगी, है ना?

किसी अन्य आधार के विपरीत कंप्यूटर के लिए बाइनरी संख्या प्रणाली का उपयोग करने के क्या फायदे हैं, और इसका एक और आधार कभी भी प्रयास किया गया है? या यह भी संभव है?

+11

क्योंकि एक स्विच केवल चालू या बंद हो सकता है, और कंप्यूटर वास्तव में छोटे स्विच का एक गुच्छा है। – CBredlow

+0

वास्तव में इसका अध्ययन किया गया है और इसमें कुछ सैद्धांतिक फायदे हैं। उदाहरण के लिए आप "बहु-मूल्यवान तर्क सर्किट" देखना चाहेंगे। – Bart

+15

दशमलव भी असुरक्षित है - उदाहरण के लिए आप 1/3 दशमलव के रूप में प्रस्तुत नहीं कर सकते हैं। – Vladimir

उत्तर

23

कंप्यूटर ट्रांजिस्टर पर बनाए जाते हैं, जिनके पास "स्विच" राज्य होता है, और एक "स्विच ऑफ" राज्य होता है। यह उच्च और निम्न वोल्टेज के अनुरूप है। इस बाइनरी फैशन में बहुत सारे डिजिटल एकीकृत सर्किट काम करते हैं।

इस तथ्य को अनदेखा करते हुए कि ट्रांजिस्टर बस एक अलग आधार (उदा। बेस 3) का उपयोग करके इस तरह से काम करते हैं, इन सर्किटों को इंटरमीडिएट वोल्टेज स्टेट (या कई) के साथ-साथ 0 वी और उनके उच्चतम ऑपरेटिंग वोल्टेज पर काम करने की आवश्यकता होगी। यह अधिक जटिल है, और परिणामस्वरूप उच्च आवृत्तियों पर समस्या हो सकती है - आप कैसे बता सकते हैं कि सिग्नल केवल 2V और 0V के बीच या वास्तव में 1V के बीच संक्रमण हो रहा है या नहीं?

जब हम फ़्लोटिंग पॉइंट लेवल पर उतर जाते हैं, तो हम (जैसे उनके उत्तर में उल्हाहित उल्लेख करते हैं) संख्याओं की एक अनंत स्थान को एक सीमित स्टोरेज स्पेस पर मैप करते हैं। यह एक पूर्ण गारंटी है कि हम कुछ सटीकता खो देंगे। हालांकि, आईईईई फ्लोट का एक फायदा यह है कि परिशुद्धता मूल्य की परिमाण के सापेक्ष है।

अपडेट: आपको Tunguska, एक टर्नरी कंप्यूटर एमुलेटर भी देखना चाहिए। यह बेस -2 के बजाय बेस -3 का उपयोग करता है, जो कुछ रोचक (यद्यपि दिमागी झुकाव) अवधारणाओं के लिए बनाता है।

+0

तो, सैद्धांतिक रूप से, अगर हम इन वोल्टेज के बीच सटीक रूप से अंतर करने का कोई तरीका ढूंढ सकते हैं, तो यह संभव/फायदेमंद होगा? –

+2

संभावित रूप से, लेकिन यह इसके साथ विद्युत इंजीनियरिंग समस्याओं की एक पूरी श्रृंखला लाता है। डिजिटल सिग्नल अनिवार्य रूप से एसी वोल्टेज स्रोत हैं, जो शारीरिक रूप से स्थानीय लाइनों से विद्युत चुम्बकीय हस्तक्षेप से प्रभावित होते हैं। उस बोर्ड पर सभी तांबा जो उच्च आवृत्ति डिजिटल सिग्नल के माध्यम से जा रहा है वह अनिवार्य रूप से एक पैच एंटीना है। कई वोल्टेज स्तर होने से विचलन और स्पाइक्स से निपटने के लिए और अधिक दर्दनाक होता है। – Polynomial

+3

हमें बहु-जीएचजेड सिस्टम में 1 और 0 के बीच के अंतर का पता लगाने में पहले से ही कठिनाई है (यही कारण है कि आपको ओवरक्लॉक प्रोसेसर को ओवरवॉल्ट करना होगा), जिससे भेद कम स्पष्ट समस्या को बढ़ाता है। क्वांटम और फोटॉन-आधारित कंप्यूटर * भविष्य में इन मुद्दों से हमें दूर ले जा सकते हैं, लेकिन अभी के लिए हम पारंपरिक बाइनरी ट्रांजिस्टर से चिपके रहेंगे। – Polynomial

1

मैं ईई नहीं हूं, इसलिए जो कुछ भी मैं नीचे कहता हूं वह पूरी तरह से गलत हो सकता है। लेकिन ...

बाइनरी का लाभ यह है कि यह वास्तविक सर्किट में चालू/बंद (या अधिक सटीक, उच्च/निम्न वोल्टेज) राज्यों के बीच अंतर करने के लिए बहुत साफ रूप से मानचित्र करता है। कई वोल्टेज के बीच अंतर करने की कोशिश कर रहा है, मुझे लगता है कि एक चुनौती का थोड़ा और अधिक प्रस्तुत करना होगा।

क्वांटम कंप्यूटर इसे प्रयोगशाला से बाहर कर देता है तो यह खिड़की से पूरी तरह से बाहर जा सकता है।

11

हम अनिवार्य रूप से वास्तविक संख्या के अनंत सेट पर एक सीमित स्थान मैप कर रहे हैं। तो यह वैसे भी आधार की समस्या भी नहीं है।

आधार 2 चुना गया है, जैसे पॉलिनोमियल ने कार्यान्वयन कारण के लिए कहा है, क्योंकि ऊर्जा के 2 स्तरों को अलग करना आसान है।

हम या तो अधिक संख्या/सटीकता बढ़ाने के लिए अधिक जगह फेंकते हैं, या उस सीमा को सीमित करते हैं जिसे हम एन्कोड करना चाहते हैं, या उनमें से एक मिश्रण।

3

हां, ऐसे कंप्यूटर हैं जो बाइनरी के अलावा उपयोग करते हैं (यानी, बेस 2 प्रस्तुतियों और अंकगणितीय के अलावा): Decimal computers

कंप्यूटिंग सिस्टम के डिजाइनरों ने कई विकल्पों को देखा है। लेकिन एक मॉडल को खोजना मुश्किल है जो एक भौतिक उपकरण में दो अलग-अलग राज्यों का उपयोग करके लागू करना आसान है। तो एक बाइनरी सर्किट से शुरू करें जो जटिल संचालन के साथ कंप्यूटर पर निर्माण और काम करने के लिए बहुत आसान और सस्ता है। संक्षेप में बाइनरी का इतिहास यही है।

1

गणितीय वास्तविक संख्याओं का प्रतिनिधित्व करने के लिए बाइनरी फ़्लोटिंग-पॉइंट संख्याओं के उपयोग से उत्पन्न होने वाले 2 मुद्दे हैं - ठीक है, शायद बहुत अधिक समस्याएं हैं, लेकिन 2 समय के लिए पर्याप्त है।

  1. सभी कंप्यूटर संख्या सीमित हैं, इसलिए किसी भी संख्या है जो एक अंक की अनंत संख्या सही रूप में एक कंप्यूटर, जो कुछ भी संख्या के आधार पर चुना जाता है पर नहीं दर्शाया जा सकता की आवश्यकता है। तो यह पीआई, ई, और अन्य वास्तविक संख्याओं से संबंधित है।
  2. जो भी आधार चुना जाता है, उसे कुछ अंशों का प्रतिनिधित्व करने में कठिनाइयों का सामना करना पड़ेगा। बेस 2 केवल किसी भी अंश को अनुमानित में 3 के कारक के साथ अनुमानित कर सकता है, लेकिन बेस 5 या बेस 7 भी करता है।

पिछले कुछ वर्षों में 2 से अधिक राज्यों वाले उपकरणों पर आधारित सर्किटरी वाले कंप्यूटर बनाए गए हैं। पुराने सोवियत संघ ने 3-राज्य उपकरणों वाले कंप्यूटरों की एक श्रृंखला विकसित की और कम से कम एक अमेरिकी कंप्यूटर निर्माता ने एक बार गणित के लिए 10-राज्य उपकरणों का उपयोग करके कंप्यूटर की पेशकश की।

मुझे संदेह है कि द्विआधारी प्रतिनिधित्व (अब तक) जीता है क्योंकि यह मौजूदा इलेक्ट्रॉनिक उपकरणों के बारे में कारण और कार्यान्वित करने के लिए सरल है।

6

आपका पहला पैराग्राफ समझ में आता है लेकिन दूसरा एक गैर-अनुक्रमक है। एक बड़ा आधार परिशुद्धता में कोई फर्क नहीं पड़ता है।

किसी संख्या का सटीक उस भंडारण की मात्रा पर निर्भर करता है जो इसके लिए उपयोग किया जाता है - उदाहरण के लिए एक 16 बिट बाइनरी संख्या में 2 x 256 आधार संख्या के समान सटीकता होती है - दोनों एक ही मात्रा में जानकारी लेते हैं।

अधिक जानकारी के लिए Usual floating point reference. देखें - और यह सभी अड्डों के लिए सामान्यीकृत है।

हाँ कंप्यूटर अन्य ठिकानों का उपयोग कर बनाया गया है - मैं जो कि आधार 10 (दशमलव) सीएफ wikipaedia

-2

मैं न तो एक बिजली इंजीनियर है और न ही एक गणितज्ञ का उपयोग के बारे में पता है, तो ले कि ध्यान में जब मैं बनाने के निम्नलिखित कथन:

सभी फ़्लोटिंग पॉइंट संख्याओं को पूर्णांक के रूप में दर्शाया जा सकता है।

+1

पूर्णांक में पीआई का प्रतिनिधित्व करें। – nhahtdh

+0

'3'->' 1415926 ... ' – user1438003

+1

और बाद वाला एक अनंत पूर्णांक है, जिसे संभवतः अपने पूर्ण परिशुद्धता में संग्रहीत नहीं किया जा सकता है, भले ही आपने ब्रह्मांड में प्रत्येक कण पर एक अंक एन्कोड किया हो। – Polynomial

37

सबसे पहले: आप कहें, आधार 100 का उपयोग करते समय भी सभी वास्तविक संख्याओं का प्रतिनिधित्व नहीं कर सकते हैं। लेकिन आप इसे पहले ही जानते हैं। वैसे भी, इसका मतलब है: 'सभी वास्तविक संख्याओं का प्रतिनिधित्व करने में सक्षम नहीं होने' के कारण गलतता हमेशा उत्पन्न होगी। उच्चतर ठिकानों वास्तव में परिशुद्धता के संदर्भ में 'कुछ भी नहीं' लाने:

अब बात करते हैं के बारे में "? क्या उच्च ठिकानों जब गणित कर रही है आप के लिए ला सकता है" सुविधा देता है। क्यूं कर?

यदि आप आधार 4 का उपयोग करना चाहते हैं, तो 16 अंकों का बेस 4 नंबर बिल्कुल 4 विभिन्न मान प्रदान करता है।

लेकिन अगर आप एक 32 अंकों का आधार 2 नंबर (2 = 4) से विभिन्न मूल्यों की एक ही नंबर मिल सकता है।

जैसा कि एक और जवाब पहले से ही कहा गया है: ट्रांजिस्टर या तो चालू या बंद हो सकते हैं।तो आपके नए डिज़ाइन किए गए बेस 4 रजिस्टरों को (बेस 2) चालू/बंद 'बिट्स' पर एक अमूर्त होना चाहिए। इसका मतलब है: आधार 4 अंक का प्रतिनिधित्व करने के लिए दो 'बिट्स' का उपयोग करें। लेकिन आप अभी भी एन 'बिट्स' (या एन/2 बेस -4 अंक) खर्च करके वास्तव में 2 एन स्तर प्राप्त करेंगे। आप अधिक बिट्स खर्च करके केवल को बढ़ाकर बेहतर सटीकता प्राप्त कर सकते हैं। आप किस आधार पर 'कल्पना/अमूर्त' हैं, जैसे कि printf बेस -10 में इन बेस -2 नंबरों को प्रिंट कर सकते हैं) वास्तव में केवल अमूर्तता का मामला है और परिशुद्धता नहीं है।

0

मैं वोट देता हूं कि हम एक तर्कसंगत संख्या प्रणाली भंडारण में जाते हैं। दो 32 बिट इंटरजेर्स जो पी/क्यू के रूप में मूल्यांकन करेंगे। गुणा और विभाजन वास्तव में सस्ते संचालन होगा। हाँ वहां अनावश्यक मूल्यांकन संख्याएं (1/2 = 2/4) होंगी, लेकिन वास्तव में 64 बिट डबल की पूर्ण गतिशील रेंज का उपयोग कौन करता है।

+0

यह गति को गति कैसे बढ़ाएगा? प्रत्येक गुणा दो गुणा हो जाता है (अब दोनों संख्यात्मक और denominator गुणा किया जाना चाहिए, स्वतंत्र रूप से हालांकि, तो वे समानांतर में किया जा सकता है)। प्रत्येक विभाजन भी दो गुणा (जो मैं स्वीकार करता हूं, आमतौर पर एक विभाजन से थोड़ा बेहतर होता है) बन जाता है। साथ ही, जब भी आप गुणा या विभाजित करते हैं, तो आपको अतिप्रवाह और समायोजन की जांच करने की आवश्यकता होती है। जैसे अगर मैंने किया ((((1/2) * 2)/2) * 2) .. और इसी तरह, कुछ बार, आखिरकार, संख्यात्मक और denominator दोनों बह जाएगा। एक नियमित बाइनरी फ्लोट में यह समस्या नहीं होगी क्योंकि 1/2 बिल्कुल प्रतिनिधित्व योग्य है। – ArjunShankar

+0

और अतिरिक्त/घटाव एक दुःस्वप्न बन जाता है। संख्याओं को जोड़ने से पहले न केवल आपको denominators को बराबर करने की आवश्यकता है, आपको भी हस्ताक्षर की देखभाल करने की आवश्यकता है। – ArjunShankar

+0

फिर भी, यह एक दिलचस्प विचार है! – ArjunShankar

6

यह उपलब्ध चिप क्षेत्र से अधिकतर प्राप्त करने के लिए उबलता है।

यदि आप संख्याओं का प्रतिनिधित्व करने के लिए स्विच चालू/बंद करते हैं, तो आप आधार -2 प्रतिनिधित्व के मुकाबले प्रति स्विच अधिक सटीकता प्राप्त नहीं कर सकते हैं। यह केवल इसलिए है क्योंकि एन स्विच 2^एन मात्राओं का प्रतिनिधित्व कर सकते हैं इससे कोई फर्क नहीं पड़ता कि आप इन मानों को चुनते हैं। प्रारंभिक मशीनें थीं जो आधार 16 फ्लोटिंग पॉइंट अंकों का उपयोग करती थीं, लेकिन इनमें से प्रत्येक को 4 बाइनरी बिट्स की आवश्यकता होती थी, इसलिए प्रति बिट समग्र सटीकता आधार 2 के समान थी (वास्तव में किनारे के मामलों के कारण कुछ हद तक कम)।

यदि आप एक आधार चुनते हैं जो 2 की शक्ति नहीं है, तो सटीकता स्पष्ट रूप से खो जाती है। उदाहरण के लिए आपको एक दशमलव अंक का प्रतिनिधित्व करने के लिए 4 बिट्स की आवश्यकता है, लेकिन उन 4 बिट्स के उपलब्ध मूल्यों में से 6 का कभी भी उपयोग नहीं किया जाता है। इस प्रणाली को बाइनरी-कोडेड दशमलव कहा जाता है और यह आमतौर पर मौसमी रूप से उपयोग किया जाता है, आमतौर पर जब पैसे के साथ गणना करता है।

मल्टी-स्तरीय तर्क अन्य अड्डों को कुशलतापूर्वक कार्यान्वित कर सकता है, लेकिन कम से कम वर्तमान चिप प्रौद्योगिकियों के साथ, यह 2 से अधिक स्तरों को लागू करने के लिए बहुत महंगा हो जाता है। यहां तक ​​कि क्वांटम कंप्यूटर भी दो क्वांटम स्तर मानते हैं: क्वांटम बिट्स या क्विट्स।

दुनिया और गणित की प्रकृति फ़्लोटिंग पॉइंट स्थिति निराशाजनक बनाती है। असली संख्याओं का एक पदानुक्रम इंटीजर -> तर्कसंगत -> बीजगणितीय -> परिशिष्ट। एक अद्भुत गणितीय सबूत है, कैंटोर विकर्णकरण, कि अधिकांश संख्या, यानी अन्य सेटों की तुलना में "बड़ा अनंतता", पारस्परिक हैं। फिर भी कोई फर्क नहीं पड़ता कि आप किस फ़्लोटिंग पॉइंट सिस्टम को चुनते हैं, फिर भी तर्कसंगत संख्याएं बिना किसी पूर्ण प्रतिनिधित्व के (यानी आधार 10 में 1/3) होंगी। यह हमारा ब्रह्मांड है। चालाक हार्डवेयर डिजाइन की कोई मात्रा इसे बदल नहीं जाएगी।

सॉफ़्टवेयर पूर्णांक के रूप में एक संख्यात्मक और denominator संग्रह, तर्कसंगत प्रतिनिधित्व का उपयोग और कर सकते हैं। हालांकि इनके साथ आपके प्रोग्रामर के हाथ बंधे हैं। उदाहरण के लिए, वर्ग रूट "बंद" नहीं है। वर्ग (2) में कोई तर्कसंगत प्रतिनिधित्व नहीं है।

बीजगणितीय संख्या प्रतिनिधि और मनमानी वास्तविकताओं के "आलसी" प्रतिनिधि के साथ शोध किया गया है जो आवश्यकतानुसार अधिक अंक उत्पन्न करते हैं। इस प्रकार का अधिकांश काम कम्प्यूटेशनल ज्यामिति में प्रतीत होता है।

संबंधित मुद्दे