निश्चित-बिंदु अंकगणित: Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
{{short description|Computer format for representing real numbers}} | {{short description|Computer format for representing real numbers}} | ||
{{about| | {{about|निश्चित-स्पष्ट अंश|किसी फलन के अपरिवर्तित बिंदु|निश्चित बिंदु (गणित)}} | ||
निश्चित-बिंदु | [[ कम्प्यूटिंग ]] में, निश्चित-बिंदु भिन्नात्मक (गैर-पूर्णांक) संख्याओं को उनके भिन्नात्मक भाग के अंकों की निश्चित संख्या को संग्रहीत करके प्रदर्शित करने की विधि है। उदाहरण के लिए, [[अमेरिकी डॉलर]] की रकम को अधिकांशतः दो आंशिक अंकों के साथ संग्रहित किया जाता है, जो [[सेंट (मुद्रा)]] (डॉलर का 1/100) का प्रतिनिधित्व करते हैं। अधिक सामान्यतः, यह शब्द कुछ निश्चित छोटी इकाई के पूर्णांक गुणकों के रूप में भिन्नात्मक मानों का प्रतिनिधित्व करने का उल्लेख कर सकता है, उदाहरण के लिए दस मिनट के अंतराल के पूर्णांक गुणज के रूप में घंटों की आंशिक राशि निश्चित-बिंदु संख्या प्रतिनिधित्व अधिकांशतः अधिक जटिल और कम्प्यूटेशनल रूप से मांग वाले [[फ़्लोटिंग-पॉइंट अंकगणित]] प्रतिनिधित्व के विपरीत होता है। | ||
निश्चित-बिंदु प्रतिनिधित्व में, अंश को अधिकांशतः पूर्णांक भाग के समान [[मूलांक]] में व्यक्त किया जाता है, किन्तु आधार ''बी'' के नकारात्मक [[घातांक]] का उपयोग करते है। सबसे सामान्य प्रकार [[दशमलव]] (आधार 10) और [[बाइनरी संख्या]] (आधार 2) हैं। उत्तरार्द्ध को सामान्यतः बाइनरी स्केलिंग के रूप में भी जाना जाता है। इस प्रकार, यदि ''n'' भिन्न अंक संग्रहीत हैं, तो मान सदैव ''b<sup>−n</sup>'' का पूर्णांक गुणज (गणित) होगा. निश्चित-बिंदु प्रतिनिधित्व का उपयोग पूर्णांक मानों के निम्न-क्रम अंकों को छोड़ने के लिए भी किया जा सकता है, उदाहरण के लिए जब बड़े डॉलर मूल्यों को $1000 के गुणज के रूप में दर्शाया जाता है। | |||
[[यांत्रिक कैलकुलेटर]] में निश्चित-बिंदु प्रतिनिधित्व आदर्श था। चूंकि अधिकांश आधुनिक केंद्रीय प्रसंस्करण इकाइयों में तेज़ [[ फ़्लोटिंग-पॉइंट इकाई ]] (एफपीयू) होती है, इसलिए निश्चित-बिंदु प्रतिनिधित्व का उपयोग अब केवल विशेष स्थितियों में किया जाता है, जैसे कि कम | जब दशमलव निश्चित-बिंदु संख्याओं को मानव पढ़ने के लिए प्रदर्शित किया जाता है, तो अंश अंकों को सामान्यतः [[दशमलव विभाजक]] द्वारा पूर्णांक भाग से अलग किया जाता है (सामान्यतः अंग्रेजी में '.', किन्तु कई अन्य भाषाओं में ',' या कुछ अन्य प्रतीक)। चूँकि, आंतरिक रूप से, कोई अलग नहीं है, और अंकों के दो समूहों के बीच अंतर केवल उन प्रोग्रामों द्वारा परिभाषित किया जाता है जो ऐसी संख्याओं को संभालते हैं। | ||
[[यांत्रिक कैलकुलेटर]] में निश्चित-बिंदु प्रतिनिधित्व आदर्श था। चूंकि अधिकांश आधुनिक केंद्रीय प्रसंस्करण इकाइयों में तेज़ [[ फ़्लोटिंग-पॉइंट इकाई ]] (एफपीयू) होती है, इसलिए निश्चित-बिंदु प्रतिनिधित्व का उपयोग अब केवल विशेष स्थितियों में किया जाता है, जैसे कि कम निवेश वाले [[ अंतः स्थापित प्रणाली ]] [[माइक्रोप्रोसेसर]] और [[ microcontroller | माइक्रोकंट्रोलर]] में; उन अनुप्रयोगों में जो उच्च गति और/या कम बिजली की खपत और/या छोटे एकीकृत परिपथ क्षेत्र की मांग करते हैं, जैसे [[ मूर्ति प्रोद्योगिकी ]], [[ वीडियो प्रसंस्करण ]] और [[ अंकीय संकेत प्रक्रिया ]]; या जब उनका उपयोग समस्या के लिए अधिक स्वाभाविक होता है। उत्तरार्द्ध के उदाहरण डॉलर की रकम का लेखा-जोखा है, जब सेंट के अंशों को कड़ाई से निर्धारित विधियों से पूर्ण सेंट में पूर्णांकित किया जाना चाहिए; और टेबल लुकअप द्वारा कार्यों का मूल्यांकन होता है। | |||
==प्रतिनिधित्व== | ==प्रतिनिधित्व== | ||
{| class="wikitable" style="margin:0 0 0 1em; text-align:right; float:right;" | {| class="wikitable" style="margin:0 0 0 1em; text-align:right; float:right;" | ||
|+ | |+ निश्चित-बिंदु प्रतिनिधित्व | ||
|+ | |+ 1/100 स्केलिंग के साथ | ||
|- | |- | ||
! | ! मूल्य | ||
का प्रतिनिधित्व किया | |||
! आंतरिक | |||
प्रतिनिधित्व | |||
|- | |- | ||
| 0.00|| 0 | | 0.00|| 0 | ||
Line 30: | Line 34: | ||
| 314.160|| 31416 | | 314.160|| 31416 | ||
|} | |} | ||
भिन्नात्मक संख्या का निश्चित-बिंदु प्रतिनिधित्व अनिवार्य रूप से [[पूर्णांक]] है जिसे निश्चित स्केलिंग कारक द्वारा अंतर्निहित रूप से गुणा किया जाना है। उदाहरण के लिए, मान 1.23 को 1/1000 के अंतर्निहित स्केलिंग कारक के साथ पूर्णांक मान 1230 के रूप में चर में संग्रहीत किया जा सकता है (जिसका अर्थ है कि अंतिम 3 दशमलव अंकों को परोक्ष रूप से दशमलव अंश माना जाता है), और मान {{thinspace|1|230|000}} को 1000 के अंतर्निहित स्केलिंग कारक के साथ 1230 के रूप में दर्शाया जा सकता है (शून्य से 3 निहित दशमलव अंश अंकों के साथ, | भिन्नात्मक संख्या का निश्चित-बिंदु प्रतिनिधित्व अनिवार्य रूप से [[पूर्णांक]] है जिसे निश्चित स्केलिंग कारक द्वारा अंतर्निहित रूप से गुणा किया जाना है। उदाहरण के लिए, मान 1.23 को 1/1000 के अंतर्निहित स्केलिंग कारक के साथ पूर्णांक मान 1230 के रूप में चर में संग्रहीत किया जा सकता है (जिसका अर्थ है कि अंतिम 3 दशमलव अंकों को परोक्ष रूप से दशमलव अंश माना जाता है), और मान {{thinspace|1|230|000}} को 1000 के अंतर्निहित स्केलिंग कारक के साथ 1230 के रूप में दर्शाया जा सकता है (शून्य से 3 निहित दशमलव अंश अंकों के साथ, अर्थात दाईं ओर 3 अंतर्निहित शून्य अंकों के साथ)। यह प्रतिनिधित्व मानक पूर्णांक [[अंकगणितीय तर्क इकाई]] को [[तर्कसंगत संख्या]] गणना करने की अनुमति देता है। | ||
नकारात्मक मान | नकारात्मक मान सामान्यतः बाइनरी फिक्स्ड-पॉइंट प्रारूप में उपरोक्त के रूप में अंतर्निहित स्केलिंग कारक के साथ दो के पूरक प्रतिनिधित्व में हस्ताक्षरित पूर्णांक के रूप में दर्शाए जाते हैं। मान का चिह्न सदैव [[ बिट क्रमांकन ]] (1 = नकारात्मक, 0 = गैर-नकारात्मक) द्वारा दर्शाया जाएगा, तथापि अंश बिट्स की संख्या बिट्स की कुल संख्या से अधिक या उसके बराबर हो। उदाहरण के लिए, 8-बिट हस्ताक्षरित बाइनरी पूर्णांक (11110101)<sub>2</sub> = −11, -3, +5, और +12 निहित अंश बिट्स के साथ लिया गया था, मान −11/2<sup>−3</sup> = −88, −11/2<sup>5</sup> = −0.{{thinspace|343|75}}, और −11/2<sup>12</sup> = −0.{{thinspace|002|685|546|875}}, क्रमश का प्रतिनिधित्व करता है । | ||
वैकल्पिक रूप से, नकारात्मक मानों को संकेत-परिमाण प्रारूप में पूर्णांक द्वारा दर्शाया जा सकता है, जिस स्थिति में संकेत को कभी भी निहित अंश बिट्स की संख्या में | वैकल्पिक रूप से, नकारात्मक मानों को संकेत-परिमाण प्रारूप में पूर्णांक द्वारा दर्शाया जा सकता है, जिस स्थिति में संकेत को कभी भी निहित अंश बिट्स की संख्या में सम्मिलित नहीं किया जाता है। यह संस्करण सामान्यतः दशमलव निश्चित-बिंदु अंकगणित में अधिक उपयोग किया जाता है। इस प्रकार हस्ताक्षरित 5-अंकीय दशमलव पूर्णांक (−00025)<sub>10</sub>, -3, +5, और +12 निहित दशमलव अंश अंकों के साथ लिया गया, मान क्रमश -25/10<sup>−3</sup> = −25000, −25/10<sup>5</sup> = −0.00025, और −25/10<sup>12</sup> = −0.{{thinspace|000|000|000|025}}, का प्रतिनिधित्व करता है। | ||
एक प्रोग्राम | एक प्रोग्राम सामान्यतः यह मान लेगा कि सभी निश्चित-बिंदु मान जो किसी दिए गए चर में संग्रहीत किए जाएंगे, या किसी दिए गए निर्देश (कंप्यूटिंग) द्वारा उत्पादित किए जाएंगे, उनका स्केलिंग कारक समान होता है। यह मापदंड सामान्यतः प्रोग्रामर द्वारा आवश्यक स्पष्टता और परिशुद्धता और संग्रहीत किए जाने वाले मानों की सीमा के आधार पर चुना जा सकता है। | ||
किसी चर या सूत्र का स्केलिंग कारक प्रोग्राम में स्पष्ट रूप से प्रकट नहीं हो सकता है। [[सॉफ्टवेयर इंजीनियरिंग]] के लिए आवश्यक है कि इसे [[सॉफ़्टवेयर दस्तावेज़ीकरण]] में, कम से कम स्रोत कोड में [[टिप्पणी (कंप्यूटिंग)]] के रूप में प्रदान किया | किसी चर या सूत्र का स्केलिंग कारक प्रोग्राम में स्पष्ट रूप से प्रकट नहीं हो सकता है। [[सॉफ्टवेयर इंजीनियरिंग]] के लिए आवश्यक है कि इसे [[सॉफ़्टवेयर दस्तावेज़ीकरण]] में, कम से कम स्रोत कोड में [[टिप्पणी (कंप्यूटिंग)]] के रूप में प्रदान किया जाता है। | ||
===स्केलिंग कारकों का चयन=== | ===स्केलिंग कारकों का चयन=== | ||
अधिक दक्षता के लिए, स्केलिंग कारकों को | अधिक दक्षता के लिए, स्केलिंग कारकों को अधिकांशतः आंतरिक रूप से पूर्णांकों का प्रतिनिधित्व करने के लिए उपयोग किए जाने वाले आधार बी के घातांक (सकारात्मक या नकारात्मक) के रूप में चुना जाता है। चूँकि, अधिकांशतः सबसे अच्छा स्केलिंग कारक एप्लिकेशन द्वारा निर्धारित होता है। इस प्रकार व्यक्ति अधिकांशतः मानवीय सुविधा के लिए 10 की घात वाले स्केलिंग कारकों का उपयोग करता है (उदाहरण के लिए डॉलर के मूल्यों के लिए 1/100), तब भी जब पूर्णांकों को बाइनरी में आंतरिक रूप से दर्शाया जाता है। दशमलव स्केलिंग कारक भी [[इकाइयों की अंतर्राष्ट्रीय प्रणाली]] मीट्रिक (एसआई) प्रणाली के साथ अच्छी तरह से मेल खाते हैं, क्योंकि निश्चित-बिंदु स्केलिंग कारक की पसंद अधिकांशतः माप की इकाई (जैसे [[मीटर]] के अतिरिक्त [[सेंटीमीटर]] या [[माइक्रोमीटर]]) की पसंद के बराबर होती है। | ||
चूँकि, अन्य स्केलिंग कारकों का उपयोग कभी-कभी किया जा सकता है, जैसे घंटों की आंशिक मात्रा को सेकंड की पूर्णांक संख्या के रूप में दर्शाया जा सकता है; अर्थात् 1/3600 के स्केल फैक्टर के साथ निश्चित-बिंदु संख्या के रूप में होता है। | |||
यहां तक कि सबसे सावधानीपूर्वक गोलाई के साथ, स्केलिंग कारक एस के साथ दर्शाए गए निश्चित-बिंदु मानों में संग्रहीत पूर्णांक में ±0.5 तक की त्रुटि हो सकती है, | यहां तक कि सबसे सावधानीपूर्वक गोलाई के साथ, स्केलिंग कारक एस के साथ दर्शाए गए निश्चित-बिंदु मानों में संग्रहीत पूर्णांक में ±0.5 तक की त्रुटि हो सकती है, अर्थात मान में ±0.5 एस इसलिए, छोटे स्केलिंग कारक सामान्यतः अधिक स्पष्ट परिणाम उत्पन्न करते हैं। | ||
दूसरी ओर, छोटे स्केलिंग कारक का | दूसरी ओर, छोटे स्केलिंग कारक का कारण मूल्यों की छोटी श्रृंखला है जिसे किसी दिए गए प्रोग्राम चर में संग्रहीत किया जा सकता है। अधिकतम निश्चित-बिंदु मान जिसे चर में संग्रहीत किया जा सकता है वह सबसे बड़ा पूर्णांक मान है जिसे इसमें संग्रहीत किया जा सकता है, स्केलिंग कारक द्वारा गुणा किया जा सकता है; और इसी प्रकार न्यूनतम मूल्य के लिए भी उदाहरण के लिए, नीचे दी गई तालिका निहित स्केलिंग कारक एस, न्यूनतम और अधिकतम प्रतिनिधित्व योग्य मान वी<sub>min</sub> और वी<sub>max</sub>, देती है और मूल्यों की स्पष्टता δ = S/2 जिसे 16-बिट हस्ताक्षरित बाइनरी निश्चित बिंदु प्रारूप में दर्शाया जा सकता है, जो निहित अंश बिट्स की संख्या f पर निर्भर करता है। | ||
{| class= "wikitable" style="margin:0 0 0 1em; float:center;" | {| class= "wikitable" style="margin:0 0 0 1em; float:center;" | ||
|+ | |+ कुछ 16-बिट हस्ताक्षरित बाइनरी फिक्स्ड-पॉइंट प्रारूपों के मापदंड | ||
|- | |- | ||
! ''f'' !! ''S'' !! ''δ'' !! ''V''<sub>min</sub> !!''V''<sub>max</sub> | ! ''f'' !! ''S'' !! ''δ'' !! ''V''<sub>min</sub> !!''V''<sub>max</sub> | ||
Line 68: | Line 72: | ||
| 20 || 1/2<sup>20</sup> = 1/{{thinspace|1|048|576}} || < 0.{{thinspace|000|000|5}} || −0.{{thinspace|031|250|000|000|000|000|00}} || +0.{{thinspace|031|249|046|325|683|593|75}} | | 20 || 1/2<sup>20</sup> = 1/{{thinspace|1|048|576}} || < 0.{{thinspace|000|000|5}} || −0.{{thinspace|031|250|000|000|000|000|00}} || +0.{{thinspace|031|249|046|325|683|593|75}} | ||
|} | |} | ||
प्रपत्र 2 | प्रपत्र 2<sup>n</sup>-1 के स्केलिंग कारकों के साथ निश्चित-बिंदु प्रारूप (अर्थात् 1, 3, 7, 15, 31, आदि) को इमेज प्रोसेसिंग और अन्य डिजिटल सिग्नल प्रोसेसिंग कार्यों के लिए उपयुक्त कहा गया है। उनसे अपेक्षा की जाती है कि वे सामान्य 2<sup>n</sup> की तुलना में निश्चित और फ़्लोटिंग-पॉइंट मानों के बीच अधिक सुसंगत रूपांतरण प्रदान करें स्केलिंग। [[जूलिया (प्रोग्रामिंग भाषा)]] प्रोग्रामिंग भाषा दोनों संस्करणों को प्रयुक्त करती है।<ref name="julia"/> | ||
=== | ===स्पष्ट मान=== | ||
कोई भी द्विआधारी अंश a/2<sup> | कोई भी द्विआधारी अंश a/2<sup>m</sup>, जैसे 1/16 या 17/32, को निश्चित-बिंदु में स्पष्ट रूप से दर्शाया जा सकता है, दो की बल वाले स्केलिंग कारक 1/2<sup>n</sup> के साथ किसी भी n ≥ m के साथकिया जाता है चूँकि, अधिकांश दशमलव अंश जैसे 0.1 या 0.123 आधार 2 में अनंत दोहराव वाले अंश हैं और इसलिए उन्हें इस तरह प्रदर्शित नहीं किया जा सकता है। | ||
इसी प्रकार, कोई भी दशमलव अंश a/10<sup> | इसी प्रकार, कोई भी दशमलव अंश a/10<sup>m</sup>, जैसे कि 1/100 या 37/1000, को पावर-दस स्केलिंग फैक्टर 1/10<sup>n</sup> के साथ निश्चित बिंदु में स्पष्ट रूप से दर्शाया जा सकता है किसी भी n ≥ m के साथ यह दशमलव प्रारूप किसी बाइनरी अंश a/2<sup>m</sup> का भी प्रतिनिधित्व कर सकता है, जैसे 1/8 (0.125) या 17/32 (0.53125) है। | ||
अधिक | अधिक सामान्यतः, ए और बी [[सहअभाज्य पूर्णांक]] और बी सकारात्मक के साथ तर्कसंगत संख्या ए/बी को बाइनरी निश्चित बिंदु में स्पष्ट रूप से दर्शाया जा सकता है यदि बी 2 की बल है; और दशमलव निश्चित बिंदु में केवल तभी यदि b में 2 और/या 5 के अतिरिक्त कोई [[अभाज्य संख्या]] गुणनखंड नही होता है। | ||
===फ़्लोटिंग-पॉइंट के साथ तुलना=== | ===फ़्लोटिंग-पॉइंट के साथ तुलना=== | ||
फिक्स्ड-पॉइंट संगणनाएं तेज़ हो सकती हैं और/या फ़्लोटिंग-पॉइंट की तुलना में कम हार्डवेयर का उपयोग कर सकती हैं। यदि प्रस्तुत किए जाने वाले मानों की सीमा पहले से ज्ञात हो और पर्याप्त रूप से सीमित हो, तो निश्चित बिंदु उपलब्ध बिट्स का | फिक्स्ड-पॉइंट संगणनाएं तेज़ हो सकती हैं और/या फ़्लोटिंग-पॉइंट की तुलना में कम हार्डवेयर का उपयोग कर सकती हैं। यदि प्रस्तुत किए जाने वाले मानों की सीमा पहले से ज्ञात हो और पर्याप्त रूप से सीमित हो, तो निश्चित बिंदु उपलब्ध बिट्स का उत्तम उपयोग कर सकता है। उदाहरण के लिए, यदि 0 और 1 के बीच की संख्या को दर्शाने के लिए 32 बिट उपलब्ध हैं, तो निश्चित-बिंदु प्रतिनिधित्व में 1.2 × 10<sup>−10</sup> से कम त्रुटि हो सकती है।, जबकि मानक फ़्लोटिंग-पॉइंट प्रतिनिधित्व में 596 × 10<sup>−10</sup> तक त्रुटि हो सकती है क्योंकि 9 बिट्स गतिशील स्केलिंग कारक के संकेत और प्रतिपादक के साथ व्यर्थ हो जाते हैं। विशेष रूप से, 32-बिट फिक्स्ड-प्वाइंट की तुलना [[आईईईई 754]] फ्लोटिंग-प्वाइंट ऑडियो से करने पर, 40 [[डेसिबल]] से कम [[हेडरूम (ऑडियो सिग्नल प्रोसेसिंग)]] की आवश्यकता वाली रिकॉर्डिंग में 32-बिट फिक्स्ड का उपयोग करके उच्च सिग्नल-टू-ध्वनि अनुपात होता है। | ||
फिक्स्ड-पॉइंट गणनाओं का उपयोग करने वाले प्रोग्राम | फिक्स्ड-पॉइंट गणनाओं का उपयोग करने वाले प्रोग्राम सामान्यतः फ़्लोटिंग-पॉइंट का उपयोग करने वालों की तुलना में अधिक पोर्टेबल होते हैं, क्योंकि वे एफपीयू की उपलब्धता पर निर्भर नहीं होते हैं। आईईईई फ़्लोटिंग पॉइंट मानक को व्यापक रूप से अपनाए जाने से पहले यह लाभ विशेष रूप से सशक्त था, जब ही डेटा के साथ फ़्लोटिंग-पॉइंट गणना निर्माता के आधार पर और अधिकांशतः कंप्यूटर मॉडल के आधार पर अलग-अलग परिणाम देती थी। | ||
कई एम्बेडेड प्रोसेसर में एफपीयू की कमी होती है, क्योंकि पूर्णांक अंकगणितीय इकाइयों को | कई एम्बेडेड प्रोसेसर में एफपीयू की कमी होती है, क्योंकि पूर्णांक अंकगणितीय इकाइयों को अधिक कम [[ तर्क द्वार ]] की आवश्यकता होती है और एफपीयू की तुलना में बहुत छोटे एकीकृत परिपथ क्षेत्र का उपभोग करते हैं; और कम गति वाले उपकरणों पर फ़्लोटिंग-पॉइंट का सॉफ़्टवेयर [[अनुकरण (कंप्यूटिंग)]] अधिकांश अनुप्रयोगों के लिए बहुत धीमा होता था। पहले के [[ निजी कंप्यूटर ]] और [[गेम कंसोल]] जैसे [[इंटेल 386]] और [[इंटेल 486]] के सीपीयू चिप्स में भी एफपीयू का अभाव था। | ||
किसी भी निश्चित-बिंदु प्रारूप का पूर्ण रिज़ॉल्यूशन (क्रमिक मानों के बीच का अंतर) पूरी रेंज पर स्थिर होता है, अर्थात् स्केलिंग कारक | किसी भी निश्चित-बिंदु प्रारूप का पूर्ण रिज़ॉल्यूशन (क्रमिक मानों के बीच का अंतर) पूरी रेंज पर स्थिर होता है, अर्थात् स्केलिंग कारक एस इसके विपरीत, फ़्लोटिंग-पॉइंट प्रारूप का सापेक्ष रिज़ॉल्यूशन उनकी पूरी रेंज पर लगभग स्थिर होता है, अन्दर बदलता रहता है आधार बी का कारक; जबकि उनका पूर्ण रिज़ॉल्यूशन परिमाण के कई क्रमों के अनुसार भिन्न होता है। | ||
कई | कई स्थितियों में, निश्चित-बिंदु गणनाओं की क्वांटिज़ेशन (सिग्नल प्रोसेसिंग) त्रुटियों का विश्लेषण समतुल्य फ़्लोटिंग-पॉइंट गणनाओं की तुलना में सरल होता है। ट्रंकेशन पर रैखिककरण तकनीकों को प्रयुक्त करना, जैसे कि [[ तड़पना ]] और/या ध्वनि को आकार देना, निश्चित-बिंदु अंकगणित के अन्दर अधिक सीधा-आगे है। दूसरी ओर, निश्चित बिंदु के उपयोग के लिए प्रोग्रामर को अधिक देखभाल की आवश्यकता होती है। अतिप्रवाह से बचने के लिए गणना में चर की श्रेणियों और सभी मध्यवर्ती मूल्यों के लिए बहुत सख्त अनुमान की आवश्यकता होती है, और अधिकांशतः उनके स्केलिंग कारकों को समायोजित करने के लिए अतिरिक्त कोड की भी आवश्यकता होती है। फिक्स्ड-पॉइंट प्रोग्रामिंग के लिए सामान्यतः C डेटा प्रकार मुख्य प्रकार के उपयोग की आवश्यकता होती है। फिक्स्ड-पॉइंट एप्लिकेशन का उपयोग कर सकते हैं, जो निश्चित-पॉइंट वातावरण है जिसमें फिक्स्ड-पॉइंट डेटा के प्रत्येक सरणी (ब्लॉक) को ही शब्द में सामान्य घातांक के साथ स्केल किया जाता है। | ||
==अनुप्रयोग== | ==अनुप्रयोग== | ||
दशमलव निश्चित-बिंदु का सामान्य उपयोग मौद्रिक मूल्यों को संग्रहीत करने के लिए होता है, जिसके लिए फ़्लोटिंग-पॉइंट संख्याओं के जटिल गोलाई नियम | दशमलव निश्चित-बिंदु का सामान्य उपयोग मौद्रिक मूल्यों को संग्रहीत करने के लिए होता है, जिसके लिए फ़्लोटिंग-पॉइंट संख्याओं के जटिल गोलाई नियम अधिकांशतः दायित्व होते हैं। उदाहरण के लिए, C में लिखा गया ओपन सोर्स मनी मैनेजमेंट एप्लिकेशन [[GnuCash|ग्नूकैश]], इस कारण से संस्करण 1.6 के रूप में फ्लोटिंग-पॉइंट से फिक्स्ड-पॉइंट पर स्विच हो गया था। | ||
बाइनरी फिक्स्ड-पॉइंट (बाइनरी स्केलिंग) का उपयोग 1960 के दशक के अंत से 1980 के दशक तक व्यापक रूप से वास्तविक समय कंप्यूटिंग के लिए किया गया था जो गणितीय रूप से गहन था, जैसे उड़ान सिमुलेशन और परमाणु ऊर्जा संयंत्र नियंत्रण एल्गोरिदम | बाइनरी फिक्स्ड-पॉइंट (बाइनरी स्केलिंग) का उपयोग 1960 के दशक के अंत से 1980 के दशक तक व्यापक रूप से वास्तविक समय कंप्यूटिंग के लिए किया गया था जो गणितीय रूप से गहन था, जैसे उड़ान सिमुलेशन और परमाणु ऊर्जा संयंत्र नियंत्रण एल्गोरिदम में यह अभी भी कई डिजिटल सिग्नल प्रोसेसिंग अनुप्रयोगों और कस्टम मेड माइक्रोप्रोसेसरों में उपयोग किया जाता है। कोणों से संबंधित गणनाओं में [[द्विआधारी कोणीय माप]] (बीएएम) का उपयोग किया जाता था। | ||
बाइनरी फिक्स्ड पॉइंट का उपयोग [[STM32]] श्रृंखला [[CORDIC]] सह-प्रोसेसरों और [[JPEG]] छवियों को संपीड़ित करने के लिए उपयोग किए जाने वाले [[असतत कोसाइन परिवर्तन]] ( | बाइनरी फिक्स्ड पॉइंट का उपयोग [[STM32|एसटीएम32]] श्रृंखला [[CORDIC|कॉरडिक]] सह-प्रोसेसरों और [[JPEG|जेपीईजी]] छवियों को संपीड़ित करने के लिए उपयोग किए जाने वाले [[असतत कोसाइन परिवर्तन]] (डीसीटी) एल्गोरिदम में किया जाता है। | ||
बिजली मीटर और वास्तविक समय की घड़ियाँ जैसे इलेक्ट्रॉनिक उपकरण | बिजली मीटर और वास्तविक समय की घड़ियाँ जैसे इलेक्ट्रॉनिक उपकरण अधिकांशतः प्रारंभ की गई त्रुटियों की आवरण के लिए बहुपद का उपयोग करते हैं, उदाहरण के लिए तापमान या बिजली आपूर्ति वोल्टेज से। गुणांक [[बहुपद प्रतिगमन]] द्वारा निर्मित होते हैं। बाइनरी निश्चित बिंदु बहुपद फ़्लोटिंग-पॉइंट की तुलना में स्पष्टता के अधिक बिट्स का उपयोग कर सकते हैं, और सस्ते सीपीयू का उपयोग करके तेज़ कोड में ऐसा कर सकते हैं। स्पष्टता, उपकरणों के लिए महत्वपूर्ण, समतुल्य-बिट फ़्लोटिंग-पॉइंट गणनाओं की तुलना में अच्छी तरह से तुलना करती है, यदि निश्चित-बिंदु बहुपदों को गुणनखंडित किया जाता है (उदाहरण के लिए 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/1000) × (1/32) = 1/32000 के साथ पूर्णांक 123×155 = 19065 प्राप्त होता है। , अर्थात 19065/32000 = 0. | उदाहरण के लिए, संख्या 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/1000) × (1/32) = 1/32000 के साथ पूर्णांक 123×155 = 19065 प्राप्त होता है। , अर्थात 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। अन्य उदाहरण के रूप में, पहली संख्या को 155 से विभाजित करने पर 1/32 (155/32 = 4.84375) द्वारा स्केल किया गया पूर्णांक 3456÷155 = 22 (गोल) प्राप्त होता है, जिसमें अंतर्निहित स्केलिंग कारक (1/ 100)/(1/32) = 32/100 = 8/25, अर्थात 22×32/100 = 7. | उदाहरण के लिए, 3456 को 1/100 (34.56) से विभाजित करने पर और 1234 को 1/1000 (1.234) से विभाजित करने पर स्केल फैक्टर (1/100)/(1/1000) = के साथ पूर्णांक 3456÷1234 = 3 (गोल) प्राप्त होता है। 10, अर्थात, 30। अन्य उदाहरण के रूप में, पहली संख्या को 155 से विभाजित करने पर 1/32 (155/32 = 4.84375) द्वारा स्केल किया गया पूर्णांक 3456÷155 = 22 (गोल) प्राप्त होता है, जिसमें अंतर्निहित स्केलिंग कारक (1/ 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,230,000÷6250 = 197 (गोल) स्केल फैक्टर 1/1000 (0.197) के साथ होगा। स्पष्ट मान 1.23/6.25 0.1968 है। | ||
===स्केलिंग रूपांतरण=== | ===स्केलिंग रूपांतरण=== | ||
निश्चित-बिंदु कंप्यूटिंग में किसी मान को भिन्न स्केलिंग कारक में परिवर्तित करना | निश्चित-बिंदु कंप्यूटिंग में किसी मान को भिन्न स्केलिंग कारक में परिवर्तित करना अधिकांशतः आवश्यक होता है। यह ऑपरेशन आवश्यक है, उदाहरण के लिए: | ||
* किसी मान को प्रोग्राम वैरिएबल में संग्रहीत करने के लिए जिसमें अलग अंतर्निहित स्केलिंग कारक होता है; | * किसी मान को प्रोग्राम वैरिएबल में संग्रहीत करने के लिए जिसमें अलग अंतर्निहित स्केलिंग कारक होता है; | ||
* दो मानों को ही स्केलिंग फ़ैक्टर में परिवर्तित करना, | * दो मानों को ही स्केलिंग फ़ैक्टर में परिवर्तित करना, जिससे उन्हें जोड़ा या घटाया जा सकता है; | ||
* किसी मूल्य को दूसरे से गुणा या विभाजित करने के बाद उसके मूल स्केलिंग कारक को पुनर्स्थापित | * किसी मूल्य को दूसरे से गुणा या विभाजित करने के बाद उसके मूल स्केलिंग कारक को पुनर्स्थापित करता है; | ||
* किसी विभाजन के परिणाम की | * किसी विभाजन के परिणाम की स्पष्टता में सुधार करना; | ||
* यह सुनिश्चित करने के लिए कि किसी उत्पाद या भागफल का स्केलिंग कारक 10 | * यह सुनिश्चित करने के लिए कि किसी उत्पाद या भागफल का स्केलिंग कारक 10<sup>n</sup> या 2<sup>n</sup> जैसी साधारण बल है; | ||
* यह सुनिश्चित करने के लिए कि किसी ऑपरेशन के परिणाम को ओवरफ्लो के बिना प्रोग्राम वेरिएबल में संग्रहीत किया जा सकता है; | * यह सुनिश्चित करने के लिए कि किसी ऑपरेशन के परिणाम को ओवरफ्लो के बिना प्रोग्राम वेरिएबल में संग्रहीत किया जा सकता है; | ||
* निश्चित-बिंदु डेटा को संसाधित करने वाले हार्डवेयर की | * निश्चित-बिंदु डेटा को संसाधित करने वाले हार्डवेयर की निवेश को कम करना। | ||
किसी संख्या को स्केलिंग कारक आर के साथ निश्चित बिंदु प्रकार से स्केलिंग कारक एस के साथ दूसरे प्रकार में परिवर्तित करने के लिए, अंतर्निहित पूर्णांक को अनुपात आर/एस से गुणा किया जाना चाहिए। इस प्रकार, उदाहरण के लिए, मान 1.23 = 123/100 को स्केलिंग कारक R=1/100 से स्केलिंग कारक S=1/1000 वाले में बदलने के लिए, पूर्णांक 123 को (1/100)/(1/1000) से गुणा किया जाना चाहिए ) = 10, प्रतिनिधित्व 1230/1000 प्राप्त होता है। | किसी संख्या को स्केलिंग कारक आर के साथ निश्चित बिंदु प्रकार से स्केलिंग कारक एस के साथ दूसरे प्रकार में परिवर्तित करने के लिए, अंतर्निहित पूर्णांक को अनुपात आर/एस से गुणा किया जाना चाहिए। इस प्रकार, उदाहरण के लिए, मान 1.23 = 123/100 को स्केलिंग कारक R=1/100 से स्केलिंग कारक S=1/1000 वाले में बदलने के लिए, पूर्णांक 123 को (1/100)/(1/1000) से गुणा किया जाना चाहिए ) = 10, प्रतिनिधित्व 1230/1000 प्राप्त होता है। | ||
यदि स्केलिंग कारक पूर्णांक का प्रतिनिधित्व करने के लिए आंतरिक रूप से उपयोग की जाने वाली आधार की | यदि स्केलिंग कारक पूर्णांक का प्रतिनिधित्व करने के लिए आंतरिक रूप से उपयोग की जाने वाली आधार की बल है, तो स्केलिंग कारक को बदलने के लिए केवल पूर्णांक के निम्न-क्रम अंकों को छोड़ने या शून्य अंक जोड़ने की आवश्यकता होती है। चूँकि, इस ऑपरेशन में संख्या का चिह्न सुरक्षित रहना चाहिए। दो के पूरक प्रतिनिधित्व में, इसका अर्थ है [[अंकगणितीय बदलाव]] संचालन के रूप में साइन बिट का विस्तार करता है। | ||
यदि S, R को विभाजित नहीं करता है (विशेष रूप से, यदि नया स्केलिंग कारक S मूल R से अधिक है), तो नए पूर्णांक को पूर्णांकित करना पड़ सकता है। | यदि S, R को विभाजित नहीं करता है (विशेष रूप से, यदि नया स्केलिंग कारक S मूल R से अधिक है), तो नए पूर्णांक को पूर्णांकित करना पड़ सकता है। | ||
Line 137: | Line 141: | ||
विशेष रूप से, यदि r और s अंतर्निहित स्केलिंग कारकों R और S के साथ निश्चित-बिंदु चर हैं, तो ऑपरेशन r ← r×s को संबंधित पूर्णांकों को गुणा करने और परिणाम को S द्वारा स्पष्ट रूप से विभाजित करने की आवश्यकता होती है। परिणाम को गोल करना पड़ सकता है, और अतिप्रवाह हो सकता है तब हो सकती है। | विशेष रूप से, यदि r और s अंतर्निहित स्केलिंग कारकों R और S के साथ निश्चित-बिंदु चर हैं, तो ऑपरेशन r ← r×s को संबंधित पूर्णांकों को गुणा करने और परिणाम को S द्वारा स्पष्ट रूप से विभाजित करने की आवश्यकता होती है। परिणाम को गोल करना पड़ सकता है, और अतिप्रवाह हो सकता है तब हो सकती है। | ||
उदाहरण के लिए, यदि सामान्य स्केलिंग कारक 1/100 है, तो 1.23 को 0.25 से गुणा करने पर 123 को 25 से गुणा करने पर 1/10000 के मध्यवर्ती स्केलिंग कारक के साथ 3075 प्राप्त होता है। मूल स्केलिंग कारक 1/100 पर लौटने के लिए, पूर्णांक 3075 को 1/100 से गुणा किया जाना चाहिए, | उदाहरण के लिए, यदि सामान्य स्केलिंग कारक 1/100 है, तो 1.23 को 0.25 से गुणा करने पर 123 को 25 से गुणा करने पर 1/10000 के मध्यवर्ती स्केलिंग कारक के साथ 3075 प्राप्त होता है। मूल स्केलिंग कारक 1/100 पर लौटने के लिए, पूर्णांक 3075 को 1/100 से गुणा किया जाना चाहिए, अर्थात 100 से विभाजित किया जाना चाहिए, जिससे या तो 31 (0.31) या 30 (0.30) प्राप्त हो सके, जो इस्तेमाल की गई [[गोलाई]] पर निर्भर करता है। . | ||
इसी तरह, ऑपरेशन r ← r/s के लिए पूर्णांकों को विभाजित करने और भागफल को स्पष्ट रूप से S से गुणा करने की आवश्यकता | इसी तरह, ऑपरेशन r ← r/s के लिए पूर्णांकों को विभाजित करने और भागफल को स्पष्ट रूप से S से गुणा करने की आवश्यकता होती है। पूर्णांकन और/या अतिप्रवाह यहां भी हो सकता है। | ||
===फ़्लोटिंग-पॉइंट से और उससे रूपांतरण=== | ===फ़्लोटिंग-पॉइंट से और उससे रूपांतरण=== | ||
किसी संख्या को फ़्लोटिंग पॉइंट से निश्चित पॉइंट में बदलने के लिए, कोई इसे स्केलिंग फ़ैक्टर S से गुणा कर सकता है, फिर परिणाम को निकटतम पूर्णांक में गोल कर सकता है। यह सुनिश्चित करने के लिए ध्यान रखा जाना चाहिए कि परिणाम गंतव्य चर या रजिस्टर में फिट बैठता है। स्केलिंग कारक और | किसी संख्या को फ़्लोटिंग पॉइंट से निश्चित पॉइंट में बदलने के लिए, कोई इसे स्केलिंग फ़ैक्टर S से गुणा कर सकता है, फिर परिणाम को निकटतम पूर्णांक में गोल कर सकता है। यह सुनिश्चित करने के लिए ध्यान रखा जाना चाहिए कि परिणाम गंतव्य चर या रजिस्टर में फिट बैठता है। स्केलिंग कारक और स्टोरेज आकार और रेंज इनपुट संख्याओं के आधार पर, रूपांतरण में कोई राउंडिंग सम्मिलित नहीं हो सकती है। | ||
एक निश्चित-बिंदु संख्या को फ़्लोटिंग-पॉइंट में परिवर्तित करने के लिए, कोई पूर्णांक को फ़्लोटिंग-पॉइंट में परिवर्तित कर सकता है और फिर इसे स्केलिंग कारक एस द्वारा विभाजित कर सकता है। यदि पूर्णांक का पूर्ण मान 2 से अधिक है तो इस रूपांतरण में पूर्णांकन | एक निश्चित-बिंदु संख्या को फ़्लोटिंग-पॉइंट में परिवर्तित करने के लिए, कोई पूर्णांक को फ़्लोटिंग-पॉइंट में परिवर्तित कर सकता है और फिर इसे स्केलिंग कारक एस द्वारा विभाजित कर सकता है। यदि पूर्णांक का पूर्ण मान 2<sup>24</sup> से अधिक है तो इस रूपांतरण में पूर्णांकन सम्मिलित हो सकता है। (बाइनरी सिंगल-प्रिसिजन आईईईई फ़्लोटिंग पॉइंट के लिए) या 2<sup>53</sup> का (डबल-प्रिसिजन के लिए)। यदि |s| तो ओवरफ्लो या [[ अधःप्रवाह ]] हो सकता है क्रमशः बहुत बड़ा या बहुत छोटा है। | ||
==हार्डवेयर समर्थन== | ==हार्डवेयर समर्थन== | ||
===स्केलिंग और पुनर्सामान्यीकरण=== | ===स्केलिंग और पुनर्सामान्यीकरण=== | ||
विशिष्ट प्रोसेसर के पास निश्चित-बिंदु अंकगणित के लिए विशिष्ट समर्थन नहीं होता है। | विशिष्ट प्रोसेसर के पास निश्चित-बिंदु अंकगणित के लिए विशिष्ट समर्थन नहीं होता है। चूँकि, बाइनरी अंकगणित वाले अधिकांश कंप्यूटरों में तेज़ [[बिट शिफ्ट]] निर्देश होते हैं जो पूर्णांक को 2 की किसी भी बल से गुणा या विभाजित कर सकते हैं; विशेष रूप से, अंकगणितीय बदलाव निर्देश इन निर्देशों का उपयोग संख्या के चिह्न को संरक्षित करते हुए स्केलिंग कारकों को जल्दी से बदलने के लिए किया जा सकता है जो 2 की घात हैं। | ||
[[आईबीएम 1620]] और [[बरोज़ मीडियम सिस्टम्स]] जैसे शुरुआती कंप्यूटरों ने पूर्णांकों के लिए [[बाइनरी-कोडित दशमलव]] (बीसीडी) प्रतिनिधित्व का उपयोग किया, अर्थात् आधार 10 जहां प्रत्येक दशमलव अंक स्वतंत्र रूप से 4 बिट्स के साथ एन्कोड किया गया था। कुछ प्रोसेसर, जैसे माइक्रोकंट्रोलर, अभी भी इसका उपयोग कर सकते हैं। ऐसी मशीनों में, दशमलव स्केलिंग कारकों का रूपांतरण बिट शिफ्ट और/या मेमोरी एड्रेस हेरफेर द्वारा किया जा सकता है। | [[आईबीएम 1620]] और [[बरोज़ मीडियम सिस्टम्स]] जैसे शुरुआती कंप्यूटरों ने पूर्णांकों के लिए [[बाइनरी-कोडित दशमलव]] (बीसीडी) प्रतिनिधित्व का उपयोग किया, अर्थात् आधार 10 जहां प्रत्येक दशमलव अंक स्वतंत्र रूप से 4 बिट्स के साथ एन्कोड किया गया था। कुछ प्रोसेसर, जैसे माइक्रोकंट्रोलर, अभी भी इसका उपयोग कर सकते हैं। ऐसी मशीनों में, दशमलव स्केलिंग कारकों का रूपांतरण बिट शिफ्ट और/या मेमोरी एड्रेस हेरफेर द्वारा किया जा सकता है। | ||
कुछ डीएसपी आर्किटेक्चर विशिष्ट निश्चित-बिंदु प्रारूपों के लिए मूल समर्थन प्रदान करते हैं, उदाहरण के लिए एन-1 अंश बिट्स के साथ हस्ताक्षरित एन-बिट संख्याएं (जिनके मान -1 और लगभग +1 के बीच हो सकते हैं)। समर्थन में गुणा निर्देश | कुछ डीएसपी आर्किटेक्चर विशिष्ट निश्चित-बिंदु प्रारूपों के लिए मूल समर्थन प्रदान करते हैं, उदाहरण के लिए एन-1 अंश बिट्स के साथ हस्ताक्षरित एन-बिट संख्याएं (जिनके मान -1 और लगभग +1 के बीच हो सकते हैं)। समर्थन में गुणा निर्देश सम्मिलित हो सकता है जिसमें पुनर्सामान्यीकरण सम्मिलित है - उत्पाद का 2n−2 से n−1 अंश बिट्स तक स्केलिंग रूपांतरण यदि सीपीयू वह सुविधा प्रदान नहीं करता है, तो प्रोग्रामर को उत्पाद को बड़े पर्याप्त रजिस्टर या अस्थायी चर में सहेजना होगा, और पुनर्सामान्यीकरण को स्पष्ट रूप से कोड करना होता है। | ||
===अतिप्रवाह=== | ===अतिप्रवाह=== | ||
अतिप्रवाह तब होता है जब अंकगणितीय ऑपरेशन का परिणाम निर्दिष्ट गंतव्य क्षेत्र में संग्रहीत करने के लिए बहुत बड़ा होता है। जोड़ और घटाव के | अतिप्रवाह तब होता है जब अंकगणितीय ऑपरेशन का परिणाम निर्दिष्ट गंतव्य क्षेत्र में संग्रहीत करने के लिए बहुत बड़ा होता है। जोड़ और घटाव के अतिरिक्त, परिणाम के लिए ऑपरेंड की तुलना में बिट अधिक की आवश्यकता हो सकती है। एम और एन बिट्स के साथ दो अहस्ताक्षरित पूर्णांकों के गुणन में, परिणाम में एम+एन बिट्स हो सकते हैं। | ||
अतिप्रवाह के | अतिप्रवाह के स्थिति में, उच्च-क्रम बिट्स सामान्यतः खो जाते हैं, क्योंकि अन-स्केल्ड पूर्णांक मॉड्यूलो 2<sup>n</sup> कम हो जाता है जहां n स्टोरेज क्षेत्र का आकार है। विशेष रूप से, साइन बिट खो जाता है, जो मूल रूप से साइन और मूल्य के परिमाण को बदल सकता है। | ||
कुछ प्रोसेसर हार्डवेयर [[अतिप्रवाह ध्वज]] सेट कर सकते हैं और/या ओवरफ़्लो होने पर अपवाद हैंडलिंग उत्पन्न कर सकते हैं। कुछ प्रोसेसर इसके | कुछ प्रोसेसर हार्डवेयर [[अतिप्रवाह ध्वज]] सेट कर सकते हैं और/या ओवरफ़्लो होने पर अपवाद हैंडलिंग उत्पन्न कर सकते हैं। कुछ प्रोसेसर इसके अतिरिक्त [[संतृप्ति अंकगणित]] प्रदान कर सकते हैं: यदि जोड़ या घटाव का परिणाम अतिप्रवाह होता है, तो वे इसके अतिरिक्त सबसे बड़े परिमाण के साथ मूल्य संग्रहीत करते हैं जो प्राप्त क्षेत्र में फिट हो सकता है और सही संकेत हो सकता है। | ||
चूँकि, ये सुविधाएँ व्यवहार में बहुत उपयोगी नहीं हैं; स्केलिंग कारकों और शब्द आकारों का चयन करना सामान्यतः सरल और सुरक्षित होता है जिससे अतिप्रवाह की संभावना को बाहर रखा जा सके, या ऑपरेशन निष्पादित करने से पहले अत्यधिक मूल्यों के लिए ऑपरेंड की जांच की जा सकती है। | |||
==कंप्यूटर भाषा समर्थन== | ==कंप्यूटर भाषा समर्थन== | ||
निश्चित-बिंदु संख्याओं के लिए स्पष्ट समर्थन कुछ कंप्यूटर भाषाओं द्वारा प्रदान किया जाता है, विशेष रूप से | निश्चित-बिंदु संख्याओं के लिए स्पष्ट समर्थन कुछ कंप्यूटर भाषाओं द्वारा प्रदान किया जाता है, विशेष रूप से पीएल/आई, [[COBOL|कोबोल]], एडीए प्रोग्रामिंग भाषा, जोविअल प्रोग्रामिंग भाषा और कोरल 66। वे बाइनरी या दशमलव स्केलिंग कारक के साथ निश्चित-बिंदु [[डेटा प्रकार]] प्रदान करते हैं। कंपाइलर स्वचालित रूप से इन डेटा-प्रकारों पर संचालन करते समय, चर पढ़ते या लिखते समय, या मानों को अन्य डेटा प्रकारों जैसे फ़्लोटिंग-पॉइंट में परिवर्तित करते समय उचित स्केलिंग रूपांतरण करने के लिए कोड उत्पन्न करता है। | ||
उनमें से अधिकांश भाषाएँ 1940 और 1990 के बीच डिज़ाइन की गई थीं। अधिक आधुनिक भाषाएँ | उनमें से अधिकांश भाषाएँ 1940 और 1990 के बीच डिज़ाइन की गई थीं। अधिक आधुनिक भाषाएँ सामान्यतः स्केलिंग कारक रूपांतरण के लिए कोई निश्चित-बिंदु डेटा प्रकार या समर्थन प्रदान नहीं करती हैं। यही वर्तमान कई पुरानी भाषाओं का भी है जो अभी भी बहुत लोकप्रिय हैं, जैसे [[फोरट्रान]], [[सी (प्रोग्रामिंग भाषा)]] और [[सी++]]। कड़ाई से मानकीकृत व्यवहार के साथ तेज़ फ़्लोटिंग-पॉइंट प्रोसेसर की व्यापक उपलब्धता ने बाइनरी फिक्स्ड पॉइंट समर्थन की मांग को अधिक कम कर दिया है। इसी तरह, कुछ प्रोग्रामिंग भाषाओं, जैसे सी शार्प लैंग्वेज|सी और पायथन (प्रोग्रामिंग लैंग्वेज) में [[दशमलव फ़्लोटिंग पॉइंट]] के समर्थन ने दशमलव निश्चित-पॉइंट समर्थन की अधिकांश आवश्यकता को हटा दिया है। कुछ स्थितियों में जहां निश्चित-बिंदु संचालन की आवश्यकता होती है, उन्हें प्रोग्रामर द्वारा किसी भी प्रोग्रामिंग भाषा में स्पष्ट स्केलिंग रूपांतरण के साथ कार्यान्वित किया जा सकता है। | ||
दूसरी ओर, सभी रिलेशनल [[डेटाबेस]] और [[SQL]] नोटेशन निश्चित-बिंदु दशमलव अंकगणित और संख्याओं के | दूसरी ओर, सभी रिलेशनल [[डेटाबेस]] और [[SQL|एसक्यूएल]] नोटेशन निश्चित-बिंदु दशमलव अंकगणित और संख्याओं के स्टोरेज का समर्थन करते हैं। [[PostgreSQL|पोस्टग्रेजएसक्यूएल]] में 1000 अंकों तक की संख्याओं के स्पष्ट स्टोरेज के लिए विशेष <samp>संख्यात्मक</samp> प्रकार है।<ref name="PostgreSQL"/> | ||
इसके | इसके अतिरिक्त, 2008 में [[अंतर्राष्ट्रीय मानक संगठन]] (आईएसओ) ने एम्बेडेड प्रोसेसर पर चलने वाले प्रोग्रामों के लाभ के लिए सी प्रोग्रामिंग भाषा को निश्चित-बिंदु डेटा प्रकारों के साथ विस्तारित करने का प्रस्ताव जारी किया था।<ref name="JTC1_2008"/> इसके अतिरिक्त, [[जीएनयू कंपाइलर संग्रह]] (जीसीसी) में फिक्स्ड-पॉइंट के लिए कंपाइलर बैक एंड बैक-एंड सपोर्ट है।<ref name="gccback"/><ref name="gccuse"/> | ||
Line 206: | Line 210: | ||
===बाइनरी निश्चित-बिंदु गुणन=== | ===बाइनरी निश्चित-बिंदु गुणन=== | ||
16 अंश बिट्स का उपयोग करके बाइनरी निश्चित बिंदु के साथ 1.2 और 5.6 के उत्पाद की गणना करने के कार्य पर विचार करें। दो संख्याओं को दर्शाने के लिए, उन्हें 2 | 16 अंश बिट्स का उपयोग करके बाइनरी निश्चित बिंदु के साथ 1.2 और 5.6 के उत्पाद की गणना करने के कार्य पर विचार करें। दो संख्याओं को दर्शाने के लिए, उन्हें 2<sup>16</sup> से गुणा किया जाता है, प्राप्त करना {{thinspace|78|643}}.2 और {{thinspace|367|001}}.6; और इन मानों को निकटतम पूर्णांक प्राप्त करते हुए पूर्णांकित करें {{thinspace|78|643}} और {{thinspace|367|002}}. ये संख्याएं दो पूरक हस्ताक्षरित प्रारूप के साथ 32-बिट शब्द में आराम से फिट हो जाएंगी। | ||
इन पूर्णांकों को साथ गुणा करने पर 35-बिट पूर्णांक प्राप्त होता है {{thinspace|28|862|138|286}} 32 अंश बिट्स के साथ, बिना किसी गोलाई के। ध्यान दें कि इस मान को सीधे 32-बिट पूर्णांक चर में संग्रहीत करने से अतिप्रवाह होगा और सबसे महत्वपूर्ण बिट्स का | इन पूर्णांकों को साथ गुणा करने पर 35-बिट पूर्णांक प्राप्त होता है {{thinspace|28|862|138|286}} 32 अंश बिट्स के साथ, बिना किसी गोलाई के। ध्यान दें कि इस मान को सीधे 32-बिट पूर्णांक चर में संग्रहीत करने से अतिप्रवाह होगा और सबसे महत्वपूर्ण बिट्स का हानि होगा। व्यवहार में, इसे संभवतः हस्ताक्षरित 64-बिट पूर्णांक चर या [[रजिस्टर (कंप्यूटिंग)]] में संग्रहीत किया जाता है। | ||
यदि परिणाम को डेटा के समान प्रारूप में 16 अंश बिट्स के साथ संग्रहीत किया जाना है, तो उस पूर्णांक को 2 | यदि परिणाम को डेटा के समान प्रारूप में 16 अंश बिट्स के साथ संग्रहीत किया जाना है, तो उस पूर्णांक को 2<sup>16</sup> से विभाजित किया जाना चाहिए, जो लगभग देता है {{thinspace|440|401}}.28, और फिर निकटतम पूर्णांक तक पूर्णांकित किया गया। यह प्रभाव 2<sup>15</sup> जोड़कर प्राप्त किया जा सकता है और फिर परिणाम को 16 बिट्स तक स्थानांतरित करना। परिणाम है {{thinspace|440|401}}, जो मान 6 को दर्शाता है। {{thinspace|719|985|961|914|062|5}}. प्रारूप की स्पष्टता को ध्यान में रखते हुए, उस मान को 6 के रूप में उत्तम विधि से व्यक्त किया जाता है। {{thinspace|719|986}} ± 0.{{thinspace|000|008}} (ऑपरेंड सन्निकटन से आने वाली त्रुटि की गिनती नहीं)। सही परिणाम 1.2 × 5.6 = 6.72 होता है। | ||
अधिक जटिल उदाहरण के लिए, मान लें कि दो संख्याएँ 1.2 और 5.6 क्रमशः 30 और 20 अंश बिट्स के साथ 32-बिट निश्चित बिंदु प्रारूप में दर्शायी जाती हैं। 2 | अधिक जटिल उदाहरण के लिए, मान लें कि दो संख्याएँ 1.2 और 5.6 क्रमशः 30 और 20 अंश बिट्स के साथ 32-बिट निश्चित बिंदु प्रारूप में दर्शायी जाती हैं। 2<sup>30</sup> और 2<sup>20</sup> से स्केलिंग देता है {{thinspace|1|288|490|188}}.8 और {{thinspace|5|872|025}}.6, वह दौर {{thinspace|1|288|490|189}} और {{thinspace|5|872|026}}, क्रमश दोनों संख्याएँ अभी भी 32-बिट हस्ताक्षरित पूर्णांक चर में फिट होती हैं, और भिन्नों का प्रतिनिधित्व करती हैं | ||
: 1.{{thinspace|200|000|000|186|264|514|923|095|703|125}} और | : 1.{{thinspace|200|000|000|186|264|514|923|095|703|125}} और | ||
: 5.{{thinspace|600|000|381|469|726|562|50}} | : 5.{{thinspace|600|000|381|469|726|562|50}} | ||
उनका उत्पाद (बिल्कुल) 53-बिट पूर्णांक है {{thinspace|7|566|047|890|552|914}}, जिसमें 30+20 = 50 निहित अंश बिट्स हैं और इसलिए अंश का प्रतिनिधित्व करता है | उनका उत्पाद (बिल्कुल) 53-बिट पूर्णांक है {{thinspace|7|566|047|890|552|914}}, जिसमें 30+20 = 50 निहित अंश बिट्स हैं और इसलिए अंश का प्रतिनिधित्व करता है | ||
: 6.{{thinspace|720|000|458|806|753|229|623|609|513|510|018|587|112|426|757|812|50}} | : 6.{{thinspace|720|000|458|806|753|229|623|609|513|510|018|587|112|426|757|812|50}} | ||
यदि हम इस मान को 8 अंश बिट्स के साथ हस्ताक्षरित 16-बिट निश्चित प्रारूप में प्रस्तुत करना चुनते हैं, तो हमें पूर्णांक उत्पाद को 2 | यदि हम इस मान को 8 अंश बिट्स के साथ हस्ताक्षरित 16-बिट निश्चित प्रारूप में प्रस्तुत करना चुनते हैं, तो हमें पूर्णांक उत्पाद को 2<sup>50-8</sup> = 2<sup>42</sup> से विभाजित करना होगाऔर परिणाम को गोल करें; जिसे 2<sup>41</sup> जोड़कर प्राप्त किया जा सकता है और 42 बिट्स द्वारा स्थानांतरण परिणाम 1720 है, जो मान 1720/2<sup>8</sup>=6.{{thinspace|718|75}}, या लगभग 6.719 ± 0.002 दर्शाता है। | ||
==नोटेशन== | ==नोटेशन == | ||
निश्चित-बिंदु प्रारूप के मापदंडों को संक्षिप्त रूप से निर्दिष्ट करने के लिए विभिन्न नोटेशन का उपयोग किया गया है। निम्नलिखित सूची में, f भिन्नात्मक बिट्स की संख्या का प्रतिनिधित्व करता है, m परिमाण या पूर्णांक बिट्स की संख्या, s साइन बिट्स की संख्या और b बिट्स की कुल संख्या का प्रतिनिधित्व करता है। | निश्चित-बिंदु प्रारूप के मापदंडों को संक्षिप्त रूप से निर्दिष्ट करने के लिए विभिन्न नोटेशन का उपयोग किया गया है। निम्नलिखित सूची में, f भिन्नात्मक बिट्स की संख्या का प्रतिनिधित्व करता है, m परिमाण या पूर्णांक बिट्स की संख्या, s साइन बिट्स की संख्या और b बिट्स की कुल संख्या का प्रतिनिधित्व करता है। | ||
* | * कोबोल प्रोग्रामिंग भाषा मूल रूप से इच्छानुसार आकार और दशमलव स्केलिंग के साथ दशमलव निश्चित-परिशुद्धता का समर्थन करती थी, जिसका प्रारूप ग्राफ़िक रूप से निर्दिष्ट किया गया था {{mono|PIC}} निर्देश. उदाहरण के लिए, {{mono|PIC S9999V99}} दो दशमलव अंश अंकों के साथ संकेत-परिमाण 6-अंकीय दशमलव पूर्णांक निर्दिष्ट किया था।<ref name="cobibm"/> | ||
*एडीए प्रोग्रामिंग भाषा में, संख्यात्मक डेटा प्रकार निर्दिष्ट किया जा सकता है, उदाहरण के लिए,{{code|2=ada|type F is delta 0.01 range -100.0 .. 100.0}}, जिसका अर्थ है निश्चित-बिंदु प्रतिनिधित्व जिसमें 7 निहित अंश बिट्स (एक स्केलिंग कारक 1/128 प्रदान करते हुए) और कम से कम 15 बिट्स (-128.00 से लगभग +128.00 तक की वास्तविक सीमा सुनिश्चित करना) के साथ दो के पूरक प्रारूप में हस्ताक्षरित बाइनरी पूर्णांक | *निर्माण {{mono|REAL FIXED BINARY (}}पी{{mono|,}}एफ{{mono|)}} का उपयोग पीएल/आई प्रोग्रामिंग भाषा में, अंश भाग में एफ बिट्स के साथ पी कुल बिट्स (चिह्न सहित नहीं) के साथ निश्चित-बिंदु हस्ताक्षरित बाइनरी डेटा प्रकार निर्दिष्ट करने के लिए किया जाता है; यह 1/2 के स्केलिंग कारक के साथ पी+1 बिट हस्ताक्षरित पूर्णांक है<sup>च</sup>. उत्तरार्द्ध सकारात्मक या नकारात्मक हो सकता है। कोई निर्दिष्ट कर सकता है {{mono|COMPLEX}} के अतिरिक्त {{mono|REAL}}, और {{mono|DECIMAL}} के अतिरिक्त {{mono|BINARY}} आधार 10 के लिए उपयोग किया जाता है। | ||
* [[VisSim]] कंपनी का उपयोग किया गया {{mono|fx}}एम{{mono|.}}बी पूर्णांक भाग में बी कुल बिट्स और एम बिट्स के साथ बाइनरी निश्चित-बिंदु मान को दर्शाने के लिए; अर्थात्, स्केलिंग कारक 1/2 के साथ | *एडीए प्रोग्रामिंग भाषा में, संख्यात्मक डेटा प्रकार निर्दिष्ट किया जा सकता है, उदाहरण के लिए,{{code|2=ada|type F is delta 0.01 range -100.0 .. 100.0}}, जिसका अर्थ है निश्चित-बिंदु प्रतिनिधित्व जिसमें 7 निहित अंश बिट्स (एक स्केलिंग कारक 1/128 प्रदान करते हुए) और कम से कम 15 बिट्स (-128.00 से लगभग +128.00 तक की वास्तविक सीमा सुनिश्चित करना) के साथ दो के पूरक प्रारूप में हस्ताक्षरित बाइनरी पूर्णांक सम्मिलित है। ).<ref name="adafix" />* [[क्यू (संख्या प्रारूप)]] को [[ टेक्सस उपकरण | टेक्सस उपकरण]] द्वारा परिभाषित किया गया था।<ref name="TI_2003" /> एक लिखता है {{mono|Q}}f अंश बिट्स के साथ हस्ताक्षरित बाइनरी निश्चित-बिंदु मान निर्दिष्ट करने के लिए; उदाहरण के लिए, {{mono|Q15}} स्केलिंग कारक 1/2<sup>15</sup> के साथ दो के पूरक नोटेशन में हस्ताक्षरित पूर्णांक निर्दिष्ट करता है. कोड {{mono|Q}}m{{mono|.}}एफ अतिरिक्त रूप से निर्दिष्ट करता है कि संख्या में मान के पूर्णांक भाग में एम बिट्स हैं, साइन बिट की गिनती नहीं। इस प्रकार {{mono|Q1.30}} 1 पूर्णांक बिट और 30 भिन्नात्मक बिट्स के साथ बाइनरी फिक्स्ड-पॉइंट प्रारूप का वर्णन करेगा, जिसे स्केलिंग कारक 1/2 के साथ 32-बिट 2<sup>30</sup> के पूरक पूर्णांक के रूप में संग्रहीत किया जा सकता है।.<ref name="TI_2003" /><ref name="mwork" /> [[एआरएम वास्तुकला]] द्वारा समान नोटेशन का उपयोग किया गया है, सिवाय इसके कि वे एम के मूल्य में साइन बिट की गणना करते हैं; इसलिए उपरोक्त वही {{mono|Q2.30}} प्रारूप निर्दिष्ट किया जाता है <ref name="ARM_2001" /><ref name="ARM_2006" /> | ||
* [[लैबव्यू]] प्रोग्रामिंग भाषा नोटेशन का उपयोग करती है | *संकेतन {{mono|B}} एम का प्रयोग किया गया है पूर्णांक भाग में एम बिट्स के साथ निश्चित बाइनरी प्रारूप का कारण है; शेष शब्द अंश अंश हैं। उदाहरण के लिए, अधिकतम और न्यूनतम मान जिन्हें किसी हस्ताक्षरित में संग्रहीत किया जा सकता है {{mono|B16}} संख्याएँ क्रमशः ≈32767.9999847 और −32768.0 हैं। | ||
* [[VisSim|विज़सिम]] कंपनी का उपयोग किया गया {{mono|fx}} एम{{mono|.}}बी पूर्णांक भाग में बी कुल बिट्स और एम बिट्स के साथ बाइनरी निश्चित-बिंदु मान को दर्शाने के लिए; अर्थात्, स्केलिंग कारक 1/2 के साथ b<sup>b−m</sup>-बिट पूर्णांक. इस प्रकार {{mono|fx1.16}} का कारण 16-बिट संख्या होगा जिसमें पूर्णांक भाग में 1 बिट और अंश में 15 होगा।<ref name="vsi" /> | |||
*प्लेस्टेशन 2 जीएस (प्लेस्टेशन 2 तकनीकी विनिर्देश ग्राफ़िक्स प्रोसेसिंग यूनिट या ग्राफ़िक्स सिंथेसाइज़र) उपयोगकर्ता गाइड नोटेशन का उपयोग करता है{{mono|:}}एम{{mono|:}}f, जहां s साइन बिट की उपस्थिति (0 या 1) निर्दिष्ट करता है।<ref name="PS2" /> उदाहरण के लिए, {{mono|0:5:3}} 1/2 के स्केलिंग कारक के साथ अहस्ताक्षरित 8<sup>3</sup>-बिट पूर्णांक का प्रतिनिधित्व करता है. | |||
* [[लैबव्यू]] प्रोग्रामिंग भाषा नोटेशन का उपयोग करती है 'एफएक्सपी' निश्चित बिंदु संख्याओं के मापदंड निर्दिष्ट करने के लिए। एस घटक या तो '+' या '±' हो सकता है, जो क्रमशः अहस्ताक्षरित या 2 के पूरक हस्ताक्षरित संख्या को दर्शाता है। बी घटक बिट्स की कुल संख्या है, और एम पूर्णांक भाग में बिट्स की संख्या है। | |||
==सॉफ़्टवेयर अनुप्रयोग उदाहरण== | ==सॉफ़्टवेयर अनुप्रयोग उदाहरण == | ||
* लोकप्रिय [[ट्रू टाइप]] फ़ॉन्ट प्रारूप अपने निर्देशों में कुछ संख्यात्मक मानों के लिए दशमलव के बाईं ओर 26 बिट्स के साथ 32-बिट हस्ताक्षरित बाइनरी फिक्स्ड-पॉइंट का उपयोग करता है।<ref name="TTS"/>[[फ़ॉन्ट संकेत]] और प्रदर्शन कारणों से आवश्यक न्यूनतम मात्रा में | * लोकप्रिय [[ट्रू टाइप]] फ़ॉन्ट प्रारूप अपने निर्देशों में कुछ संख्यात्मक मानों के लिए दशमलव के बाईं ओर 26 बिट्स के साथ 32-बिट हस्ताक्षरित बाइनरी फिक्स्ड-पॉइंट का उपयोग करता है।<ref name="TTS"/> [[फ़ॉन्ट संकेत]] और प्रदर्शन कारणों से आवश्यक न्यूनतम मात्रा में स्पष्टता प्रदान करने के लिए इस प्रारूप को चुना गया था।<ref name="Freetype"/> | ||
* वैज्ञानिकों और गणितज्ञों द्वारा व्यापक रूप से उपयोग किया जाने वाला [[TeX]] टाइपसेटिंग सॉफ़्टवेयर, सभी स्थिति गणनाओं के लिए 16 अंश बिट्स के साथ 32-बिट हस्ताक्षरित बाइनरी निश्चित बिंदु का उपयोग करता है। मानों की व्याख्या बिंदु (टाइपोग्राफी) | *[[3DO इंटरएक्टिव मल्टीप्लेयर|3डीओ इंटरएक्टिव मल्टीप्लेयर]], [[ प्ले स्टेशन | प्ले स्टेशन]] , [[ अब शनि | अब शनि]] और [[अटारी जगुआर]] सहित [[वीडियो गेम कंसोल की पांचवीं पीढ़ी]] के लिए सभी 3D गेम,<ref name="Dolphin_2014" /> छठी पीढ़ी के [[ खेल घन | खेल घन]] के अतिरिक्त, फिक्स्ड-पॉइंट अंकगणित का उपयोग करें, क्योंकि सिस्टम में हार्डवेयर फ्लोट-पॉइंट इकाइयों की कमी है। प्लेस्टेशन ट्रांसफॉर्मेशन कोप्रोसेसर 12 अंश बिट्स के साथ 16-बिट फिक्स्ड पॉइंट का समर्थन करता है। | ||
* [[ कंपकंपी (सॉफ्टवेयर) ]], [[टोस्ट (जीएसएम)]] और [[एमपीईजी ऑडियो डिकोडर]] सॉफ्टवेयर लाइब्रेरी हैं जो क्रमशः [[वॉर्बिस]], [[ पूर्ण दर ]] और | * वैज्ञानिकों और गणितज्ञों द्वारा व्यापक रूप से उपयोग किया जाने वाला [[TeX|टेक्स]] टाइपसेटिंग सॉफ़्टवेयर, सभी स्थिति गणनाओं के लिए 16 अंश बिट्स के साथ 32-बिट हस्ताक्षरित बाइनरी निश्चित बिंदु का उपयोग करता है। मानों की व्याख्या बिंदु (टाइपोग्राफी) टाइपोग्राफर के बिंदु के अंशों के रूप में की जाती है। [[TeX फ़ॉन्ट मीट्रिक|टेक्स फ़ॉन्ट मीट्रिक]] फ़ाइलें 12 अंश बिट्स के साथ 32-बिट हस्ताक्षरित निश्चित-बिंदु संख्याओं का उपयोग करती हैं। | ||
* [[WavPack]] दोषरहित ऑडियो कंप्रेसर निश्चित बिंदु अंकगणित का उपयोग करता है। अन्य बातों के | * [[ कंपकंपी (सॉफ्टवेयर) | कंपकंपी (सॉफ्टवेयर)]] , [[टोस्ट (जीएसएम)]] और [[एमपीईजी ऑडियो डिकोडर]] सॉफ्टवेयर लाइब्रेरी हैं जो क्रमशः [[वॉर्बिस]], [[ पूर्ण दर | पूर्ण दर]] और मैनिफोल्ड ऑडियो प्रारूपों को डिकोड करते हैं। ये कोडेक्स निश्चित-बिंदु अंकगणित का उपयोग करते हैं क्योंकि कई ऑडियो डिकोडिंग हार्डवेयर उपकरणों में एफपीयू नहीं होता है। | ||
* [[ ओपनजीएल एन ]] 1.x विनिर्देश में निश्चित बिंदु प्रोफ़ाइल | * [[WavPack|वेवपैक]] दोषरहित ऑडियो कंप्रेसर निश्चित बिंदु अंकगणित का उपयोग करता है। अन्य बातों के अतिरिक्त, यह चुनाव इस चिंता से उचित था कि विभिन्न हार्डवेयर में अलग-अलग फ़्लोटिंग-पॉइंट राउंडिंग नियम संपीड़न की दोषरहित प्रकृति को दूषित कर सकते हैं।<ref name="WavPack" /> | ||
* [[डीसी (कंप्यूटर प्रोग्राम)]] और [[बीसी प्रोग्रामिंग भाषा]] प्रोग्राम [[मनमाना-सटीक अंकगणित]] | *नेस्ट लैब्स यूटिलिटीज लाइब्रेरी,<ref name="nlu" /> निश्चित बिंदु संख्याओं के लिए मैक्रोज़ और फलन का सीमित सेट प्रदान करता है, जब सेंसर सैंपलिंग और सेंसर आउटपुट के संदर्भ में उन संख्याओं से निपटते हैं। | ||
* [[फ़्रैक्टिंट]] संख्याओं को Q (संख्या प्रारूप) के रूप में दर्शाता है|Q2.29 निश्चित-बिंदु संख्याएँ,<ref name="Fractint_2005"/>[[Intel 80386]] या [[Intel 80486SX]] प्रोसेसर वाले पुराने पीसी पर ड्राइंग को तेज़ करने के लिए, जिसमें | * [[ ओपनजीएल एन | ओपनजीएल एन]] 1.x विनिर्देश में निश्चित बिंदु प्रोफ़ाइल सम्मिलित है, क्योंकि यह एम्बेडेड सिस्टम के लिए एपीआई है, जिसमें सदैव एफपीयू नहीं होता है। | ||
* [[डीसी (कंप्यूटर प्रोग्राम)]] और [[बीसी प्रोग्रामिंग भाषा]] प्रोग्राम [[मनमाना-सटीक अंकगणित|मनमाना-स्पष्ट अंकगणित]] कैलकुलेटर हैं, किन्तु केवल भिन्नात्मक अंकों की (उपयोगकर्ता-निर्दिष्ट) निश्चित संख्या का ट्रैक रखते हैं। | |||
* [[फ़्रैक्टिंट]] संख्याओं को Q (संख्या प्रारूप) के रूप में दर्शाता है | Q2.29 निश्चित-बिंदु संख्याएँ,<ref name="Fractint_2005" /> [[Intel 80386|इंटेल 80386]] या [[Intel 80486SX|इंटेल 80486SX]] प्रोसेसर वाले पुराने पीसी पर ड्राइंग को तेज़ करने के लिए, जिसमें एफपीयू की कमी थी। | |||
* डूम (1993 वीडियो गेम) [[आईडी सॉफ्टवेयर]] द्वारा मैप सिस्टम, ज्योमेट्री, रेंडरिंग और प्लेयर मूवमेंट सहित अपने सभी गैर-पूर्णांक संगणनाओं के लिए 16.16 निश्चित बिंदु प्रतिनिधित्व का उपयोग करने वाला आखिरी प्रथम-व्यक्ति शूटर गेम था। यह प्रतिनिधित्व अभी भी डूम स्रोत पोर्ट्स की आधुनिक सूची में उपयोग किया जाता है। | * डूम (1993 वीडियो गेम) [[आईडी सॉफ्टवेयर]] द्वारा मैप सिस्टम, ज्योमेट्री, रेंडरिंग और प्लेयर मूवमेंट सहित अपने सभी गैर-पूर्णांक संगणनाओं के लिए 16.16 निश्चित बिंदु प्रतिनिधित्व का उपयोग करने वाला आखिरी प्रथम-व्यक्ति शूटर गेम था। यह प्रतिनिधित्व अभी भी डूम स्रोत पोर्ट्स की आधुनिक सूची में उपयोग किया जाता है। | ||
* [[Microsoft Azure]] [[ एक कंप्यूटर जितना | कंप्यूटर | * [[Microsoft Azure|माइक्रोसॉफ्ट एज़्योर]] [[ एक कंप्यूटर जितना | कंप्यूटर]] के लिए Q शार्प Q प्रोग्रामिंग भाषा, जो [[क्वांटम लॉजिक गेट्स]] को प्रयुक्त करती है, में क्वैबिट के [[क्वांटम रजिस्टर]] पर निश्चित-बिंदु अंकगणित करने के लिए मानक संख्यात्मक लाइब्रेरी सम्मिलित है।<ref name="Quantum"/> | ||
==यह भी देखें== | ==यह भी देखें == | ||
* क्यू (संख्या प्रारूप) | * क्यू (संख्या प्रारूप) | ||
* [[लिबफिक्समैथ]] - निश्चित-बिंदु गणित के लिए सी में लिखी गई लाइब्रेरी | * [[लिबफिक्समैथ]] - निश्चित-बिंदु गणित के लिए सी में लिखी गई लाइब्रेरी | ||
Line 246: | Line 255: | ||
[[फ़्लोटिंग-पॉइंट स्केलिंग को ब्लॉक करें]] को ब्लॉक करें | [[फ़्लोटिंग-पॉइंट स्केलिंग को ब्लॉक करें]] को ब्लॉक करें | ||
* [[मोडुलो ऑपरेशन]] | * [[मोडुलो ऑपरेशन]] | ||
* μ- | * μ-नियम एल्गोरिथ्म | ||
* [[ए-लॉ एल्गोरिदम]] | * [[ए-लॉ एल्गोरिदम]] | ||
==संदर्भ== | ==संदर्भ == | ||
{{Reflist|30em|refs= | {{Reflist|30em|refs= | ||
<ref name="ARM_2001">{{cite web |title=ARM Developer Suite AXD and armsd Debuggers Guide |version=1.2 |publisher=[[ARM Limited]] |at=Chapter 4.7.9. AXD > AXD Facilities > Data formatting > Q-format |date=2001 |orig-date=1999 |id=ARM DUI 0066D |url=http://infocenter.arm.com/help/topic/com.arm.doc.dui0066d/CHDFAAEI.html?resultof=%22%51%2d%66%6f%72%6d%61%74%22%20%22%71%2d%66%6f%72%6d%61%74%22%20 |url-status=live |archive-url=https://archive.today/20171104110547/http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0066d/CHDFAAEI.html |archive-date=2017-11-04 }}</ref> | <ref name="ARM_2001">{{cite web |title=ARM Developer Suite AXD and armsd Debuggers Guide |version=1.2 |publisher=[[ARM Limited]] |at=Chapter 4.7.9. AXD > AXD Facilities > Data formatting > Q-format |date=2001 |orig-date=1999 |id=ARM DUI 0066D |url=http://infocenter.arm.com/help/topic/com.arm.doc.dui0066d/CHDFAAEI.html?resultof=%22%51%2d%66%6f%72%6d%61%74%22%20%22%71%2d%66%6f%72%6d%61%74%22%20 |url-status=live |archive-url=https://archive.today/20171104110547/http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0066d/CHDFAAEI.html |archive-date=2017-11-04 }}</ref> |
Revision as of 12:30, 6 July 2023
कम्प्यूटिंग में, निश्चित-बिंदु भिन्नात्मक (गैर-पूर्णांक) संख्याओं को उनके भिन्नात्मक भाग के अंकों की निश्चित संख्या को संग्रहीत करके प्रदर्शित करने की विधि है। उदाहरण के लिए, अमेरिकी डॉलर की रकम को अधिकांशतः दो आंशिक अंकों के साथ संग्रहित किया जाता है, जो सेंट (मुद्रा) (डॉलर का 1/100) का प्रतिनिधित्व करते हैं। अधिक सामान्यतः, यह शब्द कुछ निश्चित छोटी इकाई के पूर्णांक गुणकों के रूप में भिन्नात्मक मानों का प्रतिनिधित्व करने का उल्लेख कर सकता है, उदाहरण के लिए दस मिनट के अंतराल के पूर्णांक गुणज के रूप में घंटों की आंशिक राशि निश्चित-बिंदु संख्या प्रतिनिधित्व अधिकांशतः अधिक जटिल और कम्प्यूटेशनल रूप से मांग वाले फ़्लोटिंग-पॉइंट अंकगणित प्रतिनिधित्व के विपरीत होता है।
निश्चित-बिंदु प्रतिनिधित्व में, अंश को अधिकांशतः पूर्णांक भाग के समान मूलांक में व्यक्त किया जाता है, किन्तु आधार बी के नकारात्मक घातांक का उपयोग करते है। सबसे सामान्य प्रकार दशमलव (आधार 10) और बाइनरी संख्या (आधार 2) हैं। उत्तरार्द्ध को सामान्यतः बाइनरी स्केलिंग के रूप में भी जाना जाता है। इस प्रकार, यदि n भिन्न अंक संग्रहीत हैं, तो मान सदैव b−n का पूर्णांक गुणज (गणित) होगा. निश्चित-बिंदु प्रतिनिधित्व का उपयोग पूर्णांक मानों के निम्न-क्रम अंकों को छोड़ने के लिए भी किया जा सकता है, उदाहरण के लिए जब बड़े डॉलर मूल्यों को $1000 के गुणज के रूप में दर्शाया जाता है।
जब दशमलव निश्चित-बिंदु संख्याओं को मानव पढ़ने के लिए प्रदर्शित किया जाता है, तो अंश अंकों को सामान्यतः दशमलव विभाजक द्वारा पूर्णांक भाग से अलग किया जाता है (सामान्यतः अंग्रेजी में '.', किन्तु कई अन्य भाषाओं में ',' या कुछ अन्य प्रतीक)। चूँकि, आंतरिक रूप से, कोई अलग नहीं है, और अंकों के दो समूहों के बीच अंतर केवल उन प्रोग्रामों द्वारा परिभाषित किया जाता है जो ऐसी संख्याओं को संभालते हैं।
यांत्रिक कैलकुलेटर में निश्चित-बिंदु प्रतिनिधित्व आदर्श था। चूंकि अधिकांश आधुनिक केंद्रीय प्रसंस्करण इकाइयों में तेज़ फ़्लोटिंग-पॉइंट इकाई (एफपीयू) होती है, इसलिए निश्चित-बिंदु प्रतिनिधित्व का उपयोग अब केवल विशेष स्थितियों में किया जाता है, जैसे कि कम निवेश वाले अंतः स्थापित प्रणाली माइक्रोप्रोसेसर और माइक्रोकंट्रोलर में; उन अनुप्रयोगों में जो उच्च गति और/या कम बिजली की खपत और/या छोटे एकीकृत परिपथ क्षेत्र की मांग करते हैं, जैसे मूर्ति प्रोद्योगिकी , वीडियो प्रसंस्करण और अंकीय संकेत प्रक्रिया ; या जब उनका उपयोग समस्या के लिए अधिक स्वाभाविक होता है। उत्तरार्द्ध के उदाहरण डॉलर की रकम का लेखा-जोखा है, जब सेंट के अंशों को कड़ाई से निर्धारित विधियों से पूर्ण सेंट में पूर्णांकित किया जाना चाहिए; और टेबल लुकअप द्वारा कार्यों का मूल्यांकन होता है।
प्रतिनिधित्व
मूल्य
का प्रतिनिधित्व किया |
आंतरिक
प्रतिनिधित्व |
---|---|
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, का प्रतिनिधित्व करता है।
एक प्रोग्राम सामान्यतः यह मान लेगा कि सभी निश्चित-बिंदु मान जो किसी दिए गए चर में संग्रहीत किए जाएंगे, या किसी दिए गए निर्देश (कंप्यूटिंग) द्वारा उत्पादित किए जाएंगे, उनका स्केलिंग कारक समान होता है। यह मापदंड सामान्यतः प्रोग्रामर द्वारा आवश्यक स्पष्टता और परिशुद्धता और संग्रहीत किए जाने वाले मानों की सीमा के आधार पर चुना जा सकता है।
किसी चर या सूत्र का स्केलिंग कारक प्रोग्राम में स्पष्ट रूप से प्रकट नहीं हो सकता है। सॉफ्टवेयर इंजीनियरिंग के लिए आवश्यक है कि इसे सॉफ़्टवेयर दस्तावेज़ीकरण में, कम से कम स्रोत कोड में टिप्पणी (कंप्यूटिंग) के रूप में प्रदान किया जाता है।
स्केलिंग कारकों का चयन
अधिक दक्षता के लिए, स्केलिंग कारकों को अधिकांशतः आंतरिक रूप से पूर्णांकों का प्रतिनिधित्व करने के लिए उपयोग किए जाने वाले आधार बी के घातांक (सकारात्मक या नकारात्मक) के रूप में चुना जाता है। चूँकि, अधिकांशतः सबसे अच्छा स्केलिंग कारक एप्लिकेशन द्वारा निर्धारित होता है। इस प्रकार व्यक्ति अधिकांशतः मानवीय सुविधा के लिए 10 की घात वाले स्केलिंग कारकों का उपयोग करता है (उदाहरण के लिए डॉलर के मूल्यों के लिए 1/100), तब भी जब पूर्णांकों को बाइनरी में आंतरिक रूप से दर्शाया जाता है। दशमलव स्केलिंग कारक भी इकाइयों की अंतर्राष्ट्रीय प्रणाली मीट्रिक (एसआई) प्रणाली के साथ अच्छी तरह से मेल खाते हैं, क्योंकि निश्चित-बिंदु स्केलिंग कारक की पसंद अधिकांशतः माप की इकाई (जैसे मीटर के अतिरिक्त सेंटीमीटर या माइक्रोमीटर) की पसंद के बराबर होती है।
चूँकि, अन्य स्केलिंग कारकों का उपयोग कभी-कभी किया जा सकता है, जैसे घंटों की आंशिक मात्रा को सेकंड की पूर्णांक संख्या के रूप में दर्शाया जा सकता है; अर्थात् 1/3600 के स्केल फैक्टर के साथ निश्चित-बिंदु संख्या के रूप में होता है।
यहां तक कि सबसे सावधानीपूर्वक गोलाई के साथ, स्केलिंग कारक एस के साथ दर्शाए गए निश्चित-बिंदु मानों में संग्रहीत पूर्णांक में ±0.5 तक की त्रुटि हो सकती है, अर्थात मान में ±0.5 एस इसलिए, छोटे स्केलिंग कारक सामान्यतः अधिक स्पष्ट परिणाम उत्पन्न करते हैं।
दूसरी ओर, छोटे स्केलिंग कारक का कारण मूल्यों की छोटी श्रृंखला है जिसे किसी दिए गए प्रोग्राम चर में संग्रहीत किया जा सकता है। अधिकतम निश्चित-बिंदु मान जिसे चर में संग्रहीत किया जा सकता है वह सबसे बड़ा पूर्णांक मान है जिसे इसमें संग्रहीत किया जा सकता है, स्केलिंग कारक द्वारा गुणा किया जा सकता है; और इसी प्रकार न्यूनतम मूल्य के लिए भी उदाहरण के लिए, नीचे दी गई तालिका निहित स्केलिंग कारक एस, न्यूनतम और अधिकतम प्रतिनिधित्व योग्य मान वीmin और वीmax, देती है और मूल्यों की स्पष्टता δ = S/2 जिसे 16-बिट हस्ताक्षरित बाइनरी निश्चित बिंदु प्रारूप में दर्शाया जा सकता है, जो निहित अंश बिट्स की संख्या f पर निर्भर करता है।
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 |
प्रपत्र 2n-1 के स्केलिंग कारकों के साथ निश्चित-बिंदु प्रारूप (अर्थात् 1, 3, 7, 15, 31, आदि) को इमेज प्रोसेसिंग और अन्य डिजिटल सिग्नल प्रोसेसिंग कार्यों के लिए उपयुक्त कहा गया है। उनसे अपेक्षा की जाती है कि वे सामान्य 2n की तुलना में निश्चित और फ़्लोटिंग-पॉइंट मानों के बीच अधिक सुसंगत रूपांतरण प्रदान करें स्केलिंग। जूलिया (प्रोग्रामिंग भाषा) प्रोग्रामिंग भाषा दोनों संस्करणों को प्रयुक्त करती है।[1]
स्पष्ट मान
कोई भी द्विआधारी अंश a/2m, जैसे 1/16 या 17/32, को निश्चित-बिंदु में स्पष्ट रूप से दर्शाया जा सकता है, दो की बल वाले स्केलिंग कारक 1/2n के साथ किसी भी n ≥ m के साथकिया जाता है चूँकि, अधिकांश दशमलव अंश जैसे 0.1 या 0.123 आधार 2 में अनंत दोहराव वाले अंश हैं और इसलिए उन्हें इस तरह प्रदर्शित नहीं किया जा सकता है।
इसी प्रकार, कोई भी दशमलव अंश a/10m, जैसे कि 1/100 या 37/1000, को पावर-दस स्केलिंग फैक्टर 1/10n के साथ निश्चित बिंदु में स्पष्ट रूप से दर्शाया जा सकता है किसी भी n ≥ m के साथ यह दशमलव प्रारूप किसी बाइनरी अंश a/2m का भी प्रतिनिधित्व कर सकता है, जैसे 1/8 (0.125) या 17/32 (0.53125) है।
अधिक सामान्यतः, ए और बी सहअभाज्य पूर्णांक और बी सकारात्मक के साथ तर्कसंगत संख्या ए/बी को बाइनरी निश्चित बिंदु में स्पष्ट रूप से दर्शाया जा सकता है यदि बी 2 की बल है; और दशमलव निश्चित बिंदु में केवल तभी यदि b में 2 और/या 5 के अतिरिक्त कोई अभाज्य संख्या गुणनखंड नही होता है।
फ़्लोटिंग-पॉइंट के साथ तुलना
फिक्स्ड-पॉइंट संगणनाएं तेज़ हो सकती हैं और/या फ़्लोटिंग-पॉइंट की तुलना में कम हार्डवेयर का उपयोग कर सकती हैं। यदि प्रस्तुत किए जाने वाले मानों की सीमा पहले से ज्ञात हो और पर्याप्त रूप से सीमित हो, तो निश्चित बिंदु उपलब्ध बिट्स का उत्तम उपयोग कर सकता है। उदाहरण के लिए, यदि 0 और 1 के बीच की संख्या को दर्शाने के लिए 32 बिट उपलब्ध हैं, तो निश्चित-बिंदु प्रतिनिधित्व में 1.2 × 10−10 से कम त्रुटि हो सकती है।, जबकि मानक फ़्लोटिंग-पॉइंट प्रतिनिधित्व में 596 × 10−10 तक त्रुटि हो सकती है क्योंकि 9 बिट्स गतिशील स्केलिंग कारक के संकेत और प्रतिपादक के साथ व्यर्थ हो जाते हैं। विशेष रूप से, 32-बिट फिक्स्ड-प्वाइंट की तुलना आईईईई 754 फ्लोटिंग-प्वाइंट ऑडियो से करने पर, 40 डेसिबल से कम हेडरूम (ऑडियो सिग्नल प्रोसेसिंग) की आवश्यकता वाली रिकॉर्डिंग में 32-बिट फिक्स्ड का उपयोग करके उच्च सिग्नल-टू-ध्वनि अनुपात होता है।
फिक्स्ड-पॉइंट गणनाओं का उपयोग करने वाले प्रोग्राम सामान्यतः फ़्लोटिंग-पॉइंट का उपयोग करने वालों की तुलना में अधिक पोर्टेबल होते हैं, क्योंकि वे एफपीयू की उपलब्धता पर निर्भर नहीं होते हैं। आईईईई फ़्लोटिंग पॉइंट मानक को व्यापक रूप से अपनाए जाने से पहले यह लाभ विशेष रूप से सशक्त था, जब ही डेटा के साथ फ़्लोटिंग-पॉइंट गणना निर्माता के आधार पर और अधिकांशतः कंप्यूटर मॉडल के आधार पर अलग-अलग परिणाम देती थी।
कई एम्बेडेड प्रोसेसर में एफपीयू की कमी होती है, क्योंकि पूर्णांक अंकगणितीय इकाइयों को अधिक कम तर्क द्वार की आवश्यकता होती है और एफपीयू की तुलना में बहुत छोटे एकीकृत परिपथ क्षेत्र का उपभोग करते हैं; और कम गति वाले उपकरणों पर फ़्लोटिंग-पॉइंट का सॉफ़्टवेयर अनुकरण (कंप्यूटिंग) अधिकांश अनुप्रयोगों के लिए बहुत धीमा होता था। पहले के निजी कंप्यूटर और गेम कंसोल जैसे इंटेल 386 और इंटेल 486 के सीपीयू चिप्स में भी एफपीयू का अभाव था।
किसी भी निश्चित-बिंदु प्रारूप का पूर्ण रिज़ॉल्यूशन (क्रमिक मानों के बीच का अंतर) पूरी रेंज पर स्थिर होता है, अर्थात् स्केलिंग कारक एस इसके विपरीत, फ़्लोटिंग-पॉइंट प्रारूप का सापेक्ष रिज़ॉल्यूशन उनकी पूरी रेंज पर लगभग स्थिर होता है, अन्दर बदलता रहता है आधार बी का कारक; जबकि उनका पूर्ण रिज़ॉल्यूशन परिमाण के कई क्रमों के अनुसार भिन्न होता है।
कई स्थितियों में, निश्चित-बिंदु गणनाओं की क्वांटिज़ेशन (सिग्नल प्रोसेसिंग) त्रुटियों का विश्लेषण समतुल्य फ़्लोटिंग-पॉइंट गणनाओं की तुलना में सरल होता है। ट्रंकेशन पर रैखिककरण तकनीकों को प्रयुक्त करना, जैसे कि तड़पना और/या ध्वनि को आकार देना, निश्चित-बिंदु अंकगणित के अन्दर अधिक सीधा-आगे है। दूसरी ओर, निश्चित बिंदु के उपयोग के लिए प्रोग्रामर को अधिक देखभाल की आवश्यकता होती है। अतिप्रवाह से बचने के लिए गणना में चर की श्रेणियों और सभी मध्यवर्ती मूल्यों के लिए बहुत सख्त अनुमान की आवश्यकता होती है, और अधिकांशतः उनके स्केलिंग कारकों को समायोजित करने के लिए अतिरिक्त कोड की भी आवश्यकता होती है। फिक्स्ड-पॉइंट प्रोग्रामिंग के लिए सामान्यतः C डेटा प्रकार मुख्य प्रकार के उपयोग की आवश्यकता होती है। फिक्स्ड-पॉइंट एप्लिकेशन का उपयोग कर सकते हैं, जो निश्चित-पॉइंट वातावरण है जिसमें फिक्स्ड-पॉइंट डेटा के प्रत्येक सरणी (ब्लॉक) को ही शब्द में सामान्य घातांक के साथ स्केल किया जाता है।
अनुप्रयोग
दशमलव निश्चित-बिंदु का सामान्य उपयोग मौद्रिक मूल्यों को संग्रहीत करने के लिए होता है, जिसके लिए फ़्लोटिंग-पॉइंट संख्याओं के जटिल गोलाई नियम अधिकांशतः दायित्व होते हैं। उदाहरण के लिए, C में लिखा गया ओपन सोर्स मनी मैनेजमेंट एप्लिकेशन ग्नूकैश, इस कारण से संस्करण 1.6 के रूप में फ्लोटिंग-पॉइंट से फिक्स्ड-पॉइंट पर स्विच हो गया था।
बाइनरी फिक्स्ड-पॉइंट (बाइनरी स्केलिंग) का उपयोग 1960 के दशक के अंत से 1980 के दशक तक व्यापक रूप से वास्तविक समय कंप्यूटिंग के लिए किया गया था जो गणितीय रूप से गहन था, जैसे उड़ान सिमुलेशन और परमाणु ऊर्जा संयंत्र नियंत्रण एल्गोरिदम में यह अभी भी कई डिजिटल सिग्नल प्रोसेसिंग अनुप्रयोगों और कस्टम मेड माइक्रोप्रोसेसरों में उपयोग किया जाता है। कोणों से संबंधित गणनाओं में द्विआधारी कोणीय माप (बीएएम) का उपयोग किया जाता था।
बाइनरी फिक्स्ड पॉइंट का उपयोग एसटीएम32 श्रृंखला कॉरडिक सह-प्रोसेसरों और जेपीईजी छवियों को संपीड़ित करने के लिए उपयोग किए जाने वाले असतत कोसाइन परिवर्तन (डीसीटी) एल्गोरिदम में किया जाता है।
बिजली मीटर और वास्तविक समय की घड़ियाँ जैसे इलेक्ट्रॉनिक उपकरण अधिकांशतः प्रारंभ की गई त्रुटियों की आवरण के लिए बहुपद का उपयोग करते हैं, उदाहरण के लिए तापमान या बिजली आपूर्ति वोल्टेज से। गुणांक बहुपद प्रतिगमन द्वारा निर्मित होते हैं। बाइनरी निश्चित बिंदु बहुपद फ़्लोटिंग-पॉइंट की तुलना में स्पष्टता के अधिक बिट्स का उपयोग कर सकते हैं, और सस्ते सीपीयू का उपयोग करके तेज़ कोड में ऐसा कर सकते हैं। स्पष्टता, उपकरणों के लिए महत्वपूर्ण, समतुल्य-बिट फ़्लोटिंग-पॉइंट गणनाओं की तुलना में अच्छी तरह से तुलना करती है, यदि निश्चित-बिंदु बहुपदों को गुणनखंडित किया जाता है (उदाहरण के लिए 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/1000) × (1/32) = 1/32000 के साथ पूर्णांक 123×155 = 19065 प्राप्त होता है। , अर्थात 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। अन्य उदाहरण के रूप में, पहली संख्या को 155 से विभाजित करने पर 1/32 (155/32 = 4.84375) द्वारा स्केल किया गया पूर्णांक 3456÷155 = 22 (गोल) प्राप्त होता है, जिसमें अंतर्निहित स्केलिंग कारक (1/ 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,230,000÷6250 = 197 (गोल) स्केल फैक्टर 1/1000 (0.197) के साथ होगा। स्पष्ट मान 1.23/6.25 0.1968 है।
स्केलिंग रूपांतरण
निश्चित-बिंदु कंप्यूटिंग में किसी मान को भिन्न स्केलिंग कारक में परिवर्तित करना अधिकांशतः आवश्यक होता है। यह ऑपरेशन आवश्यक है, उदाहरण के लिए:
- किसी मान को प्रोग्राम वैरिएबल में संग्रहीत करने के लिए जिसमें अलग अंतर्निहित स्केलिंग कारक होता है;
- दो मानों को ही स्केलिंग फ़ैक्टर में परिवर्तित करना, जिससे उन्हें जोड़ा या घटाया जा सकता है;
- किसी मूल्य को दूसरे से गुणा या विभाजित करने के बाद उसके मूल स्केलिंग कारक को पुनर्स्थापित करता है;
- किसी विभाजन के परिणाम की स्पष्टता में सुधार करना;
- यह सुनिश्चित करने के लिए कि किसी उत्पाद या भागफल का स्केलिंग कारक 10n या 2n जैसी साधारण बल है;
- यह सुनिश्चित करने के लिए कि किसी ऑपरेशन के परिणाम को ओवरफ्लो के बिना प्रोग्राम वेरिएबल में संग्रहीत किया जा सकता है;
- निश्चित-बिंदु डेटा को संसाधित करने वाले हार्डवेयर की निवेश को कम करना।
किसी संख्या को स्केलिंग कारक आर के साथ निश्चित बिंदु प्रकार से स्केलिंग कारक एस के साथ दूसरे प्रकार में परिवर्तित करने के लिए, अंतर्निहित पूर्णांक को अनुपात आर/एस से गुणा किया जाना चाहिए। इस प्रकार, उदाहरण के लिए, मान 1.23 = 123/100 को स्केलिंग कारक R=1/100 से स्केलिंग कारक S=1/1000 वाले में बदलने के लिए, पूर्णांक 123 को (1/100)/(1/1000) से गुणा किया जाना चाहिए ) = 10, प्रतिनिधित्व 1230/1000 प्राप्त होता है।
यदि स्केलिंग कारक पूर्णांक का प्रतिनिधित्व करने के लिए आंतरिक रूप से उपयोग की जाने वाली आधार की बल है, तो स्केलिंग कारक को बदलने के लिए केवल पूर्णांक के निम्न-क्रम अंकों को छोड़ने या शून्य अंक जोड़ने की आवश्यकता होती है। चूँकि, इस ऑपरेशन में संख्या का चिह्न सुरक्षित रहना चाहिए। दो के पूरक प्रतिनिधित्व में, इसका अर्थ है अंकगणितीय बदलाव संचालन के रूप में साइन बिट का विस्तार करता है।
यदि S, R को विभाजित नहीं करता है (विशेष रूप से, यदि नया स्केलिंग कारक S मूल R से अधिक है), तो नए पूर्णांक को पूर्णांकित करना पड़ सकता है।
विशेष रूप से, यदि r और s अंतर्निहित स्केलिंग कारकों R और S के साथ निश्चित-बिंदु चर हैं, तो ऑपरेशन r ← r×s को संबंधित पूर्णांकों को गुणा करने और परिणाम को S द्वारा स्पष्ट रूप से विभाजित करने की आवश्यकता होती है। परिणाम को गोल करना पड़ सकता है, और अतिप्रवाह हो सकता है तब हो सकती है।
उदाहरण के लिए, यदि सामान्य स्केलिंग कारक 1/100 है, तो 1.23 को 0.25 से गुणा करने पर 123 को 25 से गुणा करने पर 1/10000 के मध्यवर्ती स्केलिंग कारक के साथ 3075 प्राप्त होता है। मूल स्केलिंग कारक 1/100 पर लौटने के लिए, पूर्णांक 3075 को 1/100 से गुणा किया जाना चाहिए, अर्थात 100 से विभाजित किया जाना चाहिए, जिससे या तो 31 (0.31) या 30 (0.30) प्राप्त हो सके, जो इस्तेमाल की गई गोलाई पर निर्भर करता है। .
इसी तरह, ऑपरेशन r ← r/s के लिए पूर्णांकों को विभाजित करने और भागफल को स्पष्ट रूप से S से गुणा करने की आवश्यकता होती है। पूर्णांकन और/या अतिप्रवाह यहां भी हो सकता है।
फ़्लोटिंग-पॉइंट से और उससे रूपांतरण
किसी संख्या को फ़्लोटिंग पॉइंट से निश्चित पॉइंट में बदलने के लिए, कोई इसे स्केलिंग फ़ैक्टर S से गुणा कर सकता है, फिर परिणाम को निकटतम पूर्णांक में गोल कर सकता है। यह सुनिश्चित करने के लिए ध्यान रखा जाना चाहिए कि परिणाम गंतव्य चर या रजिस्टर में फिट बैठता है। स्केलिंग कारक और स्टोरेज आकार और रेंज इनपुट संख्याओं के आधार पर, रूपांतरण में कोई राउंडिंग सम्मिलित नहीं हो सकती है।
एक निश्चित-बिंदु संख्या को फ़्लोटिंग-पॉइंट में परिवर्तित करने के लिए, कोई पूर्णांक को फ़्लोटिंग-पॉइंट में परिवर्तित कर सकता है और फिर इसे स्केलिंग कारक एस द्वारा विभाजित कर सकता है। यदि पूर्णांक का पूर्ण मान 224 से अधिक है तो इस रूपांतरण में पूर्णांकन सम्मिलित हो सकता है। (बाइनरी सिंगल-प्रिसिजन आईईईई फ़्लोटिंग पॉइंट के लिए) या 253 का (डबल-प्रिसिजन के लिए)। यदि |s| तो ओवरफ्लो या अधःप्रवाह हो सकता है क्रमशः बहुत बड़ा या बहुत छोटा है।
हार्डवेयर समर्थन
स्केलिंग और पुनर्सामान्यीकरण
विशिष्ट प्रोसेसर के पास निश्चित-बिंदु अंकगणित के लिए विशिष्ट समर्थन नहीं होता है। चूँकि, बाइनरी अंकगणित वाले अधिकांश कंप्यूटरों में तेज़ बिट शिफ्ट निर्देश होते हैं जो पूर्णांक को 2 की किसी भी बल से गुणा या विभाजित कर सकते हैं; विशेष रूप से, अंकगणितीय बदलाव निर्देश इन निर्देशों का उपयोग संख्या के चिह्न को संरक्षित करते हुए स्केलिंग कारकों को जल्दी से बदलने के लिए किया जा सकता है जो 2 की घात हैं।
आईबीएम 1620 और बरोज़ मीडियम सिस्टम्स जैसे शुरुआती कंप्यूटरों ने पूर्णांकों के लिए बाइनरी-कोडित दशमलव (बीसीडी) प्रतिनिधित्व का उपयोग किया, अर्थात् आधार 10 जहां प्रत्येक दशमलव अंक स्वतंत्र रूप से 4 बिट्स के साथ एन्कोड किया गया था। कुछ प्रोसेसर, जैसे माइक्रोकंट्रोलर, अभी भी इसका उपयोग कर सकते हैं। ऐसी मशीनों में, दशमलव स्केलिंग कारकों का रूपांतरण बिट शिफ्ट और/या मेमोरी एड्रेस हेरफेर द्वारा किया जा सकता है।
कुछ डीएसपी आर्किटेक्चर विशिष्ट निश्चित-बिंदु प्रारूपों के लिए मूल समर्थन प्रदान करते हैं, उदाहरण के लिए एन-1 अंश बिट्स के साथ हस्ताक्षरित एन-बिट संख्याएं (जिनके मान -1 और लगभग +1 के बीच हो सकते हैं)। समर्थन में गुणा निर्देश सम्मिलित हो सकता है जिसमें पुनर्सामान्यीकरण सम्मिलित है - उत्पाद का 2n−2 से n−1 अंश बिट्स तक स्केलिंग रूपांतरण यदि सीपीयू वह सुविधा प्रदान नहीं करता है, तो प्रोग्रामर को उत्पाद को बड़े पर्याप्त रजिस्टर या अस्थायी चर में सहेजना होगा, और पुनर्सामान्यीकरण को स्पष्ट रूप से कोड करना होता है।
अतिप्रवाह
अतिप्रवाह तब होता है जब अंकगणितीय ऑपरेशन का परिणाम निर्दिष्ट गंतव्य क्षेत्र में संग्रहीत करने के लिए बहुत बड़ा होता है। जोड़ और घटाव के अतिरिक्त, परिणाम के लिए ऑपरेंड की तुलना में बिट अधिक की आवश्यकता हो सकती है। एम और एन बिट्स के साथ दो अहस्ताक्षरित पूर्णांकों के गुणन में, परिणाम में एम+एन बिट्स हो सकते हैं।
अतिप्रवाह के स्थिति में, उच्च-क्रम बिट्स सामान्यतः खो जाते हैं, क्योंकि अन-स्केल्ड पूर्णांक मॉड्यूलो 2n कम हो जाता है जहां n स्टोरेज क्षेत्र का आकार है। विशेष रूप से, साइन बिट खो जाता है, जो मूल रूप से साइन और मूल्य के परिमाण को बदल सकता है।
कुछ प्रोसेसर हार्डवेयर अतिप्रवाह ध्वज सेट कर सकते हैं और/या ओवरफ़्लो होने पर अपवाद हैंडलिंग उत्पन्न कर सकते हैं। कुछ प्रोसेसर इसके अतिरिक्त संतृप्ति अंकगणित प्रदान कर सकते हैं: यदि जोड़ या घटाव का परिणाम अतिप्रवाह होता है, तो वे इसके अतिरिक्त सबसे बड़े परिमाण के साथ मूल्य संग्रहीत करते हैं जो प्राप्त क्षेत्र में फिट हो सकता है और सही संकेत हो सकता है।
चूँकि, ये सुविधाएँ व्यवहार में बहुत उपयोगी नहीं हैं; स्केलिंग कारकों और शब्द आकारों का चयन करना सामान्यतः सरल और सुरक्षित होता है जिससे अतिप्रवाह की संभावना को बाहर रखा जा सके, या ऑपरेशन निष्पादित करने से पहले अत्यधिक मूल्यों के लिए ऑपरेंड की जांच की जा सकती है।
कंप्यूटर भाषा समर्थन
निश्चित-बिंदु संख्याओं के लिए स्पष्ट समर्थन कुछ कंप्यूटर भाषाओं द्वारा प्रदान किया जाता है, विशेष रूप से पीएल/आई, कोबोल, एडीए प्रोग्रामिंग भाषा, जोविअल प्रोग्रामिंग भाषा और कोरल 66। वे बाइनरी या दशमलव स्केलिंग कारक के साथ निश्चित-बिंदु डेटा प्रकार प्रदान करते हैं। कंपाइलर स्वचालित रूप से इन डेटा-प्रकारों पर संचालन करते समय, चर पढ़ते या लिखते समय, या मानों को अन्य डेटा प्रकारों जैसे फ़्लोटिंग-पॉइंट में परिवर्तित करते समय उचित स्केलिंग रूपांतरण करने के लिए कोड उत्पन्न करता है।
उनमें से अधिकांश भाषाएँ 1940 और 1990 के बीच डिज़ाइन की गई थीं। अधिक आधुनिक भाषाएँ सामान्यतः स्केलिंग कारक रूपांतरण के लिए कोई निश्चित-बिंदु डेटा प्रकार या समर्थन प्रदान नहीं करती हैं। यही वर्तमान कई पुरानी भाषाओं का भी है जो अभी भी बहुत लोकप्रिय हैं, जैसे फोरट्रान, सी (प्रोग्रामिंग भाषा) और सी++। कड़ाई से मानकीकृत व्यवहार के साथ तेज़ फ़्लोटिंग-पॉइंट प्रोसेसर की व्यापक उपलब्धता ने बाइनरी फिक्स्ड पॉइंट समर्थन की मांग को अधिक कम कर दिया है। इसी तरह, कुछ प्रोग्रामिंग भाषाओं, जैसे सी शार्प लैंग्वेज|सी और पायथन (प्रोग्रामिंग लैंग्वेज) में दशमलव फ़्लोटिंग पॉइंट के समर्थन ने दशमलव निश्चित-पॉइंट समर्थन की अधिकांश आवश्यकता को हटा दिया है। कुछ स्थितियों में जहां निश्चित-बिंदु संचालन की आवश्यकता होती है, उन्हें प्रोग्रामर द्वारा किसी भी प्रोग्रामिंग भाषा में स्पष्ट स्केलिंग रूपांतरण के साथ कार्यान्वित किया जा सकता है।
दूसरी ओर, सभी रिलेशनल डेटाबेस और एसक्यूएल नोटेशन निश्चित-बिंदु दशमलव अंकगणित और संख्याओं के स्टोरेज का समर्थन करते हैं। पोस्टग्रेजएसक्यूएल में 1000 अंकों तक की संख्याओं के स्पष्ट स्टोरेज के लिए विशेष संख्यात्मक प्रकार है।[2]
इसके अतिरिक्त, 2008 में अंतर्राष्ट्रीय मानक संगठन (आईएसओ) ने एम्बेडेड प्रोसेसर पर चलने वाले प्रोग्रामों के लाभ के लिए सी प्रोग्रामिंग भाषा को निश्चित-बिंदु डेटा प्रकारों के साथ विस्तारित करने का प्रस्ताव जारी किया था।[3] इसके अतिरिक्त, जीएनयू कंपाइलर संग्रह (जीसीसी) में फिक्स्ड-पॉइंट के लिए कंपाइलर बैक एंड बैक-एंड सपोर्ट है।[4][5]
विस्तृत उदाहरण
दशमलव निश्चित बिंदु गुणन
मान लीजिए कि 2 निश्चित बिंदु 3 दशमलव स्थान संख्याओं के साथ निम्नलिखित गुणन है।
ध्यान दें कि चूंकि 3 दशमलव स्थान हैं इसलिए हम पीछे वाले शून्य को कैसे दिखाते हैं। इसे पूर्णांक गुणन के रूप में पुनः चित्रित करने के लिए हमें पहले इससे गुणा करना होगा सभी दशमलव स्थानों को पूर्णांक स्थानों पर ले जाकर, हम गुणा करेंगे उन्हें वापस लाने के लिए समीकरण अब जैसा दिखता है
यदि हम अलग आधार चुनते हैं, विशेष रूप से कंप्यूटिंग के लिए आधार 2, तो यह समान रूप से काम करता है, क्योंकि थोड़ा सा बदलाव 2 के क्रम से गुणा या भाग के समान है। तीन दशमलव अंक लगभग 10 बाइनरी अंकों के बराबर हैं, इसलिए हमें 0.05 को गोल करना चाहिए बाइनरी पॉइंट के बाद 10 बिट्स तक। तब निकटतम सन्निकटन 0.0000110011 है।
इस प्रकार हमारा गुणनफल हो जाता है
यह दशमलव बिंदु के बाद तीन अंकों के साथ 11.023 तक पूर्णांकित होता है।
बाइनरी निश्चित-बिंदु गुणन
16 अंश बिट्स का उपयोग करके बाइनरी निश्चित बिंदु के साथ 1.2 और 5.6 के उत्पाद की गणना करने के कार्य पर विचार करें। दो संख्याओं को दर्शाने के लिए, उन्हें 216 से गुणा किया जाता है, प्राप्त करना 78 643.2 और 367 001.6; और इन मानों को निकटतम पूर्णांक प्राप्त करते हुए पूर्णांकित करें 78 643 और 367 002. ये संख्याएं दो पूरक हस्ताक्षरित प्रारूप के साथ 32-बिट शब्द में आराम से फिट हो जाएंगी।
इन पूर्णांकों को साथ गुणा करने पर 35-बिट पूर्णांक प्राप्त होता है 28 862 138 286 32 अंश बिट्स के साथ, बिना किसी गोलाई के। ध्यान दें कि इस मान को सीधे 32-बिट पूर्णांक चर में संग्रहीत करने से अतिप्रवाह होगा और सबसे महत्वपूर्ण बिट्स का हानि होगा। व्यवहार में, इसे संभवतः हस्ताक्षरित 64-बिट पूर्णांक चर या रजिस्टर (कंप्यूटिंग) में संग्रहीत किया जाता है।
यदि परिणाम को डेटा के समान प्रारूप में 16 अंश बिट्स के साथ संग्रहीत किया जाना है, तो उस पूर्णांक को 216 से विभाजित किया जाना चाहिए, जो लगभग देता है 440 401.28, और फिर निकटतम पूर्णांक तक पूर्णांकित किया गया। यह प्रभाव 215 जोड़कर प्राप्त किया जा सकता है और फिर परिणाम को 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-बिट निश्चित बिंदु प्रारूप में दर्शायी जाती हैं। 230 और 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-बिट निश्चित प्रारूप में प्रस्तुत करना चुनते हैं, तो हमें पूर्णांक उत्पाद को 250-8 = 242 से विभाजित करना होगाऔर परिणाम को गोल करें; जिसे 241 जोड़कर प्राप्त किया जा सकता है और 42 बिट्स द्वारा स्थानांतरण परिणाम 1720 है, जो मान 1720/28=6.718 75, या लगभग 6.719 ± 0.002 दर्शाता है।
नोटेशन
निश्चित-बिंदु प्रारूप के मापदंडों को संक्षिप्त रूप से निर्दिष्ट करने के लिए विभिन्न नोटेशन का उपयोग किया गया है। निम्नलिखित सूची में, f भिन्नात्मक बिट्स की संख्या का प्रतिनिधित्व करता है, m परिमाण या पूर्णांक बिट्स की संख्या, s साइन बिट्स की संख्या और b बिट्स की कुल संख्या का प्रतिनिधित्व करता है।
- कोबोल प्रोग्रामिंग भाषा मूल रूप से इच्छानुसार आकार और दशमलव स्केलिंग के साथ दशमलव निश्चित-परिशुद्धता का समर्थन करती थी, जिसका प्रारूप ग्राफ़िक रूप से निर्दिष्ट किया गया था PIC निर्देश. उदाहरण के लिए, PIC S9999V99 दो दशमलव अंश अंकों के साथ संकेत-परिमाण 6-अंकीय दशमलव पूर्णांक निर्दिष्ट किया था।[6]
- निर्माण REAL FIXED BINARY (पी,एफ) का उपयोग पीएल/आई प्रोग्रामिंग भाषा में, अंश भाग में एफ बिट्स के साथ पी कुल बिट्स (चिह्न सहित नहीं) के साथ निश्चित-बिंदु हस्ताक्षरित बाइनरी डेटा प्रकार निर्दिष्ट करने के लिए किया जाता है; यह 1/2 के स्केलिंग कारक के साथ पी+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/215 के साथ दो के पूरक नोटेशन में हस्ताक्षरित पूर्णांक निर्दिष्ट करता है. कोड Qm.एफ अतिरिक्त रूप से निर्दिष्ट करता है कि संख्या में मान के पूर्णांक भाग में एम बिट्स हैं, साइन बिट की गिनती नहीं। इस प्रकार Q1.30 1 पूर्णांक बिट और 30 भिन्नात्मक बिट्स के साथ बाइनरी फिक्स्ड-पॉइंट प्रारूप का वर्णन करेगा, जिसे स्केलिंग कारक 1/2 के साथ 32-बिट 230 के पूरक पूर्णांक के रूप में संग्रहीत किया जा सकता है।.[8][9] एआरएम वास्तुकला द्वारा समान नोटेशन का उपयोग किया गया है, सिवाय इसके कि वे एम के मूल्य में साइन बिट की गणना करते हैं; इसलिए उपरोक्त वही Q2.30 प्रारूप निर्दिष्ट किया जाता है [10][11] - संकेतन B एम का प्रयोग किया गया है पूर्णांक भाग में एम बिट्स के साथ निश्चित बाइनरी प्रारूप का कारण है; शेष शब्द अंश अंश हैं। उदाहरण के लिए, अधिकतम और न्यूनतम मान जिन्हें किसी हस्ताक्षरित में संग्रहीत किया जा सकता है B16 संख्याएँ क्रमशः ≈32767.9999847 और −32768.0 हैं।
- विज़सिम कंपनी का उपयोग किया गया fx एम.बी पूर्णांक भाग में बी कुल बिट्स और एम बिट्स के साथ बाइनरी निश्चित-बिंदु मान को दर्शाने के लिए; अर्थात्, स्केलिंग कारक 1/2 के साथ bb−m-बिट पूर्णांक. इस प्रकार fx1.16 का कारण 16-बिट संख्या होगा जिसमें पूर्णांक भाग में 1 बिट और अंश में 15 होगा।[12]
- प्लेस्टेशन 2 जीएस (प्लेस्टेशन 2 तकनीकी विनिर्देश ग्राफ़िक्स प्रोसेसिंग यूनिट या ग्राफ़िक्स सिंथेसाइज़र) उपयोगकर्ता गाइड नोटेशन का उपयोग करता है:एम:f, जहां s साइन बिट की उपस्थिति (0 या 1) निर्दिष्ट करता है।[13] उदाहरण के लिए, 0:5:3 1/2 के स्केलिंग कारक के साथ अहस्ताक्षरित 83-बिट पूर्णांक का प्रतिनिधित्व करता है.
- लैबव्यू प्रोग्रामिंग भाषा नोटेशन का उपयोग करती है 'एफएक्सपी' निश्चित बिंदु संख्याओं के मापदंड निर्दिष्ट करने के लिए। एस घटक या तो '+' या '±' हो सकता है, जो क्रमशः अहस्ताक्षरित या 2 के पूरक हस्ताक्षरित संख्या को दर्शाता है। बी घटक बिट्स की कुल संख्या है, और एम पूर्णांक भाग में बिट्स की संख्या है।
सॉफ़्टवेयर अनुप्रयोग उदाहरण
- लोकप्रिय ट्रू टाइप फ़ॉन्ट प्रारूप अपने निर्देशों में कुछ संख्यात्मक मानों के लिए दशमलव के बाईं ओर 26 बिट्स के साथ 32-बिट हस्ताक्षरित बाइनरी फिक्स्ड-पॉइंट का उपयोग करता है।[14] फ़ॉन्ट संकेत और प्रदर्शन कारणों से आवश्यक न्यूनतम मात्रा में स्पष्टता प्रदान करने के लिए इस प्रारूप को चुना गया था।[15]
- 3डीओ इंटरएक्टिव मल्टीप्लेयर, प्ले स्टेशन , अब शनि और अटारी जगुआर सहित वीडियो गेम कंसोल की पांचवीं पीढ़ी के लिए सभी 3D गेम,[16] छठी पीढ़ी के खेल घन के अतिरिक्त, फिक्स्ड-पॉइंट अंकगणित का उपयोग करें, क्योंकि सिस्टम में हार्डवेयर फ्लोट-पॉइंट इकाइयों की कमी है। प्लेस्टेशन ट्रांसफॉर्मेशन कोप्रोसेसर 12 अंश बिट्स के साथ 16-बिट फिक्स्ड पॉइंट का समर्थन करता है।
- वैज्ञानिकों और गणितज्ञों द्वारा व्यापक रूप से उपयोग किया जाने वाला टेक्स टाइपसेटिंग सॉफ़्टवेयर, सभी स्थिति गणनाओं के लिए 16 अंश बिट्स के साथ 32-बिट हस्ताक्षरित बाइनरी निश्चित बिंदु का उपयोग करता है। मानों की व्याख्या बिंदु (टाइपोग्राफी) टाइपोग्राफर के बिंदु के अंशों के रूप में की जाती है। टेक्स फ़ॉन्ट मीट्रिक फ़ाइलें 12 अंश बिट्स के साथ 32-बिट हस्ताक्षरित निश्चित-बिंदु संख्याओं का उपयोग करती हैं।
- कंपकंपी (सॉफ्टवेयर) , टोस्ट (जीएसएम) और एमपीईजी ऑडियो डिकोडर सॉफ्टवेयर लाइब्रेरी हैं जो क्रमशः वॉर्बिस, पूर्ण दर और मैनिफोल्ड ऑडियो प्रारूपों को डिकोड करते हैं। ये कोडेक्स निश्चित-बिंदु अंकगणित का उपयोग करते हैं क्योंकि कई ऑडियो डिकोडिंग हार्डवेयर उपकरणों में एफपीयू नहीं होता है।
- वेवपैक दोषरहित ऑडियो कंप्रेसर निश्चित बिंदु अंकगणित का उपयोग करता है। अन्य बातों के अतिरिक्त, यह चुनाव इस चिंता से उचित था कि विभिन्न हार्डवेयर में अलग-अलग फ़्लोटिंग-पॉइंट राउंडिंग नियम संपीड़न की दोषरहित प्रकृति को दूषित कर सकते हैं।[17]
- नेस्ट लैब्स यूटिलिटीज लाइब्रेरी,[18] निश्चित बिंदु संख्याओं के लिए मैक्रोज़ और फलन का सीमित सेट प्रदान करता है, जब सेंसर सैंपलिंग और सेंसर आउटपुट के संदर्भ में उन संख्याओं से निपटते हैं।
- ओपनजीएल एन 1.x विनिर्देश में निश्चित बिंदु प्रोफ़ाइल सम्मिलित है, क्योंकि यह एम्बेडेड सिस्टम के लिए एपीआई है, जिसमें सदैव एफपीयू नहीं होता है।
- डीसी (कंप्यूटर प्रोग्राम) और बीसी प्रोग्रामिंग भाषा प्रोग्राम मनमाना-स्पष्ट अंकगणित कैलकुलेटर हैं, किन्तु केवल भिन्नात्मक अंकों की (उपयोगकर्ता-निर्दिष्ट) निश्चित संख्या का ट्रैक रखते हैं।
- फ़्रैक्टिंट संख्याओं को Q (संख्या प्रारूप) के रूप में दर्शाता है | Q2.29 निश्चित-बिंदु संख्याएँ,[19] इंटेल 80386 या इंटेल 80486SX प्रोसेसर वाले पुराने पीसी पर ड्राइंग को तेज़ करने के लिए, जिसमें एफपीयू की कमी थी।
- डूम (1993 वीडियो गेम) आईडी सॉफ्टवेयर द्वारा मैप सिस्टम, ज्योमेट्री, रेंडरिंग और प्लेयर मूवमेंट सहित अपने सभी गैर-पूर्णांक संगणनाओं के लिए 16.16 निश्चित बिंदु प्रतिनिधित्व का उपयोग करने वाला आखिरी प्रथम-व्यक्ति शूटर गेम था। यह प्रतिनिधित्व अभी भी डूम स्रोत पोर्ट्स की आधुनिक सूची में उपयोग किया जाता है।
- माइक्रोसॉफ्ट एज़्योर कंप्यूटर के लिए Q शार्प Q प्रोग्रामिंग भाषा, जो क्वांटम लॉजिक गेट्स को प्रयुक्त करती है, में क्वैबिट के क्वांटम रजिस्टर पर निश्चित-बिंदु अंकगणित करने के लिए मानक संख्यात्मक लाइब्रेरी सम्मिलित है।[20]
यह भी देखें
- क्यू (संख्या प्रारूप)
- लिबफिक्समैथ - निश्चित-बिंदु गणित के लिए सी में लिखी गई लाइब्रेरी
- लघुगणकीय संख्या प्रणाली
- मिनीफ्लोट
फ़्लोटिंग-पॉइंट स्केलिंग को ब्लॉक करें को ब्लॉक करें
- मोडुलो ऑपरेशन
- μ-नियम एल्गोरिथ्म
- ए-लॉ एल्गोरिदम
संदर्भ
- ↑ Julia programming language documentation FixedPointNumbers package.
- ↑ PostgreSQL manual, section 8.1.2. Arbitrary Precision Numbers
- ↑ JTC1/SC22/WG14 (2008), status of TR 18037: Embedded C
- ↑ GCC wiki, Fixed-Point Arithmetic Support
- ↑ Using GCC, section 5.13 Fixed-Point Types
- ↑ IBM Corporation, "Numeric items". Online documentation site, accessed on 2021-07-05.
- ↑ Ada 83 documentation: "Rationale, 5.3.2: Fixed Point Types". Accessed on 2021-07-05.
- ↑ 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.
- ↑ "MathWorks Fixed-Point Toolbox Documentation Glossary". mathworks.com.
- ↑ "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.
- ↑ "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.
- ↑ "VisSim is now solidThinking Embed". www.vissim.com. solidThinking Inc.
- ↑ PS2 GS User's Guide, Chapter 7.1 "Explanatory Notes"
- ↑ "The TrueType Instruction Set: Data types".
- ↑ "[Freetype] Why 26.6 ?".
- ↑ "Dolphin Emulator". Dolphin Emulator. 2014-03-15.
- ↑ "WavPack Technical Description". www.wavpack.com. Retrieved 2015-07-13.
- ↑ Nest Labs Utilities library
- ↑ "Fractint, A Little Code". Archived from the original on 2010-10-27. Retrieved 2005-10-24.
- ↑ "Introduction to the Quantum Numerics Library". Retrieved 2019-11-13.
अग्रिम पठन
- Warren, Jr., Henry S. (2013). Hacker's Delight (2 ed.). Addison Wesley / Pearson Education, Inc. ISBN 978-0-321-84268-8.