पूरक की विधि

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

दशमलव प्रतिनिधित्व में दी गई संख्या का नौ' पूरक प्रत्येक अंक को उस अंक को घटाकर नौ से प्रतिस्थापित करके बनाया जाता है। एक दशमलव संख्या 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 [x, मीनूएंड] - 218 [वाई, सबट्रेंड]

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

126 [x का नौ पूरक = 999 - x] + 218 [वाई, सबट्रेंड] —————  344 [999 - एक्स + वाई]

अब परिणाम के नौ पूरक की गणना करें

344 [परिणाम] 655 [344 का नौ पूरक = 999 - (999 - x + y) = x - y, सही उत्तर]

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

अगला, का योग $$x$$ और नौ का पूरक $$y$$ लिया जाता है:

873 [x] + 781 [y का नौ पूरक = 999 - y] ————— 1654 [999 + 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$$ है

876589 [x का नौवां पूरक] + 123401 [वाई] ————————  999990 999990 का नाइन पूरक 000009 है। अग्रणी शून्य को हटाने से 9 वांछित परिणाम मिलता है।

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

48032 [x] - 391 [वाई]

पुनः लिखा जा सकता है

48032 [x] - 00391 [y अग्रणी शून्य के साथ]

00391 को इसके नौ पूरक के साथ प्रतिस्थापित करने और 1 जोड़ने से योग उत्पन्न होता है:

48032 [x] +99608 [y का नौ पूरक] +1 ——————— 147641

अग्रणी 1 को हटाने पर सही उत्तर मिलता है: 47641।

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

0110 0100 [x, दशमलव 100 के बराबर है] - 0001 0110 [y, दशमलव 22 के बराबर है]

योग बन जाता है:

0110 0100 [x] + 1110 1001 [y का पूरक = 1111 1111 - y] + 1 [दोनों का पूरक प्राप्त करने के लिए = 1 0000 0000 - y] ——————————— 10100 1110 [x + 1 0000 0000 - y]

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

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

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

185 [x] - 329 [वाई]

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

185 [x] + 670 [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 है। इस जोड़ के परिणाम का उपयोग तब किया जाता है जब यह स्पष्ट हो कि अंतर सकारात्मक होगा, अन्यथा जोड़ के परिणाम के दहाई के पूरक का उपयोग किया जाता है। इसे नकारात्मक के रूप में चिह्नित किया गया। यही तकनीक जोड़ने वाली मशीन पर घटाने के लिए भी काम करती है।

यह भी देखें

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