पूरक की विधि

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

दशमलव प्रतिनिधित्व में दी गई संख्या का नौ' पूरक प्रत्येक अंक को उस अंक को घटाकर नौ से प्रतिस्थापित करके बनाया जाता है। दशमलव संख्या y (सबट्रेंड) को दूसरी संख्या x (मीनूएंड) से घटाने के लिए दो विधियों का उपयोग किया जा सकता है:

पहली विधि में x के नौ पूरक को y में जोड़ा जाता है। फिर वांछित परिणाम उत्पन्न करने के लिए प्राप्त परिणाम का नाइन पूरक बनाया जाता है। दूसरी विधि में y के नौ पूरक को x में जोड़ा जाता है और योग में जोड़ा जाता है। फिर परिणाम का सबसे बायां अंक '1' हटा दिया जाता है। सबसे बाईं ओर के '1' को हटाना विशेष रूप से कैलकुलेटर या कंप्यूटर पर सुविधाजनक होता है जो अंकों की निश्चित संख्या का उपयोग करते हैं: इसके जाने के लिए कहीं नहीं है इसलिए यह गणना के समय बस खो जाता है। नौ का पूरक और को दस का पूरक के रूप में जाना जाता है।

पूरक की विधि को अन्य संख्या आधारों (मूलांक) तक बढ़ाया जा सकता है; विशेष रूप से, इसका उपयोग अधिकांश डिजिटल कंप्यूटरों पर घटाव करने, आधार 2 या बाइनरी संख्या में नकारात्मक संख्याओं का प्रतिनिधित्व करने और गणना में अंडरफ्लो और ओवरफ्लो का परीक्षण करने के लिए किया जाता है।

संख्यात्मक पूरक
मूलांक का पूरक $$n$$ अंकों की संख्या $$y$$ मूलांक में $$b$$ परिभाषित किया जाता है $$b^n - y$$. व्यवहार में, मूलांक पूरक को कम मूलांक पूरक में 1 जोड़कर अधिक सरलता से प्राप्त किया जा सकता है, जो कि है $$\left(b^n - 1\right) - y$$. चूँकि मूलांक पूरक के रूप में इसकी गणना करना उतना ही कठिन लगता है, यह वास्तव में सरल है $$\left(b^n - 1\right)$$ बस अंक है $$b - 1$$ दोहराया गया $$n$$ बार. यह है क्योंकि$$b^n - 1 = (b - 1)\left(b^{n-1} + b^{n-2} + \cdots + b + 1\right) = (b - 1)b^{n-1} + \cdots + (b - 1)$$ (ज्यामितीय श्रृंखला भी देखें)। यह जानकर, प्रत्येक अंक को उसके सापेक्ष पूरक करके किसी संख्या का घटा हुआ मूलांक $$b - 1$$, अर्थात प्रत्येक अंक को घटाना $$y$$ से $$b - 1$$. पूरक पाया जा सकता है

घटाव $$y$$ से $$x$$ घटे हुए मूलांक पूरकों का उपयोग निम्नानुसार किया जा सकता है। जिसका घटा हुआ मूलांक पूरक जोड़ें $$x$$ को $$y$$ प्राप्त करने के लिए $$b^n - 1 - x + y$$ या समकक्ष $$b^n - 1 - (x - y)$$, जो कि घटा हुआ मूलांक पूरक है $$x-y$$. आगे घटते मूलांक पूरक को लेते हुए $$b^n - 1 - (x - y)$$ का वांछित $$x - y$$ उत्तर प्राप्त होता है.

वैकल्पिक रूप से मूलांक पूरक का उपयोग करते हुए, $$x-y$$ का मूलांक पूरक जोड़कर प्राप्त किया जा सकता है $$y$$ को $$x$$ प्राप्त करने के लिए $$x + b^n - y$$ या $$x - y + b^n$$. यह मानते हुए $$y \leq x$$, परिणाम बड़ा या बराबर होगा $$b^n$$ और अग्रणी को गिराना $$1$$ परिणाम से घटाना $$b^n$$ समान है , परिणाम बना रहा है $$x - y + b^n - b^n$$ या केवल $$x - y$$, वांछित परिणाम है.

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

==दशमलव उदाहरण                                                                                                                                                                                                                 == दशमलव अंक का नौ पूरक वह संख्या है जिसे 9 प्राप्त करने के लिए इसमें जोड़ा जाना चाहिए; 3 का नाइन का पूरक 6 है, 7 का नाइन का पूरक 2 है, इत्यादि, तालिका देखें। किसी बड़ी संख्या का नौ का पूरक बनाने के लिए, प्रत्येक अंक को उसके नौ के पूरक से बदल दिया जाता है।

