फिक्स्ड-पॉइंट अंकगणित

From alpha
Jump to navigation Jump to search

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

निश्चित-बिंदु प्रतिनिधित्व में, अंश को अक्सर उसी मूलांक में पूर्णांक भाग के रूप में व्यक्त किया जाता है, लेकिन आधार 'बी' के नकारात्मक घातांक का उपयोग करते हुए। सबसे आम संस्करण दशमलव (आधार 10) और बाइनरी संख्या (आधार 2) हैं। उत्तरार्द्ध को आमतौर पर बाइनरी स्केलिंग के रूप में भी जाना जाता है। इस प्रकार, यदि n अंश अंक संग्रहीत हैं, तो मान हमेशा b का एक पूर्णांक एकाधिक (गणित) होगा-एन</सुप>. फिक्स्ड-पॉइंट प्रतिनिधित्व का उपयोग पूर्णांक मानों के निम्न-क्रम अंकों को छोड़ने के लिए भी किया जा सकता है, उदा। $1000 के गुणकों के रूप में बड़े डॉलर के मूल्यों का प्रतिनिधित्व करते समय।

जब मानव पढ़ने के लिए दशमलव निश्चित-बिंदु संख्याएँ प्रदर्शित की जाती हैं, तो अंश अंक आमतौर पर दशमलव विभाजक (आमतौर पर '।' अंग्रेजी में, लेकिन ',' या कई अन्य भाषाओं में कुछ अन्य प्रतीक) द्वारा पूर्णांक भाग से अलग किए जाते हैं। आंतरिक रूप से, हालांकि, कोई अलगाव नहीं है, और अंकों के दो समूहों के बीच का अंतर केवल उन प्रोग्रामों द्वारा परिभाषित किया जाता है जो ऐसी संख्याओं को संभालते हैं।

यांत्रिक कैलकुलेटर में फिक्स्ड-पॉइंट प्रतिनिधित्व आदर्श था। चूँकि अधिकांश आधुनिक सेंट्रल प्रोसेसिंग यूनिट में फ़ास्ट फ्लोटिंग-पॉइंट यूनिट (FPU) होता है, फ़िक्स्ड-पॉइंट रिप्रेजेंटेशन का उपयोग अब केवल विशेष स्थितियों में किया जाता है, जैसे कि कम लागत वाले अंतःस्थापित प्रणाली माइक्रोप्रोसेसर और microcontroller में; उन अनुप्रयोगों में जो उच्च गति और/या कम बिजली की खपत और/या छोटे एकीकृत सर्किट क्षेत्र की मांग करते हैं, जैसे मूर्ति प्रोद्योगिकी, वीडियो प्रसंस्करण और अंकीय संकेत प्रक्रिया; या जब समस्या के लिए उनका उपयोग अधिक स्वाभाविक हो। उत्तरार्द्ध के उदाहरण डॉलर की मात्रा का लेखा-जोखा है, जब सेंट के अंशों को कड़ाई से निर्धारित तरीकों से पूरे सेंट में गोल किया जाना चाहिए; और तालिका देखो द्वारा फ़ंक्शन (गणित) का मूल्यांकन।

प्रतिनिधित्व

Fixed-point representation with scaling 1/100
Value
represented
Internal
representation
0.00 0
0.5 50
0.99 99
2 200
−14.1 −1410
314.160 31416

एक आंशिक संख्या का एक निश्चित-बिंदु प्रतिनिधित्व अनिवार्य रूप से एक पूर्णांक है जिसे एक निश्चित स्केलिंग कारक द्वारा अंतर्निहित रूप से गुणा किया जाना है। उदाहरण के लिए, मान 1.23 को 1/1000 के अंतर्निहित स्केलिंग कारक के साथ पूर्णांक मान 1230 के रूप में एक चर में संग्रहीत किया जा सकता है (जिसका अर्थ है कि अंतिम 3 दशमलव अंकों को दशमलव अंश माना जाता है), और मान 1 230 000 1000 के अंतर्निहित स्केलिंग कारक के साथ 1230 के रूप में प्रदर्शित किया जा सकता है (शून्य से 3 अंतर्निहित दशमलव अंश अंकों के साथ, यानी दाईं ओर 3 निहित शून्य अंक के साथ)। यह प्रतिनिधित्व मानक पूर्णांक अंकगणितीय तर्क इकाई को तर्कसंगत संख्या गणना करने की अनुमति देता है।

नकारात्मक मूल्यों को आमतौर पर बाइनरी फिक्स्ड-पॉइंट प्रारूप में एक हस्ताक्षरित पूर्णांक के रूप में ऊपर के रूप में एक अंतर्निहित स्केलिंग कारक के साथ दो पूरक प्रतिनिधित्व में दर्शाया जाता है। मान का चिह्न हमेशा बिट क्रमांकन (1 = ऋणात्मक, 0 = गैर-ऋणात्मक) द्वारा इंगित किया जाएगा, भले ही अंश बिट्स की संख्या बिट्स की कुल संख्या से अधिक या उसके बराबर हो। उदाहरण के लिए, 8-बिट हस्ताक्षरित बाइनरी पूर्णांक (11110101)2 = −11, -3, +5, और +12 निहित अंश बिट्स के साथ लिया गया, मानों का प्रतिनिधित्व करेगा -11/2-3 = -88, -11/25 = -0।343 75, और -11/212 = -0।002 685 546 875, क्रमश।

वैकल्पिक रूप से, ऋणात्मक मानों को संकेत-परिमाण प्रारूप में एक पूर्णांक द्वारा दर्शाया जा सकता है, जिस स्थिति में चिन्ह को कभी भी निहित अंश बिट्स की संख्या में शामिल नहीं किया जाता है। दशमलव निश्चित-बिंदु अंकगणित में यह संस्करण अधिक सामान्यतः उपयोग किया जाता है। इस प्रकार हस्ताक्षरित 5-अंकीय दशमलव पूर्णांक (−00025)10, -3, +5, और +12 निहित दशमलव अंश अंकों के साथ लिया गया, −25/10 मानों का प्रतिनिधित्व करेगा-3 = -25000, -25/105 = −0.00025, और −25/1012 = -0।000 000 000 025, क्रमश।

एक प्रोग्राम आमतौर पर मान लेगा कि सभी निश्चित-बिंदु मान जो किसी दिए गए चर में संग्रहीत किए जाएंगे, या किसी दिए गए निर्देश (कंप्यूटिंग) द्वारा उत्पादित किए जाएंगे, समान स्केलिंग कारक होंगे। यह पैरामीटर आमतौर पर प्रोग्रामर द्वारा सटीकता और सटीकता की आवश्यकता और संग्रहीत किए जाने वाले मूल्यों की सीमा के आधार पर चुना जा सकता है।

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

