क्यों फ़्लोटिंग पॉइंट प्रतिनिधित्व नकारात्मक संख्या को इंगित करने के लिए 2 के पूरक के बजाय साइन बिट का उपयोग करता है


20

एक निश्चित बिंदु प्रतिनिधित्व पर विचार करें जिसे एक अस्थायी संख्या के पतित मामले के रूप में माना जा सकता है। नकारात्मक संख्याओं के लिए 2 के पूरक का उपयोग करना पूरी तरह से संभव है। लेकिन फ्लोटिंग पॉइंट नंबरों के लिए एक साइन बिट क्यों आवश्यक है, क्या मंटिसा बिट्स 2 के पूरक का उपयोग नहीं करना चाहिए?

इसके अलावा, प्रतिपादक बिट्स एक हस्ताक्षरित-परिमाण प्रतिनिधित्व (मोंटिसा बिट्स के समान) या 2 के पूरक प्रतिनिधित्व के बजाय पूर्वाग्रह का उपयोग क्यों करते हैं?

अद्यतन: क्षमा करें, अगर मैंने इसे स्पष्ट नहीं किया। मैं इस बात की तलाश कर रहा था कि फ्लोटिंग पॉइंट प्रतिनिधित्व कैसे किया जाता है। यदि विकल्पों के बीच कोई मजबूत कार्यान्वयन व्यापार-बंद नहीं है, तो क्या कोई फ़्लोटिंग पॉइंट प्रतिनिधित्व के ऐतिहासिक पहलुओं की व्याख्या कर सकता है?

जवाबों:


7

दो के पूरक समझ में आता है जब प्रश्न में दो संस्थाओं की समान "इकाइयां" और समान "चौड़ाई" होती हैं। चौड़ाई से मेरा मतलब है कि, यदि आप एक एन बिट संख्या और एक एम बिट संख्या जोड़ रहे हैं, जहां एन और एम अलग हैं, तो आप बेहतर दो पूरक का उपयोग नहीं करते हैं। फ़्लोटिंग पॉइंट नंबरों के लिए, हमारे पास इकाइयों की समस्या है: यदि घातांक अलग-अलग हैं, तो हम मानसिक रूप से किसी एक मंटिस को शिफ्ट कर रहे हैं, और अब हम पहले की तरह (चौड़ाई के साथ) एक ही समस्या में हैं।

प्रतिपादक बिट्स के लिए, साइन + परिमाण के बजाय पूर्वाग्रह का उपयोग करके हम एक और अधिक मूल्य प्राप्त करते हैं (अन्यथा हमारे पास +0 और -0 होगा)। यहां संख्याओं को गुणा या विभाजित करते समय दो-पूरक का अर्थ समझ में आता है (तब से हम घातांक जोड़ या घटा रहे हैं), लेकिन जोड़ते या घटाते समय उतनी समझ नहीं है।

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


4
"यदि आप एक एन बिट संख्या और एम बिट संख्या जोड़ रहे हैं, जहां एन और एम अलग हैं, तो आप बेहतर दो पूरक का उपयोग नहीं करते हैं" - क्या आप थोड़ा स्पष्ट कर सकते हैं? मेरा मानना ​​है कि अपने MSB का उपयोग करके 2 के पूरक प्रतिनिधित्व का उपयोग करते हुए एक संख्या पर हस्ताक्षर करना पूरी तरह से संभव है, उदाहरण के लिए 4'b1111 5'b11111, और 4'b0111 -> 5'b00111 तक विस्तारित होगा। क्या इसे फ्लोटिंग पॉइंट अंकगणितीय तर्क के भीतर मौजूदा बैरल शिफ्टर में जोड़ना सीधा नहीं होना चाहिए?
कू

आपके उत्तर के लिए धन्यवाद! मैंने प्रश्न को संपादित किया है, इसलिए यह इस बारे में अधिक स्पष्ट रूप से पूछता है कि वर्तमान फ्लोटिंग बिंदु क्या है।
कू

4

विकिपीडिया से:

दो-पूरक प्रणाली का लाभ यह है कि इसके अतिरिक्त, अंकन, और गुणन के मौलिक अंकगणितीय ऑपरेशन अहस्ताक्षरित बाइनरी नंबरों के लिए समान हैं ...

दो-पूरक नकारात्मक संख्याओं का एक प्रतिनिधित्व है जो कि बस इतना होता है कि बहुत सुविधाजनक हो। यही कारण है कि इसका उपयोग करने का पूरा कारण है।

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


4

लेकिन फ्लोटिंग पॉइंट नंबरों के लिए साइन बिट क्यों आवश्यक है