निम्नलिखित घटाव समस्या पर विचार करें:

पहली विधि
मीनूएंड, 873 के नाइन के पूरक की गणना करें। इसे उपट्रेंड 218 में जोड़ें, फिर परिणाम के नाइन के पूरक की गणना करें। अब परिणाम के नौ पूरक की गणना करें

दूसरी विधि
218 के नौ के पूरक की गणना करें, जो 781 है। क्योंकि 218 तीन अंक लंबा है, यह 999 में से 218 घटाने के समान है।

अगला, का योग $$x$$ और नौ का पूरक $$y$$ लिया जाता है: फिर अग्रणी 1 अंक हटा दिया जाता है, जिससे 654 मिलता है। 1654 -1000 [-(999 + 1)] ————— 654 [-(999 + 1) + 999 + x - y]

ये अभी तक सही नहीं है. पहले चरण में, समीकरण में 999 जोड़ा गया। फिर जब अग्रणी 1 हटा दिया गया तो 1000 घटा दिया गया। तो, प्राप्त उत्तर (654) सही उत्तर से कम है $$x-y$$. इसे ठीक करने के लिए, उत्तर में 1 जोड़ा गया है:

654 +1 ————— 655 [x - y]

1 जोड़ने पर 655 मिलता है, जो हमारी मूल घटाव समस्या का सही उत्तर है। 1 जोड़ने का अंतिम चरण छोड़ा जा सकता है यदि इसके अतिरिक्त पहले चरण में y के दहाई के पूरक का उपयोग किया गया हो।

संख्याओं का परिमाण
निम्नलिखित उदाहरण में घटाव के परिणाम में इससे कम अंक हैं $$x$$: 1234 10 [x, मीनुएंड] - 123401 y, वे घटाते हैं पहली विधि का उपयोग करके नौ के पूरक का योग $$x$$ और $$y$$ है 999990 का नाइन पूरक 000009 है। अग्रणी शून्य को हटाने से 9 वांछित परिणाम मिलता है।

यदि उपप्रकार, $$y$$, मीनूएंड से कम अंक हैं, $$x$$, दूसरी विधि में अग्रणी शून्य अवश्य जोड़ा जाना चाहिए। पूरक लेने पर ये शून्य अग्रणी नौ बन जाते हैं। उदाहरण के लिए: पुनः लिखा जा सकता है 00391 को इसके नौ पूरक के साथ प्रतिस्थापित करने और 1 जोड़ने से योग उत्पन्न होता है: अग्रणी 1 को हटाने पर सही उत्तर मिलता है: 47641।

==बाइनरी विधि                                                                                                                                                                                                           == पूरक की विधि बाइनरी (मूलांक 2) में विशेष रूप से उपयोगी है क्योंकि प्रत्येक बिट को उल्टा करके ('0' को '1' में बदलकर और इसके विपरीत) द्वारा पूरक बहुत सरलता से प्राप्त किया जा सकता है। कम से कम महत्वपूर्ण बिट में कैरी का अनुकरण करके दोनों का पूरक प्राप्त करने के लिए 1 जोड़ा जा सकता है। उदाहरण के लिए: योग बन जाता है:

आरंभिक 1 को हटाने पर उत्तर मिलता है: 0100 1110 (दशमलव 78 के बराबर)

ऋणात्मक संख्या निरूपण
पूरक की विधि सामान्यतः मानती है कि ऑपरेंड सकारात्मक हैं और y ≤ x, तार्किक बाधाएं दी गई हैं कि सही विधि से पूर्णांकों को जोड़ना और घटाना सामान्यतः संकेतों की तुलना करके, दोनों को जोड़कर या बड़े से छोटे को घटाकर किया जाता है, और परिणाम सही होता है संकेत।

आइए देखें कि यदि x < y हो तो क्या होता है। उस स्थिति में, जोड़ने के बाद काटने के लिए 1 अंक नहीं होगा $$x-y+b^n$$ से कम होगा $$b^n$$. उदाहरण के लिए, (दशमलव में):

185 [x] - 329 [y]

y को पूरक करने और जोड़ने पर मिलता है:

185 [x] + 670 [nines' complement of y] +1 ————— 856

इस बिंदु पर, घटाकर गणना पूरी करने का कोई सरल विधि नहीं है $$b^n$$ (इस स्थिति में 1000); कोई भी अग्रणी 1 को अनदेखा नहीं कर सकता है। अपेक्षित उत्तर -144 है, जो उतना दूर नहीं है जितना लगता है; 856, 144 का दहाई का पूरक है। इस कथन को कई विधियों से संबोधित किया जा सकता है:
 * कथन पर ध्यान न दें. यह उचित है यदि कोई व्यक्ति गणना उपकरण चला रहा है जो नकारात्मक संख्याओं का समर्थन नहीं करता है क्योंकि गणना से पहले दो ऑपरेंड की तुलना करना ताकि उन्हें उचित क्रम में अंकित किया जा सके, और यह सत्यापित करना कि परिणाम उचित है, मनुष्यों के लिए ऐसा करना सरल है.
 * 1000 में से 856 घटाने के लिए उसी विधि का उपयोग करें, और फिर परिणाम में नकारात्मक चिह्न जोड़ें है।
 * ऋणात्मक संख्याओं को उनके धनात्मक समकक्षों के मूलांक पूरक के रूप में निरूपित करें। से कम संख्या $$b^n/2$$ सकारात्मक माने जाते हैं; बाकी को नकारात्मक माना जाता है (और उनका परिमाण मूलांक पूरक लेकर प्राप्त किया जा सकता है)। यह सम मूलांकों के लिए सबसे अच्छा काम करता है क्योंकि चिह्न का निर्धारण पहले अंक को देखकर किया जा सकता है। उदाहरण के लिए, दस के पूरक अंकन में संख्याएँ सकारात्मक हैं यदि पहला अंक 0, 1, 2, 3, या 4 है, और यदि 5, 6, 7, 8, या 9 है तो नकारात्मक हैं। और यह पहले से ही बाइनरी में बहुत अच्छी तरह से काम करता है बिट को साइन बिट माना जा सकता है: यदि साइन बिट 0 है तो संख्या सकारात्मक है और यदि 1 है तो नकारात्मक है। वास्तव में, हस्ताक्षरित संख्याओं को दर्शाने के लिए अधिकांश आधुनिक कंप्यूटरों में दो के पूरक का उपयोग किया जाता है।
 * यदि सबसे महत्वपूर्ण अंक (एक संकेत है कि x, y से कम था) का कोई उपयोग नहीं होने पर परिणाम को पूरक करें। ऑपरेंड की तुलना और अदला-बदली करने की तुलना में इसे डिजिटल सर्किट के साथ प्रयुक्त करना सरल है। किन्तु चूंकि मूलांक पूरक लेने के लिए 1 जोड़ने की आवश्यकता होती है, इसलिए इसे सीधे करना कठिन है। इस जोड़ से बचने के लिए तरकीब का उपयोग किया जा सकता है: घटाते समय कैरी आउट को सदैव सबसे कम महत्वपूर्ण अंक में सेट करने के अतिरिक्त, सबसे महत्वपूर्ण अंक के कैरी आउट को कम से कम महत्वपूर्ण अंक में कैरी इनपुट के रूप में उपयोग किया जाता है (एक ऑपरेशन जिसे कहा जाता है) । इसलिए यदि y ≤ x है, तो सबसे महत्वपूर्ण अंक जिसे सामान्यतः नजरअंदाज कर दिया जाता है, जिसको जोड़ दिया जाता है, जिससे सही परिणाम प्राप्त होता है। और यदि नहीं, तो 1 नहीं जोड़ा जाता है और परिणाम उत्तर के मूलांक पूरक से कम होता है, या घटा हुआ मूलांक पूरक होता है, जिसे प्राप्त करने के लिए जोड़ की आवश्यकता नहीं होती है। इस पद्धति का उपयोग उन कंप्यूटरों द्वारा किया जाता है जो हस्ताक्षरित संख्याओं को दर्शाने के लिए संकेत-और-परिमाण का उपयोग करते हैं।

व्यावहारिक उपयोग
कई यांत्रिक कैलकुलेटरों में गियर को पीछे की ओर चलाने के विकल्प के रूप में पूरक की विधि का उपयोग किया गया था। उदाहरण के लिए:


 * पास्कल के कैलकुलेटर में परिणाम अंकों के दो सेट थे, काला सेट जो सामान्य परिणाम प्रदर्शित करता था और लाल सेट जो नाइन के पूरक को प्रदर्शित करता था। इनमें से सेट को ढकने और दूसरे को प्रदर्शित करने के लिए क्षैतिज स्लैट का उपयोग किया गया था। घटाने के लिए, लाल अंकों को प्रदर्शित किया गया और 0 पर सेट किया गया है। फिर मीनूएंड के नौ के पूरक को अंकित किया गया है। कुछ मशीनों पर इसे पूरक के आंतरिक पहियों का उपयोग करके मिनट में डायल करके किया जा सकता है (अर्थात मिनट के नाइन के पूरक को मानसिक रूप से निर्धारित किए बिना)। पूरक विंडो (लाल सेट) में उस डेटा को प्रदर्शित करने में, ऑपरेटर मीनूएंड के नाइन के पूरक के नाइन के पूरक को देख सकता है, जो कि मीनूएंड है। फिर काले अंकों को प्रदर्शित करने के लिए स्लैट को स्थानांतरित किया गया (जो अब मीनूएंड के नाइन के पूरक को प्रदर्शित करता है) और इसे डायल करके सबट्रेंड को जोड़ा गया था। अंत में, ऑपरेटर को सही उत्तर पढ़ने के लिए स्लैट को फिर से स्थानांतरित करना पड़ा था।
 * कंप्टमीटर में प्रत्येक कुंजी पर सामान्य अंकों के साथ-साथ नौ के पूरक अंक छोटे प्रकार में मुद्रित होते थे। घटाने के लिए, ऑपरेटर से मानसिक रूप से सबट्रेंड से 1 घटाने और छोटे अंकों का उपयोग करके परिणाम अंकित करने की अपेक्षा की गई थी। चूंकि पूरक करने से पहले 1 घटाना बाद में 1 जोड़ने के बराबर है, इसलिए ऑपरेटर प्रभावी रूप से सबट्रेंड के दस के पूरक को जोड़ देगा। ऑपरेटर को उत्तर के सबसे बाएं अंक के अनुरूप घटाव कटऑफ टैब को भी दबाकर रखना होगा। इस टैब ने कैरी को इसके आगे फैलने से रोका, परिणाम से प्रारंभिक 1 को हटाने की कॉम्पटोमीटर की विधि है।
 * कंप्यूटर ने घटाव के लिए पूरक की विधि का उपयोग किया था, और इसे उपयोगकर्ता से छिपाने में कामयाब रहा था। डिवाइस के किनारे अंक इनपुट स्लाइड का उपयोग करके नंबर अंकित किए गए थे। प्रत्येक स्लाइड पर संख्या को गियरिंग तंत्र द्वारा परिणाम काउंटर में जोड़ा गया था, जो घूर्णन सोपानक ड्रम (a.k.a. स्टेप ड्रम) पर कैम लगाता था। उपकरण के शीर्ष पर क्रैंक का उपयोग करके ड्रम को घुमाया जाता था। क्रैंक चालू होने पर प्रत्येक अंक द्वारा सामना किए गए कैम की संख्या उस अंक के मूल्य से निर्धारित की जाती थी। उदाहरण के लिए, यदि स्लाइड को उसकी 6वीं स्थिति पर सेट किया जाता है, जिससे उस स्थिति के अनुरूप ड्रम के चारों ओर 6 कैमों की पंक्ति सामने आएगी। घटाने के लिए, ड्रम को घुमाने से पहले थोड़ा सा स्थानांतरित किया गया, जिससे कैम की अलग पंक्ति स्थिति में आ गई थी। इस वैकल्पिक पंक्ति में अंकों का नौ पूरक सम्मिलित था। इस प्रकार, 6 कैमों की पंक्ति जो जोड़ने की स्थिति में थी, अब 3 कैमों वाली पंक्ति थी। स्थानांतरित ड्रम में अतिरिक्त कैम भी सम्मिलित था जिसने परिणाम में 1 जोड़ा (जैसा कि पूरक की विधि के लिए आवश्यक था)। सदैव उपस्थित दहाई का पूरक अतिप्रवाह 1, जो परिणाम रजिस्टर के सबसे महत्वपूर्ण अंक से परे किया गया था, वास्तव में, खारिज कर दिया गया था।

कंप्यूटर में
हस्ताक्षरित संख्याओं के लिए उपयोग किए जाने वाले प्रतिनिधित्व की परवाह किए बिना, डिजिटल कंप्यूटरों में पूरक की विधि का उपयोग सर्वव्यापी है। चूँकि, आवश्यक सर्किटरी प्रतिनिधित्व पर निर्भर करती है:


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

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

मुद्रा के आधार की पूर्णांक शक्ति तक बढ़ाए गए 1 के एकल मूल्यवर्ग में मुद्रा से खरीदारी के लिए परिवर्तन करने वाले कैशियर के लिए राशि को प्रयुक्त करना सरल है। दशमलव मुद्राओं के लिए जो 10, 100, 1,000, आदि होंगी, उदा. $10.00 का बिल था

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

यह भी देखें

 * दो का पूरक - बाइनरी कंप्यूटर के लिए विशेष स्थिति