स्केलिंग कारकों का विकल्प

अधिक दक्षता के लिए, स्केलिंग कारकों को अक्सर आधार b के घातांक (सकारात्मक या नकारात्मक) के रूप में चुना जाता है, जिसका उपयोग आंतरिक रूप से पूर्णांकों का प्रतिनिधित्व करने के लिए किया जाता है। हालांकि, अक्सर सबसे अच्छा स्केलिंग कारक एप्लिकेशन द्वारा तय किया जाता है। इस प्रकार मानव सुविधा के लिए अक्सर स्केलिंग कारकों का उपयोग किया जाता है जो 10 की शक्तियां हैं (उदाहरण के लिए डॉलर के मूल्यों के लिए 1/100), भले ही पूर्णांक बाइनरी में आंतरिक रूप से प्रदर्शित होते हैं। दशमलव स्केलिंग कारक भी अंतर्राष्ट्रीय प्रणाली की इकाइयों के साथ अच्छी तरह से मेल खाते हैं। मीट्रिक (एसआई) प्रणाली, क्योंकि निश्चित-बिंदु स्केलिंग कारक की पसंद अक्सर माप की एक इकाई (जैसे मीटर के बजाय सेंटीमीटर या माइक्रोमीटर) की पसंद के बराबर होती है।

हालाँकि, अन्य स्केलिंग कारकों का उपयोग कभी-कभी किया जा सकता है, उदा। घंटों की एक आंशिक राशि सेकंड की पूर्णांक संख्या के रूप में प्रदर्शित की जा सकती है; यानी 1/3600 के स्केल फैक्टर के साथ एक निश्चित-बिंदु संख्या के रूप में।

यहां तक ​​​​कि सबसे सावधान राउंडिंग के साथ, स्केलिंग फैक्टर S के साथ दर्शाए गए निश्चित-बिंदु मानों में संग्रहीत पूर्णांक में ± 0.5 तक की त्रुटि हो सकती है, अर्थात मान में ± 0.5 S। इसलिए, छोटे स्केलिंग कारक आम तौर पर अधिक सटीक परिणाम उत्पन्न करते हैं।

दूसरी ओर, एक छोटे स्केलिंग कारक का अर्थ है मानों की एक छोटी श्रेणी जो किसी दिए गए प्रोग्राम चर में संग्रहीत की जा सकती है। एक चर में संग्रहीत किया जा सकने वाला अधिकतम निश्चित-बिंदु मान वह सबसे बड़ा पूर्णांक मान होता है जिसे उसमें संग्रहीत किया जा सकता है, जिसे स्केलिंग कारक से गुणा किया जाता है; और इसी तरह न्यूनतम मूल्य के लिए। उदाहरण के लिए, नीचे दी गई तालिका निहित स्केलिंग कारक S, न्यूनतम और अधिकतम प्रतिनिधित्व योग्य मान V देती हैmin और वीmax, और सटीकता δ = S/2 मानों की जिन्हें 16-बिट हस्ताक्षरित बाइनरी निश्चित बिंदु प्रारूप में दर्शाया जा सकता है, जो निहित भिन्न बिट्स की संख्या f पर निर्भर करता है।

Parameters of some 16-bit signed binary fixed-point formats
f S δ Vmin Vmax
−3 1/2−3 = 8 4 262 144 +262 143
0 1/20 = 1 0.5 32 768 +32 767
5 1/25 = 1/32 < 0.016 −1024.000 00 +1023.968 75
14 1/214 = 1/16 384 < 0.000 031 −2.000 000 000 000 00 +1.999 938 964 843 75
15 1/215 = 1/32 768 < 0.000 016 −1.000 000 000 000 000 +0.999 969 482 421 875
16 1/216 = 1/65 536 < 0.000 008 −0.500 000 000 000 000 0 +0.499 984 741 210 937 5
20 1/220 = 1/1 048 576 < 0.000 000 5 −0.031 250 000 000 000 000 00 +0.031 249 046 325 683 593 75

फॉर्म 2 के स्केलिंग कारकों के साथ फिक्स्ड-पॉइंट प्रारूपn-1 (अर्थात् 1, 3, 7, 15, 31, आदि.) को इमेज प्रोसेसिंग और अन्य डिजिटल सिग्नल प्रोसेसिंग कार्यों के लिए उपयुक्त बताया गया है। वे सामान्य 2 की तुलना में निश्चित और फ्लोटिंग-पॉइंट मानों के बीच अधिक सुसंगत रूपांतरण प्रदान करने वाले हैंn स्केलिंग। जूलिया (प्रोग्रामिंग भाषा) प्रोग्रामिंग भाषा दोनों संस्करणों को लागू करती है।[1]


सटीक मान

कोई बाइनरी अंश a/2m, जैसे 1/16 या 17/32, निश्चित-बिंदु में सटीक रूप से प्रदर्शित किया जा सकता है, जिसमें दो स्केलिंग कारक 1/2 की शक्ति होती हैn किसी भी n ≥ m के साथ। हालाँकि, अधिकांश दशमलव अंश जैसे 0.1 या 0.123 आधार 2 में अनंत दोहराव वाले अंश हैं और इसलिए उन्हें इस तरह से प्रदर्शित नहीं किया जा सकता है।

इसी प्रकार, कोई भी दशमलव भिन्न a/10m, जैसे 1/100 या 37/1000, निश्चित बिंदु में 1/10 की शक्ति के साथ सटीक रूप से प्रदर्शित किया जा सकता हैn किसी भी n ≥ m के साथ। यह दशमलव प्रारूप किसी भी बाइनरी अंश a/2 का भी प्रतिनिधित्व कर सकता हैm, जैसे 1/8 (0.125) या 17/32 (0.53125)।

अधिक आम तौर पर, एक परिमेय संख्या a/b, a और b सहअभाज्य पूर्णांकों और b धनात्मक के साथ, केवल बाइनरी निश्चित बिंदु में सटीक रूप से प्रदर्शित किया जा सकता है यदि b 2 की शक्ति है; और दशमलव निश्चित बिंदु में केवल अगर बी में 2 और/या 5 के अलावा कोई अभाज्य संख्या कारक नहीं है।

=== फ़्लोटिंग-पॉइंट === के साथ तुलना

