फिक्स्ड सूत्री प्रतिनिधित्व बाइनरी विकल्प
फ्लोटिंग प्वाइंट फिक्स्ड-प्वाइंट संख्याएं फिक्स्ड प्वाइंट नंबर एक निश्चित और आसान तरीका हैं जो फिक्स्डल संख्याओं को व्यक्त करते हैं, जो निश्चित बिट्स का उपयोग करते हैं। फ्लोटिंग-प्वाइंट हार्डवेयर सपोर्ट वाले सिस्टम फ़र्कल नंबरों का प्रतिनिधित्व करने के लिए अक्सर फिक्स्ड-पॉइंट नंबर का उपयोग करते हैं। (फ्लोटिंग पॉइंट हार्डवेयर समर्थन के बिना सिस्टम में हार्डवेयर की एक विस्तृत श्रृंखला शामिल है - उच्च अंत तय-बिंदु डीएसपी, एफपीजीए और महंगी कस्टम एएसआईसी जो स्ट्रीमिंग मीडिया को किसी भी अस्थायी बिंदु इकाई की तुलना में तेजी से प्रोसेस करते हैं जो कि अत्यंत कम-एंड माइक्रोकंट्रोलर )। फिक्स्ड-पॉइंट शब्द द्विआधारी बिंदु की स्थिति को दर्शाता है। द्विआधारी बिंदु दशमलव-दशमलव संख्या के दशमलव बिंदु के समान है, लेकिन चूंकि यह दशमलव के बजाय द्विआधारी है, एक अलग अवधि का उपयोग किया जाता है। द्विआधारी में, बिट्स या तो 0 या 1 हो सकते हैं और वहां निर्दिष्ट करने के लिए कोई अलग प्रतीक नहीं है जहां बाइनरी बिंदु स्थित है। हालांकि, हम कल्पना करते हैं, या मानते हैं, कि द्विआधारी बिंदु संख्या में निर्दिष्ट बीट्स के बीच एक निश्चित स्थान पर रहता है। उदाहरण के लिए, 32-बिट संख्या में, हम यह मान सकते हैं कि द्विआधारी बिंदु 15 बिट (15 के बीच में है क्योंकि पहले बिट को 0, न 1) और 16 के बीच मौजूद है, पूरे नंबर भाग और 16 बिट्स के लिए 16 बिट्स आंशिक भाग ध्यान दें कि पूरे नंबर फ़ील्ड में सबसे महत्वपूर्ण बिट को आम तौर पर पूरे नंबरों के लिए 15 बिट्स छोड़कर साइन बिट के रूप में निर्दिष्ट किया जाता है। चौड़ाई और प्रेसिजन संपादित करें निश्चित-बिंदु संख्या की चौड़ाई निश्चित बिंदु संख्या के लिए संग्रहण के लिए निर्दिष्ट बिट की कुल संख्या है। अगर हम अलग-अलग भंडारण स्थानों में संपूर्ण भाग और आंशिक भाग को संचित कर रहे हैं, तो चौड़ाई संख्या के लिए भंडारण की कुल राशि होगी। एक निश्चित बिंदु संख्या की सीमा संभवतः न्यूनतम संख्या के बीच का अंतर है, और अधिकतम संभव संख्या। संख्या के आंशिक भाग के लिए निश्चित बिंदु संख्या की सटीक संख्या बिट्स की संख्या है। चूंकि हम परिभाषित कर सकते हैं कि हम कहां तय बोनरी बिंदु स्थित होना चाहते हैं, तो सटीक नंबर की चौड़ाई और उससे भी अधिक संख्या हो सकती है। हालांकि ध्यान दें, हमारे पास जितनी अधिक सटीकता है, उतनी कम रेंज है, जो हमारे पास है। कई मानकों हैं, लेकिन इस पुस्तक में हम एक निश्चित बिंदु संख्या की चौड़ाई, शुद्धता के लिए पी और कुल रेंज के लिए आर का उपयोग करेंगे। सभी अंकों को निश्चित-बिंदु संख्या से ठीक से प्रदर्शित नहीं किया जा सकता है, और इसलिए निकटतम सन्निकटन का उपयोग किया जाता है। फ्लोट संख्या (x) के एक Qm. n प्रारूप में पूर्णांक प्रतिनिधित्व (एक्स) की गणना के लिए सूत्र है: इसे परिवर्तित करने के लिए निम्न सूत्र का उपयोग किया जाता है: Q3.4 प्रारूप में कुछ उदाहरण: बेतरतीब ढंग से चुनी गई फ़्लोट्स: कुछ उदाहरण (अत्यंत आम) 1 Q7.8 प्रारूप: क्योंकि द्विआधारी बिंदु की स्थिति पूरी तरह से वैचारिक है, फिक्स्ड-पॉइंट नंबरों को जोड़ना और घटाते समय तर्क को पूर्णांक जोड़ना और घटाना आवश्यक है। इस प्रकार, Q3.4 प्रारूप में आधे से अधिक एक आधा जोड़ते समय, हम यह देखना चाहते हैं: जो कि हम उम्मीद करते हैं, एक के बराबर है। यह घटाव के समान रूप से लागू होता है दूसरे शब्दों में, जब हम फिक्स्ड-पॉइंट नंबर जोड़ते हैं या घटाते हैं, तो राशि (या अंतर) में द्विआधारी बिंदु दो जगहों पर उसी स्थान पर स्थित होगा जहां पर हम काम कर रहे हैं। जब दो 8 बिट तय-बिंदु संख्याओं को गुणा करते हैं तो हमें उत्पाद को रखने के लिए 16 बिट्स की आवश्यकता होगी। जाहिर है, क्योंकि इनपुट के मुकाबले परिणाम में बिट्स के भिन्न संख्याएं हैं, बाइनरी बिंदु को स्थानांतरित करने की उम्मीद की जानी चाहिए। हालांकि, यह द्विआधारी में ठीक उसी प्रकार से काम करता है जैसा कि दशमलव में होता है जब हम दशमलव में दो नंबरों को गुणा करते हैं, दशमलव बिंदु का स्थान सही अंक के उत्पादों की बाईं ओर N अंक होता है, जहां N गुणांक में दशमलव बिंदु के दायीं ओर स्थित अंकों की संख्या का योग होता है और गुणांक । इस प्रकार, दशमलव में जब हम 0.2 गुना 0.02 गुणा करते हैं, तो हमें मिलती है: गुणक का दशमलव बिंदु के दाईं ओर एक अंक होता है, और गुणांक दशमलव बिंदु के दाईं ओर दो अंक होता है। इस प्रकार, उत्पाद में दशमलव अंक के दाईं ओर तीन अंक होते हैं (जो कहने के लिए है, दशमलव बिंदु बाईं ओर तीन अंक स्थित है)। यह बाइनरी में ही काम करता है उपर्युक्त अतिरिक्त उदाहरण से, हम जानते हैं कि क्यू 3.4 प्रारूप में नंबर एक आधे हेक्साडेसिमल में 0x8 के बराबर है। चूंकि 0x8 गुना 0x8 हेक्स में 0x0040 है (हेक्स में भी), निश्चित बिंदु के परिणाम भी 0x0040 होने की अपेक्षा की जा सकती हैं - जब तक हमें पता है कि बाइनरी बिंदु कहाँ स्थित है। द्विआधारी में उत्पाद लिखने की सुविधा देता है: चूंकि दोनों गुणक और गुणांक में द्विआधारी बिंदु के दायरे में चार बिट हैं, उत्पाद में बाइनरी बिंदु का स्थान बाईं तरफ आठ बिट है। इस प्रकार, हमारा उत्तर 00000000.01000000 है, जो कि जैसा हम उम्मीद करते हैं, एक तिमाही के बराबर है। अगर हम आउटपुट के प्रारूप को इनपुट के स्वरूप के समान मानना चाहते हैं, तो हमें अतिप्रवाह को रोकने के लिए इनपुट की सीमा को प्रतिबंधित करना होगा। Q7.8 से Q3.4 तक कन्वर्ट करने के लिए उत्पाद को सही 4 बिट्स से स्थानांतरित करना एक साधारण मामला है। फिक्स्ड-पॉइंट नंबर अक्सर एफआईआर और आईआईआर फिल्टर सहित डिजिटल फिल्टर में आंतरिक रूप से उपयोग किए जाते हैं। फिक्स्ड-बिन्दु संख्याओं का उपयोग कर एफआईआर और आईआईआर एल्गोरिदम के कार्यान्वयन के लिए कई व्यावहारिक विचार हैं। 2 3 कई एम्बेडेड सिस्टम जो साइन लहरों का उत्पादन करते हैं, जैसे कि डीटीएमएफ जेनरेटर, प्रोग्राम मेमोरी में एक साइन टेबल को स्टोर करते हैं। (इसका उपयोग गणितीय साइन () और कोसाइन () फ़ंक्शन के अनुमान के लिए किया जाता है)। चूंकि इस तरह के सिस्टम में अक्सर प्रोग्राम मेमोरी की बहुत सीमित मात्रा होती है, अक्सर फिक्स्ड-पॉइंट नंबर दो अलग-अलग तरीके से उपयोग किए जाते हैं जब ऐसी तालिकाओं का उपयोग किया जाता है: तालिकाओं में संग्रहित मान, और इन तालिकाओं में सूचकांक के लिए इस्तेमाल किए गए ब्रैड्स साइन तालिका में संग्रहीत मान सामान्यतया साइन और कोसाइन फ़ंक्शन का एक चतुर्थांश उस तालिका में संग्रहीत किया जाता है। आमतौर पर यह एक चतुर्थ संख्या है जहां उन कार्यों में 0 से 1 की सीमा में आउटपुट मान होते हैं। ऐसे तालिकाओं में मान आमतौर पर निर्धारित बिंदु संख्या के रूप में संग्रहीत होते हैं - अक्सर 16-बिट नंबर अहस्ताक्षरित Q0.16 स्वरूप या 8-बिट संख्या में अहस्ताक्षरित Q0.8 मान इस तथ्य को संभालने के दो लोकप्रिय तरीके हैं कि Q0.16 कैंट बिल्कुल 1.0 को संभाल नहीं सकता है, यह केवल 0 से (1.0-2-16) संख्याओं को संभालता है: (ए) सटीक दो की शक्ति (इस मामले में 216 ), अधिकांश अन्य निश्चित बिंदु प्रणालियों की तरह, और (क्लिप) मानों को उस बड़े मूल्य के रूप में संग्रहीत करने के लिए बहुत बड़े स्थान को बदलता है जो कि संग्रहीत किया जा सकता है: इसलिए 0 को 0 के रूप में दर्शाया गया है, 0.5 0x8000 के रूप में दर्शाया गया है, (1.0-2-16) के रूप में दर्शाया गया है 0xFFFF, और 1.0 काट दिया गया और इसे 0xFFFF के रूप में भी दर्शाया गया। 4 (बी) सबसे बड़ा संभव मान (इस मामले में 0xFFFF) से स्केल, इसलिए दोनों अधिकतम और न्यूनतम मूल्यों को ठीक से प्रस्तुत किया जा सकता है: इसलिए 0 को 0 के रूप में दर्शाया गया है, (1.0-2-16) 0xFFFE के रूप में दर्शाया गया है, और 1.0 बिल्कुल 0xFFFF के रूप में प्रतिनिधित्व 5 कुछ लोग काफी सटीक मंडल को आकर्षित करते हैं और बेज़ियर स्पलाइन के साथ काफी सटीक साइन और कोसाइन की गणना करते हैं। तालिका 8 मान एक एकल बीज़ियर वक्र का प्रतिनिधित्व करती है, जो एक सर्कल के 18 से लगभग 4 भागों की शुद्धता के लिए या एक सर्कल के 14 में एक हजार के लगभग 1 भाग की सटीकता के लिए अनुमानित होती है। 6 7 कई लोग मोड़ के संदर्भ में रोटेशन (जैसे एंगल्स) का प्रतिनिधित्व करना पसंद करते हैं। मुड़ता का पूर्णांक बताता है कि कितने सारे क्रांतियां हुई हैं मोड़ के आंशिक भाग, जब मानक पर हस्ताक्षर किए निश्चित-अंक अंकगणितीय का उपयोग करके 360 (या 1 2 8) गुणा किया जाता है, तो 180 डिग्री (- रेडियन) से 180 डिग्री (रेडियन) में एक वैध कोण देता है। कुछ मामलों में, यह द्विआधारी कोण पर अहस्ताक्षरित गुणा (हस्ताक्षरित गुणा के बजाय) का उपयोग करने के लिए सुविधाजनक है, जो 0 से 360 डिग्री (2 रेडियन) की सीमा में सही कोण देता है। मोड़ के एक निश्चित बिंदु बिंदु के रूप में कोणों को संगृहीत करने का मुख्य लाभ गति है। नई स्थिति प्राप्त करने के लिए कुछ सकारात्मक या नकारात्मक वृद्धिशील कोण के साथ कुछ मौजूदा स्थिति कोण का संयोजन बहुत धीमी गति से 8-बिट माइक्रोकंट्रोलर्स पर भी बहुत तेज है: यह एक पूर्णांक जोड़ता है, अतिप्रवाह को छोड़कर। भंडारण एंगल्स के लिए अन्य प्रारूपों को एक ही अतिरिक्त आवश्यकता होती है, साथ ही विशेष मामलों में 360 डिग्री या 0 डिग्री से कम होने के किनारे के मामलों को संभालना है। एक पूर्ण क्रांति देने के लिए एक पूर्ण क्रांति देने के लिए 360 डिग्री, या 2 रेडियन के रूप में किसी भी अन्य प्रारूप में कोणों को संग्रहीत करते हुए एक द्विआधारी कोण प्रारूप में कोणों को संचय करने की तुलना में - अनिवार्य रूप से उस सीमा के पार कोणों को देने वाले कुछ बिट पैटर्न में अनिवार्य रूप से परिणामस्वरूप, वांछित श्रेणी में मूल्य को कम करने के लिए अतिरिक्त कदमों की आवश्यकता है, या कुछ बिट पैटर्नों में परिणाम जो कि सभी (एएनएन) मान्य एंगल नहीं हैं, या दोनों मोड़ की इकाइयों में द्विआधारी कोण प्रारूप का उपयोग करने से हमें जल्दी (शिफ्ट-और-मास्क का उपयोग करके, गुणा से बचने की अनुमति देता है) बिट्स को अलग करता है: बिट्स जो पूर्णांक बदलते हैं (कोण की साइन की तलाश करते समय कुछ सिस्टम इन्हें संसाधित नहीं करते हैं पहली जगह में बिट्स) 2 बिट्स जो कि चतुर्भुज बिट्स का प्रतिनिधित्व करते हैं जो सीधे सूचकांक में दिखते हैं, तालिका में कम-क्रम बिट्स को एक से कम चरण सूचकांक तालिका में (चरण संचयक बिट्स, बिना कोण के साइन की खोज करते समय ध्यान दिए गए) प्रक्षेप) कम क्रम चरण बिट्स, प्रक्षेप के बिना भी, बेहतर आवृत्ति संकल्प प्रदान करता है। कुछ सिस्टम तालिका में मानों के बीच रैखिक रूप से समानांतर करने के लिए निम्न-आदेश बिट्स का उपयोग करते हैं। 12 यह आपको इस अतिरिक्त प्रक्षेप गणना पर कुछ चक्रों का त्याग करके एक छोटी सी मेज (प्रोग्रामिंग की बचत) का उपयोग करके अधिक सटीकता प्राप्त करने की अनुमति देता है क्यूबिक प्रक्षेप की गणना करने के लिए उन कम-आदेश बिट्स का उपयोग करने के लिए कुछ और चक्रों का त्याग करके कुछ सिस्टम एक छोटी सी तालिका का उपयोग करके और भी सटीकता प्राप्त करते हैं 4 शायद सबसे आम द्विआधारी कोण प्रारूप ब्रैड है। ब्रैड्स संपादित करें कई एम्बेडेड सिस्टम एक एकल बाइट बाइनरी कोण प्रारूप में कोण को बदलते हैं, मोड़ के आंशिक भाग को संग्रहीत करते हैं। 13 उस बाइट में मूल्य की व्याख्या करने के कई तरीके हैं, जिनमें से सभी का अर्थ (अधिक या कम) समान कोण है: ब्रैड की इकाइयों में एक कोण (बाइनरी रेडियन) 8 बिट अहस्ताक्षरित पूर्णांक के रूप में संग्रहीत, 0 से 255 ब्रैड्स तक 8 बिट हस्ताक्षरित पूर्णांक के रूप में संग्रहित ब्रैड की इकाइयों में कोण, घुमाने की इकाइयों में -128 से 127 ब्राड को एक कोण, अहस्ताक्षरित Q0.8 प्रारूप में एक आंशिक मोड़ के रूप में संग्रहीत किया जाता है, 0 से एक पूर्ण मोड़ के नीचे एक इकाई में मुड़ता है, हस्ताक्षरित Q0.7 () प्रारूप में एक आंशिक मोड़ के रूप में संग्रहीत, -12 से 12 पूर्ण मोड़ के नीचे एक पूर्ण मोड़ 14 256 ब्रैड 15 डिग्री 360 डिग्री है। अगर एक बाइट पर्याप्त सटीक नहीं होता है तो ब्रैड सिस्टम को आसानी से अधिक आंशिक बिट के साथ बढ़ाया जा सकता है - 65,536 प्रति मोड़ 16 बिट्स में दर्शाया जा सकता है 16 आगे पढ़ें संपादन 3.7। बाइनरी फिक्स्ड पॉइंट एक बाइनरी फिक्स्ड प्वाइंट सिस्टम एक अरबी अंक प्रणाली का एक और उदाहरण है। दशमलव से एकमात्र अंतर रेडिक्स है। बाइनरी 10 के बजाय 2 के रेडिक्स का उपयोग करता है। हम संख्या पर एक सबस्क्रिप्ट का उपयोग करके रेडिक्स (आधार) निर्दिष्ट करते हैं। अब से, हम 10 के आधार नहीं मानते। 1001.101 2 1 2 3 0 2 2 0 2 1 1 2 0 1 2 -1 2 2 2 1 2 -3 बायनरी पढ़ने का एक आसान तरीका बाएं काम करके है और सही द्विआधारी बिंदु से, प्रत्येक चरण में अंकों के मूल्य को दोगुनी या आधा करना: किसी भी अरबी सिस्टम में उपयोग किए गए अंक हमेशा 0 से लेकर रेडिक्स 1 तक होते हैं। बड़े अंकों का उपयोग करना एक से अधिक तरीकों से मूल्य का प्रतिनिधित्व करना संभव बनायेगा। उदाहरण के लिए, यदि द्विआधारी नियत बिन्दु अंक 2 का उपयोग करने की अनुमति देता है, तो संख्या दो को या तो 2 या 10 के रूप में प्रदर्शित किया जा सकता है। 3.7.1. बाइनरी के लिमिटेशन 110 से बाइनरी कन्वर्ट ऐसा किया जा सकता है: जैसे दशमलव में 13 का प्रतिनिधित्व करने की कोशिश करना। इसमें अंकों की अनंत संख्या की आवश्यकता होती है। मौद्रिक गणना के लिए यह एक समस्या है समाधान (बीसीडी, सेंट) होम कम्प्यूटर साइंस फिक्स्ड प्वाइंट और फ़्लोटिंग प्वाइंट संख्या प्रतिनिधियों को समझना फिक्स्ड प्वाइंट और फ़्लोटिंग प्वाइंट संख्या प्रतिनिधियों को समझना मेरे पिछले पोस्ट में हमने बुनियादी अवधारणाओं को सीखा है कि कैसे द्विआधारी को वास्तविक संख्या का प्रतिनिधित्व करने के लिए इस्तेमाल किया जा सकता है घटक)। जब इन नंबरों को संचय करने की बात आती है, तो आधुनिक कंप्यूटिंग में दो प्रमुख दृष्टिकोण हैं ये फिक्स्ड प्वाइंट नोटेशन और फ़्लोटिंग पॉइंट नोटेशन हैं। आज के पोस्ट में, हम अपने पृष्ठभूमि कंप्यूटर विज्ञान ज्ञान का निर्माण जारी रखते हैं और इन स्टोरेज स्वरूपों के विवरणों को देखें। जब हम डेटा प्रकार में आईओएस आवेदन के मौलिक बिल्डिंग ब्लॉक में डुबकी करते हैं, तो ये ज्ञान आगामी पोस्ट में उपयोगी होगा। जैसा कि मैंने मेरी पिछली पोस्ट में सीखा है, आंशिक द्विआधारी संख्या में दो भाग होते हैं, बिट्स जो पूर्णांक संख्या (रेडिक्स बिंदु से पहले का हिस्सा) का प्रतिनिधित्व करते हैं और बिट्स जो आंशिक भाग (रेडिक्स बिंदु के बाद भाग) का प्रतिनिधित्व करते हैं। इस बारे में सोचें क्या होगा अगर हमारे पास केवल सीमित संख्या में द्विआधारी बिट्स हैं जिसमें हमारे आंशिक द्विआधारी संख्या को स्टोर करना है यह कई आधुनिक कंप्यूटर सिस्टमों में आम है, हम कैसे जानते हैं कि कितने बिट्स पूर्णांक भाग के लिए उपयोग करते हैं और कितने बिट्स का उपयोग करें आंशिक भाग के लिए यह समस्या है कि दोनों फिक्स्ड प्वाइंट और फ़्लोटिंग प्वाइंट नोट्स प्रस्तुतियाँ हल करने का प्रयास करती हैं। प्रारंभ करने के लिए, फिक्स्ड पॉइंट नोटेशन पर एक नज़र डालें। यह दो प्रतिनिधित्वों में से एक सरल है निश्चित बिंदु प्रतिनिधित्व फिक्स्ड प्वाइंट नोटेशन हमारे आंशिक संख्या का एक प्रतिनिधित्व है क्योंकि यह स्मृति में संग्रहीत है। फिक्स्ड प्वाइंट नोटेशन में, संख्या को दो पारस्परिक प्रारूप में हस्ताक्षरित पूर्णांक के रूप में संग्रहित किया जाता है। इस के ऊपर, हम एक अनुमानीय विभाजन को लागू करते हैं, जो मूलभूत बिंदुओं (पूर्णांक और आंशिक भागों के बीच के विभाजक) का पता लगाने के लिए कम से कम महत्वपूर्ण बिट के दाईं ओर अपनी तार्किक शुरुआत की स्थिति के बाईं ओर एक निश्चित संख्या का पता लगाता है। Ive नीचे आरेख में इस सचित्र। जब हम स्मृति में संग्रहीत पूर्णांक के बिट्स की व्याख्या करते हैं, तो हम एक निश्चित स्केलिंग कारक द्वारा संग्रहीत पूर्णांक को गुणा करके रेडिक्स बिंदु को दोहराते हैं। द्विआधारी में स्केलिंग कारक हमेशा एक निश्चित एक्सपोनेंट के लिए 2 उठाया जाता है। जैसे कि स्केलिंग कारक 2 की शक्ति है, यह राईडिक्स बिन्दु को कुछ जगहों की जगह लेता है या इसकी प्रारंभिक स्थिति के दाईं ओर स्थित है इस रूपांतरण के दौरान तीन दिशाएं हैं जो कि रेडिक्स बिंदु को स्थानांतरित किया जा सकता है: रेडिक्स बिंदु को सही स्थान पर ले जाया जाता है: यह स्केलिंग कारक द्वारा दर्शाया गया है जिसका एक्सपोनेंट 1 या अधिक है इस मामले में अतिरिक्त शून्य को कम-महत्वपूर्ण बिट के दाईं ओर जोड़ दिया गया है और इसका अर्थ है कि वास्तविक संख्या का प्रतिनिधित्व किया जा रहा है बाइनरी पूर्णांक से बड़ा है जो कि संग्रहीत किया गया था। रेडिक्स बिंदु वह है, जहां यह है: यह एक स्केलिंग कारक द्वारा दर्शाया गया है जिसका एक्सपोनेंट 0 है और इसका अर्थ है कि पूर्णांक मान संग्रहीत पूर्णांक मान का प्रतिनिधित्व किया जा रहा है। रेडिक्स बिंदु को बाईं तरफ ले जाया गया है: यह स्केलिंग कारक द्वारा दर्शाया गया है जिसका एक्सपोनेंट ऋणात्मक है। इसका अर्थ है कि संख्या का प्रतिनिधित्व किया जा रहा संख्या पूर्णांक संख्या से छोटा है जिसे संग्रहीत किया गया था और इसका अर्थ है कि प्रतिनिधित्व की संख्या में एक अंश घटक होता है कुछ उदाहरणों पर एक नज़र डालें निश्चित बिंदु संख्या के उदाहरण मान लें कि हमारे पास 8-बिट हस्ताक्षरित बाइनरी संख्या 00011011 2 है जो 8-बिट स्टोरेज (इसलिए प्रमुख शून्य) का उपयोग करके स्मृति में संग्रहीत है। हमारे पहले परिदृश्य में, यह भी मान लें कि यह संख्या 2 2 के स्केल फ़ैक्टर के साथ हस्ताक्षरित नियत-बिंदु प्रतिनिधित्व के रूप में संग्रहीत किया गया था जैसा कि हमारे स्केल का कारक 1 से अधिक है, जब हम स्मृति में संग्रहीत बिट्स का अनुवाद करते हैं, तो हम वास्तव में प्रतिनिधित्व कर रहे हैं, हम रेडिक्स बिंदु को दो जगहों को सही स्थान पर ले जाते हैं। यह हमें नंबर प्रदान करता है: 1101100 2 (कम से कम महत्वपूर्ण बिट के दाईं ओर जोड़े गए अतिरिक्त शून्य नोट करें) हमारे दूसरे परिदृश्य में, मान लें कि हम स्मृति में एक ही द्विआधारी संख्या से शुरू करते हैं, लेकिन इस समय अच्छी तरह से मान लें कि इसे 2 -3 के स्केल फ़ैक्टर के साथ हस्ताक्षरित निश्चित-बिंदु प्रतिनिधित्व के रूप में संग्रहीत किया जाता है। जैसा एक्सपोनेंट ऋणात्मक है, हम त्रिज्या बिंदु को तीन स्थानों पर ले जाते हैं। यह हमें 00011 नंबर प्रदान करता है। 011 2 फिक्स्ड प्वाइंट प्रस्तुति के फायदे और नुकसान निश्चित बिंदु के प्रतिनिधित्व का उपयोग करने का प्रमुख लाभ प्रदर्शन है। चूंकि स्मृति में संग्रहीत मान एक पूर्णांक है, CPU कई अनुकूलन का लाभ उठा सकता है जो आधुनिक कंप्यूटरों को अतिरिक्त हार्डवेयर या सॉफ़्टवेयर लॉजिक पर भरोसा किए बिना पूर्णांक अंकगणितीय प्रदर्शन करना है। इसके बदले में प्रदर्शन में बढ़ोतरी होती है और आपके ऐप लिखते समय, आपके उपयोगकर्ताओं के लिए बेहतर अनुभव हो सकता है। हालांकि, एक डाउनसाइड निश्चित बिंदु प्रस्तुतियों के मूल्यों की एक अपेक्षाकृत सीमित सीमा होती है जो वे प्रतिनिधित्व कर सकते हैं। तो हम अधिकतम और न्यूनतम संख्याओं को कैसे काम करते हैं जो एक निश्चित बिंदु के प्रतिनिधित्व में संग्रहीत किए जा सकते हैं और यह निर्धारित करते हैं कि यह हमारी ज़रूरतों के लिए उपयुक्त है हम सभी को सबसे बड़ा और सबसे छोटा पूर्णांक मान लेते हैं जो दी गई संख्या में संग्रहीत किए जा सकते हैं। बिट्स और गुणा है कि हमारे निश्चित बिंदु के प्रतिनिधित्व के साथ जुड़े पैमाने कारक द्वारा। किसी दिए गए हस्ताक्षरित द्विआधारी संख्या के लिए, भंडारण के बी बिट्स का प्रयोग करके अधिकतम और न्यूनतम मूल्यों को संग्रहीत किया जा सकता है, जो कि अधिकतम और न्यूनतम मूल्यों को संग्रहीत किया जा सकता है: यदि वह संख्या जिसे आप प्रतिनिधित्व करना चाहते हैं तो इस सीमा में फिट हो तो चीजें बहुत अच्छी होती हैं यद्यपि यह संभव नहीं है, तो आपको एक विकल्प तलाशना होगा यह वह जगह है जहां फ़्लोटिंग प्वाइंट नोटेशन आता है। फ़्लोटिंग प्वाइंट नोटेशन फ्लोटिंग प्वाइंट नोटेशन फिक्स्ड पॉइंट नोटेशन का एक विकल्प है और यह दर्शाता है कि ज्यादातर आधुनिक कंप्यूटर स्मृति में आंशिक संख्याओं को संचित करते समय उपयोग करते हैं । फ़्लोटिंग प्वाइंट नोटेशन, बाइनरी में वैज्ञानिक संकेतन का उपयोग करके बहुत बड़ी या बहुत छोटी संख्या का प्रतिनिधित्व करने का एक तरीका है। ऐसा करने में, फ़्लोटिंग प्वाइंट प्रस्तुति आपके द्वारा उपयोग किए जा रहे संख्याओं के पैमाने के आधार पर एक अलग डिग्री सटीक प्रदान करती है। उदाहरण के लिए, जब हम परमाणुओं (10 -10 मीटर) के बीच की दूरी के बारे में बात करते हैं, तो सटीक स्तर की आवश्यकता होती है, हमें सटीकता से बहुत अलग है, जब हमें पृथ्वी और सूर्य (10 11 मीटर) के बीच की दूरी के बारे में बात करनी चाहिए। यह एक बड़ा लाभ है और फिक्स्ड प्वाइंट नोटेशन में जितना संभव है उससे अधिक संख्या में संख्याओं को प्रदर्शित किया जा सकता है। फ़्लोटिंग प्वाइंट प्रस्तुति वैज्ञानिक नोटेशन पर आधारित है। आपने स्कूल में वैज्ञानिक नोटेशन का इस्तेमाल किया हो सकता है जब हम दशमलव में वैज्ञानिक संकेतन का उपयोग करते हैं (जिस रूप में आप शायद सबसे अधिक परिचित हैं), तो हम निम्नलिखित रूपों में संख्याएं लिखते हैं: - मंथिसा एक्स 10 एक्सपोनेंट इस रूप में, यह संकेत करता है कि समग्र संख्या सकारात्मक या नकारात्मक है, इसका पालन किया गया है या नहीं एक मंटिसा (जिसे महत्त्व के रूप में भी जाना जाता है) जो एक वास्तविक (आंशिक) संख्या है, जो एक एक्सपोनेंट द्वारा उठाए गए नंबर बेस (या रेडिक्स) से गुणा किया जाता है। जैसा कि हम जानते हैं, दशमलव संख्या में यह 10 है। फ़्लोटिंग प्वाइंट प्रस्तुति अनिवार्य रूप से वैज्ञानिक नोटेशन द्विआधारी संख्या पर लागू होती है। बाइनरी में, केवल वास्तविक अंतर यह है कि संख्या आधार 10 के बजाय 2 है। इसलिए हम फ़्लोटिंग प्वाइंट संख्या निम्न रूप में लिखेंगे: - मंथिसा एक्स 2 एक्सपोनेंट अब, आपको इसका एहसास नहीं हो सकता है, लेकिन जब हम वैज्ञानिकों में संख्या लिखते हैं संकेतन (चाहे वह द्विआधारी या दशमलव हो) हम उन्हें कई अलग-अलग तरीकों से लिख सकते हैं। दशमलव में हम 1.5 x 10 2. 15 x 10 1 और 150 x 10 0 लिख सकते हैं और फिर भी ये सभी संख्याएं समान मूल्य हैं। यह लचीलापन प्रदान करता है लेकिन इस लचीलेपन के साथ ही भ्रम भी आता है। इस भ्रम की कोशिश और पता करने के लिए सामान्यीकृत वैज्ञानिक संकेतन के रूप में जाना जाता नियमों का एक आम सेट परिभाषित करने के लिए प्रयोग किया जाता है कि वैज्ञानिक संकेतन में संख्या सामान्य रूप से लिखी जाने वाली होती है। सामान्यीकृत वैज्ञानिक संकेतन सामान्यीकृत नोटिफिकेशन एक नामकरण है जो कि हम वैज्ञानिक संकेतन में संख्याओं को लिखते हैं। सामान्यीकृत रूप में हमारे पास एक महत्वपूर्ण नियम है: हम एक एक्सपोनेंट चुनते हैं ताकि मंटिसा का पूर्ण मूल्य 1 से अधिक या उसके बराबर हो लेकिन संख्या आधार से कम हो। कुछ उदाहरणों पर गौर करें यदि हमारे पास दशमलव संख्या 50010 है और इसे वैज्ञानिक संकेतन में लिखना है तो हम इसे 500 x 10 0 या 50 x 10 1 के रूप में लिख सकते हैं। सामान्यीकृत रूप में, हालांकि, हम ऊपर दिए गए नियम को लागू करेंगे और मूलांक बिंदु को स्थानांतरित करेंगे ताकि केवल 1 अंक के बराबर या 1 के बराबर और (इस मामले में) 10 अंक रेडियंस बिंदु के बाईं ओर हो। इस मामले में इसका मतलब होगा कि हमारे रेडिक्स बिंदु को दो जगहों को छोड़ दिया जाए ताकि हमारे पास 5.0 x 10 हो। तब हमें अपने एक्सपोनेंट को काम करने की आवश्यकता होगी। हमारे मूल नंबर पर वापस जाने के लिए हमें अपने रेडिक्स बिंदु को दो जगहों को दाईं ओर स्थानांतरित करने की आवश्यकता होगी। याद रखें कि हमने पहले क्या सीखा है यदि हमें अपने मूल अंक को वापस अपने मूल नंबर पर लाने के लिए हमारे त्रिज्या बिंदु को स्थानांतरित करना है जिसका मतलब है कि घातांक सकारात्मक है यह हमें देता है: 5.0 x 10 2 आइए थोड़ी अधिक जटिल उदाहरण देखें, बाइनरी में इस बार। क्या होगा अगर हमारे पास द्विआधारी संख्या 10.1 2 है यह वैज्ञानिक संकेतन में क्या होगा फिर भी हम नियमों को लागू करते हैं: हमें एक मंटिसा की आवश्यकता है जो 1 से अधिक या उसके बराबर है और हमारी संख्या आधार से कम है (जो इस समय 2 है)। इसका मतलब यह होगा कि हमारे मंटिसा को 1.01 x 2 होना चाहिए। हमारे मूल नंबर पर वापस जाने के लिए हमें अपने रेडिक्स बिंदु 1 स्थान को दाएं स्थानांतरित करने की आवश्यकता होगी। क्या सही मतलब है इसका मतलब है कि प्रतिपादक सकारात्मक है अंतिम उदाहरण इस समय थोड़ा और अधिक मुश्किल कल्पना कीजिए, मेरे पास नंबर 0.111 2 था और इसे सामान्यीकृत वैज्ञानिक संकेतन में लिखना चाहता था, फिर हम नियमों को लागू करते हैं। हमें 1 से बड़े या 1 के बराबर या बराबर की जरूरत है। इसका मतलब है कि हम अपने मैन्टिसा को 1.11 एक्स 2 के रूप में लिखना चाहते हैं। अब, हमारे मूल नंबर पर वापस जाने के लिए हमें अपने रेडिक्स बिंदु 1 स्थान को बाईं ओर ले जाना होगा । हम बाईं ओर जाने के बारे में क्या सीखते हैं इसका मतलब है कि हमारा प्रतिपादक नकारात्मक है यह हमें देता है: 1.11 x 2 -1 IEEE 754 प्रतिनिधित्व जैसा कि आपने संभवतः अब तक काम किया है, फ़्लोटिंग पॉइंट नंबर आधुनिक कंप्यूटिंग में हर जगह उपयोग किए जाते हैं। चाहे वह आईओएस के नवीनतम संस्करण में उन्नयन के बाजार का प्रतिशत हो, अंतरिक्ष में आपके आईफोन की वर्तमान स्थिति और अभिविन्यास या आपके नवीनतम बैंकबस्टर ऐप की रिहाई के बाद आपके बैंक खाते में बहती हुई धनराशि का कारण इसकी वजह से व्यापक उपयोग, स्मृति में फ़्लोटिंग प्वाइंट नंबर को स्टोर करने के लिए प्रयुक्त प्रारूप को आईईईई 754 नामक कुछ में इलेक्ट्रिकल और इलेक्ट्रॉनिक इंजीनियर्स संस्थान द्वारा मानकीकृत किया गया है। यह मानक कई अलग-अलग बाइनरी प्रस्तुतिकरणों को परिभाषित करता है जिनका प्रयोग स्मृति में फ्लोटिंग प्वाइंट नंबर को संग्रहीत करते समय किया जा सकता है: आधा प्रेसिजन 8211 कुल में 16-बिट संग्रहण का उपयोग करता है। एकल प्रेसिजन 8211 कुल में 32-बिट स्टोरेज का उपयोग करता है। डबल प्रेसिजन 8211 कुल में 64-बिट स्टोरेज का उपयोग करता है। चौगुनी प्रेसिजन 8211 कुल में 128-बिट स्टोरेज का उपयोग करता है। इन मामलों में से प्रत्येक में, उनकी मूल संरचना निम्नानुसार है: (-1) sign x mantissa x 2 एक्सपोनेंट जब मेमोरी में फ़्लोटिंग प्वाइंट संख्या को संग्रहीत करने की बात आती है, तो उस मूल संरचना के केवल तीन महत्वपूर्ण हिस्सों को जमा किया जाता है: नीचे दिया गया चित्र इन्हें दिखाता है भागों को स्मृति में जमा किया जाता है: जैसा कि मैंने ऊपर संकेत दिया था, आईईईई 754 मानक में परिभाषित सभी चार द्विआधारी अभ्यावेदनों में, हस्ताक्षर बिट के रूप में सबसे महत्वपूर्ण बिट है और समग्र संख्या के संकेत को संग्रहित करने के लिए उसका उपयोग करें पिछले पोस्ट में हमने जो कुछ देखा है, उसी तरह इसी तरह, यदि संकेत बिट स्पष्ट है (0 का मान) तो समग्र संख्या सकारात्मक है यदि बिट सेट है (1 का मान) तो संख्या नकारात्मक है एक्सपोनेंट उस शक्ति का प्रतिनिधित्व करता है जिसमें मंथिसा उठाया जाएगा। स्मृति में फ्लोटिंग प्वाइंट प्रस्तुतीकरण करते समय तथा बीट्स की सटीक संख्या को विशेष रूप से आईईईई 754 प्रतिनिधित्व (एकल प्रेसिजन, डबल प्रेसिजन इत्यादि) द्वारा परिभाषित करते समय एक निश्चित संख्या में एक्सपोनेंट बिट्स होते हैं। अच्छी तरह से इस पर एक नज़र रखना शीघ्र ही। सभी मामलों में, इन अभ्यावेदनों में मौजूद प्रतिपादकों को सकारात्मक प्रदर्शनियों (बहुत बड़ी संख्या में प्रतिनिधित्व करने के लिए) और नकारात्मक एक्सपोनेंट (बहुत छोटी संख्या का प्रतिनिधित्व करने के क्रम में) दोनों का प्रतिनिधित्व करने में सक्षम होना चाहिए। एक्सओनेन्ट्स को दो रूप पूरक प्रारूप में स्टोर करने की जटिलताओं से बचने के लिए, एक एक्सपोएंन्ट बायस नामक कुछ वस्तु का प्रयोग किया जाता है। एक्सपोनेंट बीआईएस एक्सपोनेंट बायस वह है जहां एक्सपोनेंट के लिए संग्रहीत मान पूर्वाग्रह से वास्तविक एक्सपोनेंट मान से ऑफसेट होता है। पूर्वाग्रह केवल एक संख्या है जो यह सुनिश्चित करने के लिए प्रतिपादक में जोड़ा जाता है कि जो संग्रहीत मूल्य हमेशा सकारात्मक होता है नीचे दी गई तालिका प्रत्येक प्रारूप में एक्सपोनेंट के लिए इस्तेमाल की गई बिट्स की संख्या को दर्शाती है, पूर्वाग्रहों को लागू करने के बाद अनुमत मूल्यों के साथ पूर्वाग्रहों को लागू करने से पहले विभिन्न प्रतिपादकों के मूल्यों की अनुमत सीमा होती है: इन प्रारूपों के अलावा, आईईईई 754 मानक में कई संख्यात्मक प्रतीकों को भी परिभाषित किया जाता है जो इसके बारे में भी जानना लायक है अच्छी तरह से अगले अनुभाग में संक्षिप्त इन एक्सप्लोर करें शून्य का प्रतिनिधित्व करने वाले विशेष मूल्य जैसा कि हमने देखा है, जब फ्लोटिंग प्वाइंट में संख्या का प्रतिनिधित्व करते हुए और उन्हें स्मृति में संग्रहीत करते हैं, तो हम रेडिक्स बिंदु से पहले अंतर्निहित सेट बिट को छोड़ने से पहले एक सामान्यीकृत रूप में हमारे नंबर लिखते हैं। जब मेमोरी की संख्या की व्याख्या की जाती है, तो निहित बिट को पुनः स्थापित किया जाता है यह अंतर्निहित धारणा है कि रेडिक्स बिंदु के बाईं ओर तुरंत बिट 1 के कारण समस्याएं उत्पन्न होती है हालांकि। यदि हम शून्य का प्रतिनिधित्व करना चाहते हैं, तो उस समस्या को हल करने के लिए, आईईईई 754 मानक एक विशेष मामले के रूप में शून्य को परिभाषित करता है और इसे 0 के एक एक्सपोनेंट और 0 का एक मांटिसा का उपयोग करके दर्शाता है। साइन बिट के कारण अभी भी उपलब्ध है, यह मूल्यों की ओर जाता है की -0 और 0 मानक परिभाषित करता है कि उन्हें समान के रूप में तुलना करना चाहिए। Denormalized प्रपत्र आईईईई 754 एक denormalized रूप में संख्याओं के प्रतिनिधित्व की अनुमति देता है। यदि एक्सपोनेंट में बिट्स सभी शून्य हैं लेकिन मंटिसा गैर-शून्य मान है, तो यह संख्या एक denormalized रूप में संग्रहित होने के लिए कहा जाता है। इस मामले में, जब मेमोरी की संख्या की व्याख्या की जाती है, तो धारणा है कि रेडिक्स बिंदु के बाईं ओर एक बिट सेट है फिर से ध्यान नहीं दिया जाता है। यह रूप में संख्याओं की ओर जाता है: जहां पर हस्ताक्षर होता है और च मंटिसा का आंशिक भाग होता है। आईईईई मानक भी अनंत का प्रतिनिधित्व करने के लिए एक तंत्र को परिभाषित करता है इन्फिनिटी का प्रतिनिधित्व सभी बिट्स सेट के साथ एक एक्सपोनेंट द्वारा किया जाता है और सभी बिट्स के साथ एक मंटिसा को साफ़ किया जाता है। फिर, हस्ताक्षर बिट प्रभाव में रहता है जो अनन्तता और - infinity की अवधारणा की ओर जाता है। नहीं एक नंबर (एनएएन) आईईईई मानक में ब्याज की अंतिम बात यह है कि एक नंबर (एनएएन) की अवधारणा नहीं है इसका उपयोग किसी संख्या का प्रतिनिधित्व करने के लिए किया जाता है जो वास्तविक संख्या नहीं है। यह सभी बीट्स सेट और एक गैर-शून्य मैंटिसा के साथ एक एक्सपोनेंट द्वारा स्मृति में दर्शाया गया है। अधिकतर आप इसे अपने कंपाइलर द्वारा रिपोर्ट करेंगे, आमतौर पर जब आप शून्य से कुछ को विभाजित करने की कोशिश करेंगे विशेष मूल्यों का सारांश सारांश में, नीचे दी गई तालिका में एक्सपोनेंट और मैन्टिसा के विभिन्न मूल्यों और विशेष मूल्यों को दर्शाया गया है जो आईईईई 754 मानक द्वारा परिभाषित के रूप में प्रतिनिधित्व किया जा रहा है: फिक्स्ड प्वाइंट संख्या प्रतिनिधित्व का परिचय वास्तविक जीवन में, हम वास्तविक संख्याएं - आंशिक भाग के साथ संख्याएं अधिकांश आधुनिक कंप्यूटर में फ्लोटिंग प्वाइंट नंबर के लिए देशी (हार्डवेयर) का समर्थन है। हालांकि, फ्लोटिंग पॉइंट का उपयोग आंशिक संख्याओं का प्रतिनिधित्व करने का एकमात्र तरीका नहीं है। यह आलेख वास्तविक संख्याओं के निर्धारित बिंदु प्रतिनिधित्व का वर्णन करता है। निश्चित संकेत डेटा प्रकार का उपयोग डिजिटल सिग्नल प्रोसेसिंग (डीएसपी) और गेम एप्लीकेशंस में व्यापक रूप से किया जाता है, जहां प्रदर्शन सटीक से कभी कभी अधिक महत्वपूर्ण होता है। जैसा कि हम बाद में देखेंगे, फिक्स्ड प्वाइंट अंकगणित फ्लोटिंग प्वाइंट अंकगणितीय से बहुत तेज है। याद रखें कि एक द्विआधारी संख्या: मान का प्रतिनिधित्व करता है: 1 2 5 1 2 4 0 2 3 1 2 2 0 2 1 1 2 0 अब, यदि हम संख्या 53 द्वारा 2 विभाजित करते हैं, तो हम जानते हैं कि परिणाम 26.5 होना चाहिए। हालांकि, हम इसका प्रतिनिधित्व कैसे करते हैं यदि हमारे पास पूर्णांक अभ्यावेदन होता है, तो आंशिक संख्याओं का प्रतिनिधित्व करने की कुंजी, जैसे ऊपर 26.5, द्विआधारी बिंदु की अवधारणा है एक द्विआधारी बिंदु एक दशमलव प्रणाली में दशमलव बिंदु की तरह है। यह एक संख्या के पूर्णांक और आंशिक भाग के बीच विभक्त के रूप में कार्य करता है। दशमलव प्रणाली में, दशमलव बिंदु अंक में स्थिति को दर्शाता है कि गुणांक 10 0 1 से गुणा होना चाहिए। उदाहरण के लिए, 26.5 अंक में, गुणांक 6 का वजन 10 0 1 होता है। लेकिन 5 से दशमलव बिंदु का अधिकार हम अपने अनुभव से जानते हैं, कि इसका वजन 10 -1 है। हमें पता है कि संख्या quot; 26.5 कोट शून्य से चौथी संख्या और एक आधा किलो का प्रतिनिधित्व करता है क्योंकि 2 10 1 6 10 0 5 10 -1 26.5 दशमलव बिन्दु की इसी अवधारणा को हमारे द्विआधारी प्रतिनिधित्व पर लागू किया जा सकता है, दशमलव प्रणाली की तरह, एक द्विआधारी बिंदु शब्द 2 0 के गुणांक को दर्शाता है 1. बाइनरी बिंदु के बाईं ओर सभी अंक (या बिट्स) 2 0 2 के वजन में है। 2 2. और इसी तरह। बाइनरी बिंदु के दाईं ओर अंक (या बिट्स) में 2 -1 का वजन होता है 2 -2 2 -3 और इसी तरह। उदाहरण के लिए, संख्या: मान का प्रतिनिधित्व करता है: अब, वर्ग में याद करते हैं, हम 1 बिट की स्थिति से सही करने के लिए एक पूर्णांक को स्थानांतरित करने की चर्चा करते हैं, 2 की संख्या को विभाजित करने के बराबर होती है। पूर्णांक के मामले में, क्योंकि हमारे पास आंशिक भाग नहीं है , हम बस एक बाइनरी बिंदु के दाईं ओर अंक का प्रतिनिधित्व नहीं कर सकते हैं, जिससे यह स्थानांतरण प्रक्रिया एक पूर्णांक प्रभाग बनती है। हालांकि, यह बाइनरी संख्या के पूर्णांक अभ्यावेदन की एक सीमा है। सामान्य तौर पर, गणितीय रूप से, एक निश्चित द्विआधारी बिंदु की स्थिति दी जाती है, 1 बिट के द्वारा किसी संख्या के बिट पैटर्न को एक बिट में स्थानांतरित करके हमेशा 2 की संख्या विभाजित करती है। इसी प्रकार, 1 बिट के द्वारा बाईं ओर संख्या को स्थानांतरित करके संख्या 2 से गुणा करती है। ऊपर की ओर स्थानांतरण प्रक्रिया निर्धारित बिंदु संख्या प्रतिनिधित्व को समझने की कुंजी है। कंप्यूटर्स (या सामान्य रूप से किसी भी हार्डवेयर में) में असली संख्या का प्रतिनिधित्व करने के लिए, हम एक निश्चित बिंदु संख्या प्रकार को परिभाषित कर सकते हैं बस एक अंक के कुछ स्थान पर होने के लिए बाइनरी बिंदु को फिक्स करने के द्वारा। जब हम संख्याओं का प्रतिनिधित्व करते हैं तो हम केवल इस अंतर्निहित सम्मेलन का पालन करेंगे। एक निर्धारित बिंदु प्रकार को अवधारणात्मक रूप से परिभाषित करने के लिए, हमें दो मापदंडों की आवश्यकता है: नंबर प्रस्तुति की चौड़ाई और संख्या के भीतर बाइनरी बिंदु की स्थिति हम इस लेख के बाकी हिस्सों के लिए नोटिफिकेशन फिक्शनलटीव, बीजीटी का उपयोग करेंगे, जहां w बिट्स की संख्या को दर्शाता है संपूर्ण (एक संख्या की चौड़ाई) के रूप में उपयोग किया जाता है, और बी न्यूनतम बिंदु से द्विआधारी बिंदु की गणना की स्थिति को दर्शाता है (0 से गिनती) उदाहरण के लिए, fixedlt8,3gt एक 8-बिट नियत बिंदु संख्या को दर्शाता है, जिसमें से 3 सबसे अधिक बिट्स आंशिक हैं। इसलिए, बिट पैटर्न: इस तालिका को देखते हुए, हम आसानी से महसूस कर सकते हैं कि हम बीट पैटर्न 1-1 1 1 कोट के साथ नंबर -2.5 का प्रतिनिधित्व कर सकते हैं, यदि हम मान लें कि बाइनरी पॉइंट 1 स्थिति है। अब तक, आपको यह दिखाना चाहिए कि नियत बिन्दु संख्या वास्तव में पूर्णांक प्रतिनिधित्व के निकट एक करीबी रिश्तेदार दोनों ही द्विआधारी बिंदु की स्थिति में अलग है वास्तव में, आप पूर्णांक प्रतिनिधित्व को नियत बिन्दु संख्याओं की एक क्वाटस्पेस केसक्वाट के रूप में भी विचार कर सकते हैं, जहां बाइनरी पॉइंट स्थिति 0 पर है। पूर्णांक पर एक कंप्यूटर काम कर सकता है सभी अंकगणितीय क्रियाओं को भी निश्चित बिंदु संख्या पर भी लागू किया जा सकता है। इसलिए, फिक्स्ड पॉइंट अंकगणित का लाभ यह है कि वे कम्प्यूटरों में अंकगणित के रूप में सीधे-आगे और कुशल हैं। हम पूर्णांक अंकगणित के लिए निर्मित सभी हार्डवेयर का पुन: उपयोग कर सकते हैं ताकि फिक्स्ड प्वाइंट प्रस्तुति का उपयोग करके वास्तविक संख्या अंकगणित किया जा सके। दूसरे शब्दों में, निश्चित बिंदु अंकगणित कंप्यूटर पर मुफ्त आता है। फिक्स्ड प्वाइंट नंबर का असर, फ़्लोटिंग प्वाइंट नंबर प्रस्तुतिकरणों के साथ तुलना करते समय सीमा और सटीकता के नुकसान की तुलना में ज़रूरी है। उदाहरण के लिए, एक fixedlt8,1gt प्रतिनिधित्व में, हमारे आंशिक भाग केवल 0.5 की मात्रा के लिए सटीक है। हम 0.75 जैसी संख्या का प्रतिनिधित्व नहीं कर सकते। हम fixedlt8,2gt के साथ 0.75 का प्रतिनिधित्व कर सकते हैं। लेकिन फिर हम पूर्णांक भाग पर ढीले रेंज। सी में तय बिंदु संख्या के लिए देशी क्वाटीप्पट नहीं है। However, due to the nature of fixed point representation, we simply dont need one. Recall all arithmetics on fixed point numbers are the same as integer, we can simply reuse the integer type int in C to perform fixed point arithmetic. The position of binary point only matters in cases when we print it on screen or perform arithmetic with different quottypequot (such as when adding int to fixedlt32,6gt ). Fixed point is a simple yet very powerful way to represent fractional numbers in computer. By reusing all integer arithmetic circuits of a computer, fixed point arithmetic is orders of magnitude faster than floating point arithmetic. This is the reason why it is being used in many game and DSP applications. On the other hand, it lacks the range and precision that floating point number representation offers. You, as a programmer or circuit designer, must do the tradeoff.
Comments
Post a Comment