मिथ्या धारणा। यह आवश्यक नहीं है। मुझे पूरा यकीन है कि मुझे फ्लोटिंग पॉइंट फॉर्मेट मिले हैं, जो मंटिसा के लिए 2 के पूरक थे, लेकिन मुझे नामों के लिए खुदाई करनी होगी।

मैं संख्यात्मक विश्लेषण के विशेषज्ञ होने से बहुत दूर हूं, लेकिन मुझे लगता है कि शून्य पर हस्ताक्षर करना उनके लिए महत्वपूर्ण है। शायद लोगों के पूरक की तुलना में हेरफेर करना आसान है। यह शायद IEEE-754 के चुनाव में एक मापदंड था।

इसके अलावा, प्रतिपादक बिट्स एक हस्ताक्षरित-परिमाण प्रतिनिधित्व के बजाय पूर्वाग्रह का उपयोग क्यों करते हैं

फिर इसकी जरूरत नहीं है और कुछ ने अलग तरीके से काम किया है।

यह वह प्रतिनिधित्व है जिसके लिए एक हार्डवेयर कार्यान्वयन करना आसान है जो कि संचालन के सेट के लिए किया जाता है जो घातांक पर किया जाता है (और यहां -0 के लिए प्रतिनिधित्व नहीं है)।

उस पसंद का एक परिणाम यह है कि आप एफपी नंबर की तुलना करने के लिए हस्ताक्षरित पूर्णांक तुलना का उपयोग कर सकते हैं यदि आप NaN के बारे में परवाह नहीं करते हैं, जो शायद कुछ के लिए एक मानदंड था (NaN की तुलना में तथ्य विशेष हैंडलिंग की आवश्यकता है मुझे संदेह है कि यह नहीं था IEEE-754 के लिए)।


हस्ताक्षर किए गए पूर्णांक तुलना नकारात्मक FP संख्या को पीछे की ओर रैंक करेगी। उनके लिए ठीक से रैंक करने के लिए, किसी प्रकार का पूरक प्रारूप आवश्यक होगा, जिसमें लोगों का पूरक संभवतः सबसे अच्छा (नकारात्मक एक होगा ... 110.1111 ..., बाएं और दाएं के लिए अनंत वाले )।
सुपरकैट

3
MIL-STD-1750A संभवतः सबसे व्यापक रूप से इस्तेमाल किया जाने वाला प्रोसेसर आर्किटेक्चर है जो दो के पूरक फ्लोटिंग-पॉइंट प्रतिनिधित्व को निर्दिष्ट करता है। धारा 4.1 में: "निर्देश सेट 16-बिट फिक्स्ड पॉइंट सिंगल प्रिसिजन, 32-बिट फिक्स्ड पॉइंट डबल प्रिसिजन, 32-बिट फ़्लोटिंग पॉइंट और 48-बिट फ़्लोटिंग पॉइंट एक्सटेंडेड डेटा को 2 के सप्लीमेंट प्रतिनिधित्व में सपोर्ट करेगा " (मेरा)। ।
njuffa

2

IEEE 754 साइन / परिमाण का उपयोग करता है, न कि दो का पूरक या किसी का पूरक।

दो के पूरक का नुकसान यह है कि सकारात्मक और नकारात्मक सीमा समान नहीं हैं। यदि सभी बिट पैटर्न मान्य हैं, तो आपके पास संख्या x है जहां आप आसानी से -x की गणना नहीं कर सकते हैं। यह बुरी बात है। विकल्प यह है कि अमान्य बिट पैटर्न हैं, जो खराब भी है। IEEE 754 में 64 या 32 बिट फ़्लोटिंग पॉइंट के लिए कोई अमान्य बिट पैटर्न नहीं हैं, इसलिए आपको इसके बारे में चिंता करने की आवश्यकता नहीं है।

एक के पूरक को अधिक जटिल / विभाजित किया जाएगा (हस्ताक्षरित परिमाण के साथ, आप सिर्फ संकेत देते हैं और मंटिसा को एक अहस्ताक्षरित संख्या के रूप में मानते हैं)। जोड़ने और घटाने के लिए, मैं वास्तव में किसी के पूरक में जोड़ना और घटाना नहीं सोचना चाहता, इससे मेरे सिर में चोट लगती है।


इस उत्तर के पहले पैराग्राफ से पता चलता है कि हस्ताक्षर / परिमाण में कोई कमियां नहीं हैं। साइन / परिमाण में दो के पूरक की तुलना में +/- 0 और अधिक जटिल अंकगणित है।
प्रिक्सोलिटिक