फिक्स्ड-पॉइंट कंप्यूटेशंस तेज़ हो सकते हैं और/या फ़्लोटिंग-पॉइंट वाले से कम हार्डवेयर का उपयोग कर सकते हैं। यदि प्रतिनिधित्व किए जाने वाले मूल्यों की सीमा पहले से ज्ञात है और पर्याप्त रूप से सीमित है, तो निश्चित बिंदु उपलब्ध बिट्स का बेहतर उपयोग कर सकता है। उदाहरण के लिए, यदि 32 बिट्स 0 और 1 के बीच की संख्या का प्रतिनिधित्व करने के लिए उपलब्ध हैं, तो एक निश्चित बिंदु प्रतिनिधित्व में 1.2 × 10 से कम त्रुटि हो सकती है।-10, जबकि मानक फ़्लोटिंग-पॉइंट प्रतिनिधित्व में 596 × 10 तक की त्रुटि हो सकती है−10 — क्योंकि 9 बिट डायनेमिक स्केलिंग फ़ैक्टर के चिह्न और प्रतिपादक के साथ व्यर्थ हैं। विशेष रूप से, 32-बिट फिक्स्ड-पॉइंट की तुलना IEEE 754|फ्लोटिंग-पॉइंट ऑडियो से करते हुए, 40 डेसिबल से कम हेडरूम (ऑडियो सिग्नल प्रोसेसिंग) की आवश्यकता वाली रिकॉर्डिंग में 32-बिट फिक्स्ड का उपयोग करके उच्च सिग्नल-टू-शोर अनुपात होता है।

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

कई एम्बेडेड प्रोसेसर में FPU की कमी होती है, क्योंकि पूर्णांक अंकगणितीय इकाइयों को काफी कम तर्क द्वार की आवश्यकता होती है और FPU की तुलना में बहुत छोटे एकीकृत सर्किट क्षेत्र का उपभोग करते हैं; और कम गति वाले उपकरणों पर फ़्लोटिंग-पॉइंट का सॉफ़्टवेयर अनुकरण (कंप्यूटिंग) अधिकांश अनुप्रयोगों के लिए बहुत धीमा होगा। इंटेल 386 और इंटेल 486 जैसे पहले के निजी कंप्यूटर और गेम कंसोल के लिए सीपीयू चिप्स में भी एफपीयू की कमी थी।

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

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

अनुप्रयोग

दशमलव निश्चित-बिंदु का एक सामान्य उपयोग मौद्रिक मूल्यों को संग्रहीत करने के लिए होता है, जिसके लिए फ़्लोटिंग-पॉइंट संख्याओं के जटिल राउंडिंग नियम अक्सर एक दायित्व होते हैं। उदाहरण के लिए, ओपन सोर्स मनी मैनेजमेंट एप्लिकेशन GnuCash, सी में लिखा गया, इस कारण से फ़्लोटिंग-पॉइंट से फिक्स्ड-पॉइंट संस्करण 1.6 के रूप में स्विच किया गया।

बाइनरी फिक्स्ड-पॉइंट (बाइनरी स्केलिंग) का व्यापक रूप से 1960 के दशक के अंत से 1980 के दशक तक वास्तविक समय कंप्यूटिंग के लिए उपयोग किया गया था जो गणितीय रूप से गहन था, जैसे कि उड़ान सिमुलेशन और परमाणु ऊर्जा संयंत्र नियंत्रण एल्गोरिदम में। यह अभी भी कई डिजिटल सिग्नल प्रोसेसिंग अनुप्रयोगों और कस्टम मेड माइक्रोप्रोसेसरों में उपयोग किया जाता है। कोणों से जुड़ी संगणनाएँ द्विआधारी कोणीय मापन (BAM) का उपयोग करेंगी।

STM32 श्रृंखला CORDIC सह-प्रोसेसरों में बाइनरी निश्चित बिंदु का उपयोग किया जाता है और JPEG छवियों को संपीड़ित करने के लिए असतत कोसाइन ट्रांसफ़ॉर्म (DCT) एल्गोरिदम में उपयोग किया जाता है।

बिजली के मीटर और वास्तविक समय घड़ी जैसे इलेक्ट्रॉनिक उपकरण अक्सर पेश की गई त्रुटियों की भरपाई के लिए बहुपद का उपयोग करते हैं, उदा। तापमान या बिजली आपूर्ति वोल्टेज से। गुणांक बहुपद प्रतिगमन द्वारा निर्मित होते हैं। बाइनरी निश्चित बिंदु बहुपद फ़्लोटिंग-पॉइंट की तुलना में सटीकता के अधिक बिट्स का उपयोग कर सकते हैं, और सस्ते सीपीयू का उपयोग करके तेज़ कोड में ऐसा कर सकते हैं। सटीकता, उपकरणों के लिए महत्वपूर्ण, समकक्ष-बिट फ़्लोटिंग-पॉइंट गणनाओं की तुलना में अच्छी तरह से तुलना करती है, यदि निश्चित-बिंदु बहुपदों को फैक्टर किया जाता है (उदाहरण के लिए y = d + x(c + x(b + xa))) समय की संख्या को कम करने के लिए गोलाई होती है, और निश्चित-बिंदु गुणन राउंडिंग जोड़ का उपयोग करते हैं।

संचालन

जोड़ और घटाव

एक ही अंतर्निहित स्केलिंग कारक के साथ दो मान जोड़ने या घटाने के लिए, अंतर्निहित पूर्णांकों को जोड़ना या घटाना पर्याप्त है; परिणाम में उनका सामान्य अंतर्निहित स्केलिंग कारक होगा, इस प्रकार ऑपरेंड के समान प्रोग्राम चर में संग्रहीत किया जा सकता है। ये ऑपरेशन सटीक गणितीय परिणाम देते हैं, जब तक कोई अंकगणितीय अतिप्रवाह नहीं होता है - अर्थात, जब तक परिणामी पूर्णांक को प्राप्त कार्यक्रम चर (कंप्यूटिंग) में संग्रहीत किया जा सकता है। यदि मानों के अलग-अलग स्केलिंग कारक हैं, तो उन्हें ऑपरेशन से पहले एक सामान्य स्केलिंग कारक में परिवर्तित किया जाना चाहिए।

गुणन

दो निश्चित-बिंदु संख्याओं को गुणा करने के लिए, यह दो अंतर्निहित पूर्णांकों को गुणा करने के लिए पर्याप्त है, और मान लें कि परिणाम का स्केलिंग कारक उनके स्केलिंग कारकों का उत्पाद है। परिणाम सटीक होगा, बिना किसी गोलाई के, बशर्ते कि यह प्राप्त करने वाले चर को ओवरफ्लो न करे।

उदाहरण के लिए, संख्या 123 को 1/1000 (0.123) और 25 को 1/10 (2.5) से गुणा करने पर पूर्णांक 123×25 = 3075 स्केल (1/1000)×(1/10) = 1/10000 प्राप्त होता है। , यानी 3075/10000 = 0.3075। एक अन्य उदाहरण के रूप में, पहली संख्या को 155 से गुणा करके 1/32 (155/32 = 4.84375) से बढ़ाया जाता है, जिससे पूर्णांक 123 × 155 = 19065 निहित स्केलिंग कारक (1/1000) × (1/32) = 1/32000 प्राप्त होता है। , यानी 19065/32000 = 0.59578125।

बाइनरी में, स्केलिंग फ़ैक्टर का उपयोग करना आम है जो दो की शक्ति है। गुणन के बाद, स्केलिंग फ़ैक्टर को दाईं ओर शिफ्ट करके विभाजित किया जा सकता है। यंत्रवत्, अधिकांश कंप्यूटरों में यह प्रक्रिया सरल और तेज है। शिफ्टिंग से पहले स्केलिंग फैक्टर के आधे हिस्से का 'राउंडिंग ऐडेंड' जोड़कर राउंडिंग संभव है; प्रमाण: राउंड(x/y) = फ्लोर(x/y + 0.5) = फ्लोर((x + y/2)/y) = शिफ्ट-ऑफ-एन(x + 2^(n-1)) एक समान विधि किसी भी स्केलिंग में प्रयोग करने योग्य है।

विभाग

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

उदाहरण के लिए, 3456 को 1/100 (34.56) और 1234 को 1/1000 (1.234) से विभाजित करने पर स्केल फ़ैक्टर (1/100)/(1/1000) = के साथ पूर्णांक 3456÷1234 = 3 (गोलाकार) प्राप्त होता है 10, यानी 30। एक अन्य उदाहरण के रूप में, पहली संख्या का विभाजन 1/32 (155/32 = 4.84375) द्वारा अनुमानित रूप से स्केल किए गए 155 से विभाजित करने पर निहित स्केलिंग कारक (1/) के साथ पूर्णांक 3456÷155 = 22 (गोलाकार) 100)/(1/32) = 32/100 = 8/25, यानी 22×32/100 = 7.04।

यदि परिणाम सटीक नहीं है, तो राउंडिंग द्वारा शुरू की गई त्रुटि को कम किया जा सकता है या लाभांश को छोटे स्केलिंग कारक में परिवर्तित करके समाप्त भी किया जा सकता है। उदाहरण के लिए, यदि r = 1.23 को स्केलिंग 1/100 के साथ 123 के रूप में दर्शाया जाता है, और s = 6.25 को स्केलिंग 1/1000 के साथ 6250 के रूप में दर्शाया जाता है, तो पूर्णांकों का सरल विभाजन स्केलिंग कारक के साथ 123÷6250 = 0 (गोलाकार) प्राप्त करता है ( 1/100)/(1/1000) = 10. यदि r को पहले स्केलिंग कारक 1/1000000 के साथ 1,230,000 में परिवर्तित किया जाता है, तो परिणाम स्केल कारक 1/1000 (0.197) के साथ 1,230,000÷6250 = 197 (गोलाकार) होगा। सटीक मान 1.23/6.25 0.1968 है।

स्केलिंग रूपांतरण

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

  • एक मान को प्रोग्राम वेरिएबल में स्टोर करने के लिए जिसमें एक अलग अंतर्निहित स्केलिंग कारक है;
  • दो मानों को एक ही स्केलिंग कारक में परिवर्तित करने के लिए, ताकि उन्हें जोड़ा या घटाया जा सके;
  • किसी मान को दूसरे से गुणा या विभाजित करने के बाद मूल स्केलिंग कारक को पुनर्स्थापित करने के लिए;
  • विभाजन के परिणाम की सटीकता में सुधार करने के लिए;
  • यह सुनिश्चित करने के लिए कि किसी उत्पाद या भागफल का स्केलिंग कारक 10 जैसी साधारण शक्ति हैn या 2एन;
  • यह सुनिश्चित करने के लिए कि किसी ऑपरेशन के परिणाम को ओवरफ्लो के बिना प्रोग्राम वेरिएबल में स्टोर किया जा सकता है;
  • फिक्स्ड-पॉइंट डेटा को प्रोसेस करने वाले हार्डवेयर की लागत को कम करने के लिए।

स्केलिंग कारक R के साथ एक निश्चित बिंदु प्रकार से एक संख्या को स्केलिंग कारक S के साथ दूसरे प्रकार में बदलने के लिए, अंतर्निहित पूर्णांक को अनुपात R/S से गुणा किया जाना चाहिए। इस प्रकार, उदाहरण के लिए, मान 1.23 = 123/100 को स्केलिंग फ़ैक्टर R=1/100 से एक स्केलिंग फ़ैक्टर S=1/1000 में बदलने के लिए, पूर्णांक 123 को (1/100)/(1/1000 से गुणा किया जाना चाहिए ) = 10, प्रतिनिधित्व 1230/1000 उपज।

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

यदि S, R को विभाजित नहीं करता है (विशेष रूप से, यदि नया स्केलिंग कारक S मूल R से अधिक है), तो नए पूर्णांक को गोल करना पड़ सकता है।

विशेष रूप से, यदि आर और एस अंतर्निहित स्केलिंग कारकों आर और एस के साथ निश्चित-बिंदु चर हैं, तो ऑपरेशन r ← r×s को संबंधित पूर्णांकों को गुणा करने और परिणाम को स्पष्ट रूप से एस द्वारा विभाजित करने की आवश्यकता होती है। परिणाम को गोल करना पड़ सकता है, और अतिप्रवाह हो सकता है तब हो सकती है।

उदाहरण के लिए, यदि सामान्य स्केलिंग कारक 1/100 है, तो 1.23 को 0.25 से गुणा करने पर 1/10000 के मध्यवर्ती स्केलिंग कारक के साथ 3075 प्राप्त करने के लिए 123 को 25 से गुणा करना पड़ता है। मूल स्केलिंग कारक 1/100 पर लौटने के लिए, पूर्णांक 3075 को 1/100 से गुणा किया जाना चाहिए, अर्थात, 100 से विभाजित किया जाना चाहिए, या तो 31 (0.31) या 30 (0.30) प्राप्त करने के लिए उपयोग किए गए गोलाई के आधार पर .