+/- शून्य होने में एक समस्या और एक विशेषता दोनों है। उदाहरण के लिए, एक छोटी संख्या x को 10 ^ 100 से विभाजित करने से +0 या -0 मिलेगा, जिससे x का चिन्ह संरक्षित होगा।
gnasher729 13

1

ज़ीरो पर हस्ताक्षर करने से अभिव्यक्तता बढ़ती है जो संख्यात्मक अभिकलन में उपयोगी हो सकती है। विकिपीडिया पृष्ठ ' हस्ताक्षरित शून्य ' कहता है:

यह दावा किया जाता है कि IEEE 754 में हस्ताक्षरित शून्य को शामिल करने से कुछ महत्वपूर्ण समस्याओं में संख्यात्मक सटीकता प्राप्त करना बहुत आसान हो जाता है , विशेष रूप से जब जटिल प्राथमिक कार्यों के साथ गणना की जाती है

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


1

मुझे लगता है कि यह समझना महत्वपूर्ण है कि फ्लोटिंग-पॉइंट गणना अनुमानित मान पैदा करती है, सटीक मान नहीं । यही है, अगर एक फ्लोटिंग-पॉइंट गणना एक एन्कोडेड मान X उत्पन्न करता है, तो यह एक सैद्धांतिक रूप से आदर्श मूल्य का प्रतिनिधित्व करता है जो लगभग निश्चित रूप से X नहीं है, लेकिन सीमा [X .. X + e) ​​{जहां 'e' है ' मशीन एप्सिलॉन ', यानी एक्स और एक्स + ई} के बीच कोई फ्लोटिंग-पॉइंट नंबर नहीं है। अधिक विशेष रूप से, एक फ्लोटिंग-पॉइंट शून्य एक आदर्श संख्या का प्रतिनिधित्व करता है जो संभवतः बिल्कुल शून्य नहीं है, लेकिन जो नॉनजेरो फ्लोटिंग-पॉइंट एन्कोडेड मूल्य के साथ प्रतिनिधित्व करने के लिए बहुत छोटा है।

यह देखते हुए कि साइन-एंड-मैग्नेटिट प्रतिनिधित्व का उपयोग एन्कोडिंग को 'याद' करने की अनुमति देने का एक तरीका है कि शून्य का कौन सा पक्ष आदर्श मूल्य पर है, सकारात्मक या नकारात्मक। यह कुछ जटिल में महत्वपूर्ण है ('a + bi' अर्थ में) गणना - जटिल-> जटिल कार्य अक्सर 'बहु-मूल्यवान' होते हैं, इसलिए उचित गणना के लिए 'शाखा कटौती' के स्थानों पर ध्यान देना महत्वपूर्ण है। साइन इन किया गया शून्य फिर एक अर्थ में इन शाखा कटौती के स्थानों को चिह्नित करता है - सकारात्मक पक्ष पर की गई गणना नकारात्मक पक्ष से अलग होगी।


1
फ्लोटिंग-पॉइंट गणना सटीक मान उत्पन्न करती है। वे उन मूल्यों से थोड़े अलग हैं जो गणितीय वास्तविक संख्याएं पैदा करते हैं। फ़्लोटिंग पॉइंट संख्या एक संख्या का प्रतिनिधित्व करती है, एक सीमा का नहीं।
gnasher729

0

अधिकांश फ्लोटिंग-पॉइंट प्रारूप इस तथ्य का लाभ उठाते हैं कि, बाइनरी सिस्टम में, गैर-न्यूनतम घातांक के साथ किसी भी गैर-शून्य मूल्य में "1" होगा जो कि मंटिसा का सबसे महत्वपूर्ण बिट है। इस प्रकार, मंटिसा के लिए 23-बिट क्षेत्र के साथ एक प्रणाली में, सकारात्मक संख्याओं के मंत्र 0 से 8,388,607 तक नहीं होते हैं, बल्कि 8,388,608 से 16,777,215 तक होते हैं। संख्याओं के मंत्र जो -16,777,215 से -8,388,608 और +8,388,608 से +16,777,215 तक सकारात्मक सीमा हो सकते हैं या नहीं हो सकते हैं। जबकि दो-पूरक सबसे अच्छा संख्यात्मक प्रारूप है, जब गणना "सुचारू रूप से" क्रॉस शून्य होना आवश्यक है, मंटिसा मूल्यों की असंतत श्रेणी का अर्थ है कि गणना शून्य के पार सुचारू रूप से संचालित करने में सक्षम नहीं होगी, चाहे वे दो-पूरक या कुछ और का उपयोग करें ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.