इसी तरह, संक्रिया r ← r/s को पूर्णांकों को विभाजित करने और भागफल को S से स्पष्ट रूप से गुणा करने की आवश्यकता होगी। पूर्णांकन और/या अतिप्रवाह यहां भी हो सकता है।

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

एक निश्चित-बिंदु संख्या को फ़्लोटिंग-पॉइंट में बदलने के लिए, कोई पूर्णांक को फ़्लोटिंग-पॉइंट में बदल सकता है और फिर इसे स्केलिंग फ़ैक्टर S द्वारा विभाजित कर सकता है। यदि पूर्णांक का निरपेक्ष मान 2 से अधिक है तो यह रूपांतरण गोल हो सकता है।24 (बाइनरी सिंगल-प्रिसिजन IEEE फ्लोटिंग पॉइंट के लिए) या 253 (डबल-प्रिसिजन के लिए)। ओवरफ़्लो या अधःप्रवाह हो सकता है यदि |S| क्रमशः बहुत बड़ा या बहुत छोटा होता है।

हार्डवेयर समर्थन

स्केलिंग और रीनॉर्मलाइजेशन

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

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

कुछ डीएसपी आर्किटेक्चर विशिष्ट फिक्स्ड-पॉइंट प्रारूपों के लिए मूल समर्थन प्रदान करते हैं, उदाहरण के लिए एन-1 अंश बिट्स के साथ हस्ताक्षरित एन-बिट नंबर (जिनके मान -1 और लगभग +1 के बीच हो सकते हैं)। समर्थन में एक गुणा निर्देश शामिल हो सकता है जिसमें पुनर्सामान्यीकरण शामिल है - उत्पाद का स्केलिंग रूपांतरण 2n−2 से n−1 अंश बिट्स तक।[citation needed] यदि सीपीयू वह सुविधा प्रदान नहीं करता है, तो प्रोग्रामर को उत्पाद को एक बड़े पर्याप्त रजिस्टर या अस्थायी चर में सहेजना चाहिए, और स्पष्ट रूप से पुनर्सामान्यीकरण को कोड करना चाहिए।

अतिप्रवाह

अतिप्रवाह तब होता है जब एक अंकगणितीय ऑपरेशन का परिणाम निर्दिष्ट गंतव्य क्षेत्र में संग्रहीत करने के लिए बहुत बड़ा होता है। जोड़ और घटाव के परिणाम में ऑपरेंड की तुलना में एक बिट अधिक की आवश्यकता हो सकती है। एम और एन बिट्स के साथ दो अहस्ताक्षरित पूर्णांकों के गुणा में, परिणाम में एम + एन बिट्स हो सकते हैं।

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

कुछ प्रोसेसर एक हार्डवेयर अतिप्रवाह ध्वज सेट कर सकते हैं और/या अतिप्रवाह होने पर एक अपवाद प्रबंधन उत्पन्न कर सकते हैं। कुछ प्रोसेसर इसके बजाय संतृप्ति अंकगणित प्रदान कर सकते हैं: यदि जोड़ या घटाव का परिणाम अतिप्रवाह होता है, तो वे मूल्य को सबसे बड़े परिमाण के साथ संग्रहीत करते हैं जो प्राप्त क्षेत्र में फिट हो सकता है और सही संकेत है।[citation needed] हालाँकि, ये सुविधाएँ व्यवहार में बहुत उपयोगी नहीं हैं; स्केलिंग कारकों और शब्द आकारों का चयन करना आम तौर पर आसान और सुरक्षित होता है ताकि अतिप्रवाह की संभावना को बाहर किया जा सके, या ऑपरेशन को निष्पादित करने से पहले अत्यधिक मूल्यों के लिए ऑपरेंड की जांच की जा सके।

कंप्यूटर भाषा समर्थन

फिक्स्ड-पॉइंट नंबरों के लिए स्पष्ट समर्थन कुछ कंप्यूटर भाषाओं द्वारा प्रदान किया जाता है, विशेष रूप से PL/I, COBOL, Ada प्रोग्रामिंग लैंग्वेज, JOVIAL प्रोग्रामिंग लैंग्वेज और मूंगा 66। वे फिक्स्ड-पॉइंट डेटा प्रकार प्रदान करते हैं, बाइनरी या दशमलव स्केलिंग कारक के साथ। कंपाइलर स्वचालित रूप से इन डेटा-प्रकारों पर संचालन करते समय, चर पढ़ते या लिखते समय, या मानों को अन्य डेटा प्रकारों जैसे फ़्लोटिंग-पॉइंट में परिवर्तित करते समय उचित स्केलिंग रूपांतरण करने के लिए कोड उत्पन्न करता है।

उन भाषाओं में से अधिकांश को 1940 और 1990 के बीच डिज़ाइन किया गया था। अधिक आधुनिक भाषाएँ आमतौर पर स्केलिंग कारक रूपांतरण के लिए कोई निश्चित-बिंदु डेटा प्रकार या समर्थन प्रदान नहीं करती हैं। कई पुरानी भाषाओं के लिए भी यही स्थिति है जो अभी भी बहुत लोकप्रिय हैं, जैसे फोरट्रान, सी (प्रोग्रामिंग भाषा) और सी ++। तेज़ फ़्लोटिंग-पॉइंट प्रोसेसर की व्यापक उपलब्धता, कड़ाई से मानकीकृत व्यवहार के साथ, बाइनरी फिक्स्ड पॉइंट सपोर्ट की मांग को बहुत कम कर दिया है।[citation needed] इसी तरह, सी शार्प लैंग्वेज | सी # और पायथन (प्रोग्रामिंग लैंग्वेज) जैसी कुछ प्रोग्रामिंग भाषाओं में दशमलव फ़्लोटिंग पॉइंट के लिए समर्थन ने दशमलव निश्चित-बिंदु समर्थन की अधिकांश आवश्यकता को हटा दिया है। कुछ स्थितियों में जो निश्चित-बिंदु संचालन के लिए कहते हैं, उन्हें प्रोग्रामर द्वारा किसी भी प्रोग्रामिंग भाषा में स्पष्ट स्केलिंग रूपांतरण के साथ कार्यान्वित किया जा सकता है।

दूसरी ओर, सभी रिलेशनल डेटाबेस और SQL नोटेशन फिक्स्ड-पॉइंट दशमलव अंकगणितीय और संख्याओं के भंडारण का समर्थन करते हैं। PostgreSQL में 1000 अंकों तक की संख्याओं के सटीक भंडारण के लिए एक विशेष संख्यात्मक प्रकार है।[2]

इसके अलावा, 2008 में अंतर्राष्ट्रीय मानक संगठन (आईएसओ) ने एम्बेडेड प्रोसेसर पर चलने वाले कार्यक्रमों के लाभ के लिए सी प्रोग्रामिंग भाषा को निश्चित-बिंदु डेटा प्रकारों के साथ विस्तारित करने का प्रस्ताव जारी किया।[3]साथ ही, जीएनयू संकलक संग्रह (जीसीसी) में फिक्स्ड-पॉइंट के लिए कंपाइलर # बैक एंड | बैक-एंड सपोर्ट है।[4][5]


विस्तृत उदाहरण

दशमलव निश्चित बिंदु गुणन

मान लीजिए कि निम्नलिखित गुणन 2 निश्चित बिंदु 3 दशमलव स्थान संख्याओं के साथ है।

ध्यान दें कि कैसे 3 दशमलव स्थान हैं, हम अनुगामी शून्य दिखाते हैं। इसे एक पूर्णांक गुणन के रूप में पुन: चित्रित करने के लिए हमें पहले गुणा करना होगा सभी दशमलव स्थानों को पूर्णांक स्थानों में ले जाने पर, हम गुणा करेंगे उन्हें वापस लाने के लिए अब समीकरण जैसा दिखता है

यह समतुल्य रूप से काम करता है यदि हम कंप्यूटिंग के लिए एक अलग आधार चुनते हैं, विशेष रूप से आधार 2, क्योंकि बिट शिफ्ट 2 के क्रम से गुणन या विभाजन के समान है। तीन दशमलव अंक लगभग 10 बाइनरी अंकों के बराबर हैं, इसलिए हमें 0.05 को गोल करना चाहिए बाइनरी पॉइंट के बाद 10 बिट तक। निकटतम सन्निकटन तब 0.0000110011 है।

इस प्रकार हमारा गुणन हो जाता है

यह दशमलव बिंदु के बाद तीन अंकों के साथ 11.023 तक चलता है।

बाइनरी निश्चित-बिंदु गुणन

16 अंश बिट्स का उपयोग करके बाइनरी फिक्स्ड पॉइंट के साथ 1.2 और 5.6 के उत्पाद की गणना करने के कार्य पर विचार करें। दो संख्याओं का प्रतिनिधित्व करने के लिए, एक उन्हें 2 से गुणा करता है16, प्राप्त करना 78 643.2 और 367 001.6; और इन मानों को निकटतम पूर्णांकों में गोल करें, प्राप्त करना 78 643 और 367 002. ये संख्याएं दो के पूरक हस्ताक्षरित प्रारूप के साथ 32-बिट शब्द में आराम से फिट होंगी।

इन पूर्णांकों को एक साथ गुणा करने पर 35-बिट पूर्णांक प्राप्त होता है 28 862 138 286 32 अंश बिट्स के साथ, बिना किसी गोलाई के। ध्यान दें कि इस मान को सीधे 32-बिट पूर्णांक चर में संग्रहीत करने से अतिप्रवाह और सबसे महत्वपूर्ण बिट्स का नुकसान होगा। व्यवहार में, यह संभवतः एक हस्ताक्षरित 64-बिट पूर्णांक चर या रजिस्टर (कंप्यूटिंग) में संग्रहीत किया जाएगा।

यदि परिणाम को 16 अंश बिट्स के साथ उसी प्रारूप में डेटा के रूप में संग्रहीत किया जाना है, तो उस पूर्णांक को 2 से विभाजित किया जाना चाहिए16, जो लगभग देता है 440 401.28, और फिर निकटतम पूर्णांक तक गोल किया गया। यह प्रभाव 2 जोड़कर प्राप्त किया जा सकता है15 और फिर परिणाम को 16 बिट से स्थानांतरित करना। परिणाम है 440 401, जो मान 6 का प्रतिनिधित्व करता है।719 985 961 914 062 5. प्रारूप की सटीकता को ध्यान में रखते हुए, उस मान को 6 के रूप में बेहतर व्यक्त किया जाता है।719 986 ± 0.000 008 (ऑपरेंड सन्निकटन से आने वाली त्रुटि की गिनती नहीं)। सही परिणाम 1.2 × 5.6 = 6.72 होगा।

अधिक जटिल उदाहरण के लिए, मान लीजिए कि दो नंबर 1.2 और 5.6 क्रमशः 30 और 20 अंश बिट्स के साथ 32-बिट निश्चित बिंदु प्रारूप में दर्शाए गए हैं। 2 से स्केलिंग30 और 220 देता है 1 288 490 188.8 और 5 872 025.6, उस दौर को 1 288 490 189 और 5 872 026, क्रमश। दोनों संख्याएं अभी भी 32-बिट हस्ताक्षरित पूर्णांक चर में फिट होती हैं, और अंशों का प्रतिनिधित्व करती हैं

1.200 000 000 186 264 514 923 095 703 125 और
5.600 000 381 469 726 562 50

उनका उत्पाद (बिल्कुल) 53-बिट पूर्णांक है 7 566 047 890 552 914, जिसमें 30+20 = 50 निहित भिन्न बिट हैं और इसलिए भिन्न का प्रतिनिधित्व करता है

6.720 000 458 806 753 229 623 609 513 510

यदि हम 8 अंश बिट्स के साथ हस्ताक्षरित 16-बिट निश्चित प्रारूप में इस मान का प्रतिनिधित्व करना चुनते हैं, तो हमें पूर्णांक उत्पाद को 2 से विभाजित करना होगा50-8 = 242 और परिणाम को राउंड करें; जिसे 2 जोड़कर प्राप्त किया जा सकता है41 और 42 बिट्स से शिफ्टिंग। परिणाम 1720 है, जो 1720/2 के मान का प्रतिनिधित्व करता है8 = 6।718 75, या लगभग 6.719 ± 0.002।

अंकन

निश्चित-बिंदु प्रारूप के पैरामीटर को संक्षिप्त रूप से निर्दिष्ट करने के लिए विभिन्न नोटेशन का उपयोग किया गया है। निम्नलिखित सूची में, f भिन्नात्मक बिट्स की संख्या का प्रतिनिधित्व करता है, m परिमाण या पूर्णांक बिट्स की संख्या, साइन बिट्स की संख्या, और b बिट्स की कुल संख्या।

  • COBOL प्रोग्रामिंग भाषा ने मूल रूप से मनमाने आकार और दशमलव स्केलिंग के साथ दशमलव निश्चित-परिशुद्धता का समर्थन किया था, जिसका प्रारूप रेखांकन के साथ निर्दिष्ट किया गया था PIC निर्देश। उदाहरण के लिए, PIC S9999V99 दो दशमलव अंश अंकों के साथ एक साइन-परिमाण 6-अंकीय दशमलव पूर्णांक निर्दिष्ट किया।[6]* रचना REAL FIXED BINARY (p,f) पीएल / आई प्रोग्रामिंग भाषा में उपयोग किया जाता है, अंश भाग में एफ बिट्स के साथ पी कुल बिट्स (साइन सहित नहीं) के साथ एक निश्चित-बिंदु हस्ताक्षरित बाइनरी डेटा प्रकार निर्दिष्ट करने के लिए; वह 1/2 के स्केलिंग कारक के साथ एक p+1 बिट हस्ताक्षरित पूर्णांक है. उत्तरार्द्ध सकारात्मक या नकारात्मक हो सकता है। कोई निर्दिष्ट कर सकता है COMPLEX के बजाय REAL, और DECIMAL के बजाय BINARY आधार 10 के लिए।
  • एडीए प्रोग्रामिंग भाषा में, एक संख्यात्मक डेटा प्रकार निर्दिष्ट किया जा सकता है, उदाहरण के लिए,type F is delta 0.01 range -100.0 .. 100.0, जिसका अर्थ है 7 निहित अंश बिट्स (एक स्केलिंग कारक 1/128 प्रदान करना) और कम से कम 15 बिट्स कुल (-128.00 से लगभग +128.00 तक वास्तविक सीमा सुनिश्चित करना) के साथ दो के पूरक प्रारूप में एक हस्ताक्षरित बाइनरी पूर्णांक से युक्त एक निश्चित-बिंदु प्रतिनिधित्व। .[7]* क्यू (संख्या प्रारूप) टेक्सस उपकरण द्वारा परिभाषित किया गया था।[8]एक लिखता है Qf अंश बिट्स के साथ एक हस्ताक्षरित बाइनरी निश्चित-बिंदु मान निर्दिष्ट करने के लिए; उदाहरण के लिए, Q15 स्केलिंग फ़ैक्टर 1/2 के साथ दो के पूरक अंकन में एक हस्ताक्षरित पूर्णांक निर्दिष्ट करता है15. कोड Qm.f अतिरिक्त रूप से निर्दिष्ट करता है कि संख्या में मान के पूर्णांक भाग में m बिट्स हैं, साइन बिट की गिनती नहीं। इस प्रकार Q1.30 1 पूर्णांक बिट और 30 भिन्नात्मक बिट्स के साथ एक बाइनरी फिक्स्ड-पॉइंट प्रारूप का वर्णन करेगा, जिसे स्केलिंग कारक 1/2 के साथ 32-बिट 2 के पूरक पूर्णांक के रूप में संग्रहीत किया जा सकता है।30.[8][9]एआरएम वास्तुकला द्वारा एक समान संकेतन का उपयोग किया गया है, सिवाय इसके कि वे m के मान में साइन बिट की गणना करते हैं; इसलिए उपरोक्त समान प्रारूप निर्दिष्ट किया जाएगा Q2.30.[10][11]* अंकन Bमी. का प्रयोग किया गया है पूर्णांक भाग में एम बिट्स के साथ एक निश्चित बाइनरी प्रारूप का मतलब; शेष शब्द अंश बिट हैं। उदाहरण के लिए, अधिकतम और न्यूनतम मान जो एक हस्ताक्षरित में संग्रहीत किए जा सकते हैं B16 संख्या क्रमशः ≈32767.9999847 और -32768.0 हैं।
  • VisSim कंपनी इस्तेमाल करती है fxm.b पूर्णांक भाग में b कुल बिट्स और m बिट्स के साथ एक बाइनरी निश्चित-बिंदु मान को निरूपित करने के लिए; यानी स्केलिंग फैक्टर 1/2 के साथ एक बी-बिट पूर्णांकबी−एम. इस प्रकार fx1.16 का अर्थ 16-बिट संख्या होगी जिसमें पूर्णांक भाग में 1 बिट और अंश में 15 होगा।[12]* PlayStation 2 GS (PlayStation 2 तकनीकी विनिर्देश#ग्राफ़िक्स प्रोसेसिंग यूनिट| ग्राफ़िक्स सिंथेसाइज़र) उपयोगकर्ता गाइड नोटेशन का उपयोग करता है:m:f, जहाँ s साइन बिट की उपस्थिति (0 या 1) निर्दिष्ट करता है।[13]उदाहरण के लिए, 0:5:3 1/2 के स्केलिंग कारक के साथ एक अहस्ताक्षरित 8-बिट पूर्णांक का प्रतिनिधित्व करता है3</उप>।
  • प्रयोगशाला देखें प्रोग्रामिंग भाषा संकेतन का उपयोग करती है <s,b,m> एक 'FXP' निश्चित बिंदु संख्या के पैरामीटर निर्दिष्ट करने के लिए। एस घटक या तो '+' या '±' हो सकता है, जो क्रमशः एक अहस्ताक्षरित या 2 के पूरक हस्ताक्षरित संख्या को दर्शाता है। बी घटक बिट्स की कुल संख्या है, और एम पूर्णांक भाग में बिट्स की संख्या है।

सॉफ़्टवेयर एप्लिकेशन उदाहरण

  • लोकप्रिय ट्रू टाइप फ़ॉन्ट प्रारूप अपने निर्देशों में कुछ संख्यात्मक मानों के लिए दशमलव के बाईं ओर 26 बिट्स के साथ 32-बिट हस्ताक्षरित बाइनरी फिक्स्ड-पॉइंट का उपयोग करता है।[14]यह प्रारूप फ़ॉन्ट इशारा और प्रदर्शन कारणों से आवश्यक न्यूनतम सटीकता प्रदान करने के लिए चुना गया था।[15]* 3DO इंटरएक्टिव मल्टीप्लेयर, प्ले स्टेशन, अब शनि, और अटारी जगुआर सहित वीडियो गेम कंसोल की पांचवीं पीढ़ी के लिए सभी 3डी गेम,[16]प्लस छठी पीढ़ी के खेल घन, फिक्स्ड-पॉइंट अंकगणित का उपयोग करें, क्योंकि सिस्टम में हार्डवेयर फ्लोट-पॉइंट इकाइयों की कमी होती है। प्लेस्टेशन ट्रांसफॉर्मेशन कोप्रोसेसर 12 अंश बिट्स के साथ 16-बिट निश्चित बिंदु का समर्थन करता है।
  • वैज्ञानिकों और गणितज्ञों द्वारा व्यापक रूप से उपयोग किया जाने वाला TeX टाइपसेटिंग सॉफ़्टवेयर, सभी स्थिति गणनाओं के लिए 16 अंश बिट्स के साथ 32-बिट हस्ताक्षरित बाइनरी निश्चित बिंदु का उपयोग करता है। मानों को एक बिंदु (टाइपोग्राफी) | टाइपोग्राफर के बिंदु के अंशों के रूप में व्याख्यायित किया जाता है। TeX फॉन्ट मेट्रिक फाइलें 12 अंश बिट्स के साथ 32-बिट हस्ताक्षरित निश्चित-बिंदु संख्याओं का उपयोग करती हैं।
  • ट्रेमर (सॉफ्टवेयर), टोस्ट (जीएसएम) और एमपीईजी ऑडियो डिकोडर सॉफ्टवेयर लाइब्रेरी हैं जो क्रमशः वॉर्बिस, पूर्ण दर और बेचा ऑडियो प्रारूपों को डिकोड करते हैं। ये कोडेक्स फिक्स्ड-पॉइंट अंकगणित का उपयोग करते हैं क्योंकि कई ऑडियो डिकोडिंग हार्डवेयर उपकरणों में FPU नहीं होता है।
  • WavPack दोषरहित ऑडियो कंप्रेसर निश्चित बिंदु अंकगणित का उपयोग करता है। अन्य बातों के अलावा, इस विकल्प को उचित ठहराया गया था कि अलग-अलग हार्डवेयर में अलग-अलग फ़्लोटिंग-पॉइंट राउंडिंग नियम संपीड़न की दोषरहित प्रकृति को दूषित कर सकते हैं।[17]* नेस्ट लैब्स यूटिलिटीज लाइब्रेरी,[18]निश्चित बिंदु संख्याओं के लिए मैक्रोज़ और फ़ंक्शंस का एक सीमित सेट प्रदान करता है, विशेष रूप से सेंसर नमूनाकरण और सेंसर आउटपुट के संदर्भ में उन नंबरों से निपटने के दौरान।
  • OpenGL ES 1.x विनिर्देश में एक निश्चित बिंदु प्रोफ़ाइल शामिल है, क्योंकि यह एम्बेडेड सिस्टम के लिए लक्षित API है, जिसमें हमेशा FPU नहीं होता है।
  • डीसी (कंप्यूटर प्रोग्राम) और बीसी प्रोग्रामिंग भाषा कार्यक्रम मनमाना-सटीक अंकगणितीय कैलकुलेटर हैं, लेकिन केवल (उपयोगकर्ता द्वारा निर्दिष्ट) भिन्नात्मक अंकों की निश्चित संख्या का ट्रैक रखते हैं।
  • फ्रैक्टिंट संख्याओं को क्यू (संख्या प्रारूप) के रूप में दर्शाता है। Q2.29 निश्चित-बिंदु संख्याएं,[19]Intel 80386 या Intel 80486SX प्रोसेसर वाले पुराने पीसी पर ड्राइंग को गति देने के लिए, जिसमें FPU की कमी थी।
  • कयामत (कयामत (1993 वीडियो गेम)) आईडी सॉफ्टवेयर द्वारा मैप सिस्टम, ज्योमेट्री, रेंडरिंग और प्लेयर मूवमेंट सहित सभी गैर-पूर्णांक संगणनाओं के लिए 16.16 निश्चित बिंदु प्रतिनिधित्व का उपयोग करने वाला अंतिम प्रथम-व्यक्ति शूटर गेम था। यह प्रतिनिधित्व अभी भी कयामत स्रोत बंदरगाहों की आधुनिक सूची में प्रयोग किया जाता है।
  • Microsoft Azure एक कंप्यूटर जितना के लिए Q Sharp|Q# प्रोग्रामिंग भाषा, जो क्वांटम लॉजिक गेट्स को लागू करती है, में क्वबिट्स के क्वांटम रजिस्टर पर निश्चित-बिंदु अंकगणितीय प्रदर्शन करने के लिए एक मानक संख्यात्मक पुस्तकालय शामिल है।[20]


यह भी देखें

फ़्लोटिंग-पॉइंट स्केलिंग को ब्लॉक करें को ब्लॉक करें

संदर्भ

  1. Julia programming language documentation FixedPointNumbers package.
  2. PostgreSQL manual, section 8.1.2. Arbitrary Precision Numbers
  3. JTC1/SC22/WG14 (2008), status of TR 18037: Embedded C
  4. GCC wiki, Fixed-Point Arithmetic Support
  5. Using GCC, section 5.13 Fixed-Point Types
  6. IBM Corporation, "Numeric items". Online documentation site, accessed on 2021-07-05.
  7. Ada 83 documentation: "Rationale, 5.3.2: Fixed Point Types". Accessed on 2021-07-05.
  8. 8.0 8.1 "Appendix A.2". TMS320C64x DSP Library Programmer's Reference (PDF). Dallas, Texas, USA: Texas Instruments Incorporated. October 2003. SPRU565. Archived (PDF) from the original on 2022-12-22. Retrieved 2022-12-22.
  9. "MathWorks Fixed-Point Toolbox Documentation Glossary". mathworks.com.
  10. "ARM Developer Suite AXD and armsd Debuggers Guide". 1.2. ARM Limited. 2001 [1999]. Chapter 4.7.9. AXD > AXD Facilities > Data formatting > Q-format. ARM DUI 0066D. Archived from the original on 2017-11-04.
  11. "Chapter 4.7.9. AXD > AXD Facilities > Data formatting > Q-format". RealView Development Suite AXD and armsd Debuggers Guide (PDF). 3.0. ARM Limited. 2006 [1999]. pp. 4–24. ARM DUI 0066G. Archived (PDF) from the original on 2017-11-04.
  12. "VisSim is now solidThinking Embed". www.vissim.com. solidThinking Inc.
  13. PS2 GS User's Guide, Chapter 7.1 "Explanatory Notes"
  14. "The TrueType Instruction Set: Data types".
  15. "[Freetype] Why 26.6 ?".
  16. "Dolphin Emulator". Dolphin Emulator. 2014-03-15.
  17. "WavPack Technical Description". www.wavpack.com. Retrieved 2015-07-13.
  18. Nest Labs Utilities library
  19. "Fractint, A Little Code". Archived from the original on 2010-10-27. Retrieved 2005-10-24.
  20. "Introduction to the Quantum Numerics Library". Retrieved 2019-11-13.


आगे की पढाई


बाहरी कड़ियाँ