बाइनरी डिवीजन प्रॉब्लम को लॉन्ग डिवीजन का इस्तेमाल करके सॉल्व किया जा सकता है, जो खुद को इस प्रोसेस को सिखाने की या एक सिम्पल प्रोग्राम लिखना सीखने के लिए जरूरी मेथड होती है। वैकल्पिक रूप से, रिपीटेड सबट्रेक्शन की कॉम्प्लिमेंट मेथड भी एक ऐसी अप्रोच प्रोवाइड करती है, जिसके बारे में शायद आपको ज्यादा जानकारी नहीं, हालांकि इसे कॉमनली प्रोग्रामिंग में नहीं यूज किया जाता है। [१] X रिसर्च सोर्स मशीन लेंग्वेज में आमतौर पर ज्यादा एफ़िशिएन्सी के लिए एक अल्गोरिदम यूज की जाती है, लेकिन इन्हें यहाँ पर डिस्क्राइब नहीं किया गया है। [२] X रिसर्च सोर्स
चरण
-
डेसिमल लॉन्ग डिवीजन को रिव्यू करें: आपके लिए ओर्डिनरी डेसिमल (बेस टेन) नंबर्स के साथ में लॉन्ग डिवीजन किए काफी टाइम हो गया है, प्रॉब्लम 172 ÷ 4 का इस्तेमाल करके बेसिक्स को रिव्यू करें। नहीं तो, इसी प्रोसेस को बाइनरी में सीखने के लिए अगले स्टेप तक स्किप करें।
- डिवाइडेंड (dividend) को डिवाइजर (divisor) के द्वारा डिवाइड किया जाता है और आन्सर में कोशेंट (quotient) मिलता है।
- डिवाइजर को डिवाइडेंड में मौजूद पहली डिजिट से कंपेयर करें: अगर डिवाइजर एक बड़ा नंबर है, तो डिवाइडेंड में तब तक डिजिट्स एड करते रहें, जब तक कि डिवाइजर सबसे छोटे नंबर पर न आ जाए। (जैसे, अगर 172 ÷ 4 कैलकुलेट कर रहे हैं, तो हम 4 और 1 को कंपेयर करेंगे, नोट करें कि 4 > 1, और फिर इसकी बजाय 4 को 17 से कंपेयर करें।)
- आपके द्वारा कम्पेरिजन के लिए इस्तेमाल किए जाने वाली लास्ट डिवाइडेंड डिजिट के ऊपर कोशेंट की पहली डिजिट को लिखें। 4 और 17 को कंपेयर करते हुए, हम देखते हैं कि 4 नंबर 17 में चार बार जाता है, इसलिए हम 4 को हमारे कोशेंट की पहली डिजिट की तरह 7 के ऊपर लिखेंगे।
- मल्टीप्लाय करें और रिमाइन्डर को सबट्रेक्ट करें: कोशेंट डिजिट को डिवाइजर के साथ मल्टीप्लाय करें, इस मामले में, 4 x 4 = 16 होगा। 16 को 17 के नीचे लिखें, फिर रिमाइन्डर 1 पाने के लिए 17 - 16 को सबट्रेक्ट करें।
- रिपीट करें: एक बार फिर, हम डिवाइजर 4 को नैक्सट डिजिट 1 के साथ में कंपेयर करते हैं, ध्यान रखें कि 4 > 1, और डिवाइडेंड की नैक्सट डिजिट को नीचे लाकर 4 को 12 के साथ में कंपेयर करें। 4 बिना किसी रिमाइन्डर के तीन बार 12 में जाता है, इसलिए हम कोशेंट की अगली डिजिट के रूप में 3 को लिखेंगे। इसका आन्सर 43 मिलेगा।
-
बाइनरी लॉन्ग डिवीजन प्रॉब्लम को सेट करें: इस बार उदाहरण 10101 ÷ 11 यूज करते हैं। इसे एक लॉन्ग डिवीजन प्रॉब्लम की तरह लिखें, जिसमें 10101 एक डिवाइडेंड की तरह और 11 डिवाइजर की तरह होगा। ऊपर कोशेंट को लिखने के लिए स्पेस छोड़ें और नीचे अपने कैलकुलेशन को लिखने के लिए जगह रखें।
-
डिवाइजर को डिवाइडेंड की पहली डिजिट के साथ में कंपेयर करें: ये ठीक एक लॉन्ग डिवीजन प्रॉब्लम की तरह ही काम करता है, लेकिन ये असल में बाइनरी में थोड़ा ज्यादा आसान होता है। आप या तो नंबर को डिवाइजर (0) से डिवाइड कर सकते हैं या डिवाइजर एक बार में जा सकता है (1):
- 11 > 1, इसलिए 11 नंबर 1 में नहीं जा सकता है। 0 को कोशेंट की पहली डिजिट की तरह (डिवाइडेंड की पहली डिजिट के ऊपर) लिखें।
-
इसी तरह से अगली डिजिट लें और जब तक कि आपको 1 नहीं मिल जाता, तब तक रिपीट करें: यहाँ पर हमारे उदाहरण के लिए स्ग्ले स्टेप्स दिए गए हें:
- डिवाइडेंड की नैक्सट डिजिट को नीचे लेकर आएँ। 11 > 10 है। कोशेंट में 0 लिखें।
- अगली डिजिट को नीचे लाएँ। 11 < 101 है। कोशेंट में 1 लिखें।
-
रिमाइन्डर की तलाश करें: ठीक डेसिमल लॉन्ग डिवीजन की तरह, हम अभी मिली डिजिट (1) को डिवाइजर (11) के साथ में मल्टीप्लाय करते हैं और रिजल्ट को हमारे द्वारा अभी कैलकुलेट की हुई डिजिट के साथ में अलाइन करके हमारे डिवाइडेंड के नीचे लिखेंगे। बाइनरी में, हम इसे शॉर्टकट कर सकते हैं, क्योंकि 1 x डिवाइजर हमेशा डिवाइजर के ही बराबर होता है:
- डिवाइडेंड के नीचे डिवाइजर को लिखें। यहाँ, हम डिवाइडेंड की पहली तीन डिजिट के नीचे अलाइन करके 11 लिखेंगे।
- रिमाइन्डर, 10 के लिए 101 - 11 कैलकुलेट करें। अगर आपको एक रिव्यू की जरूरत है, तो इसके लिए बाइनरी नंबर्स को सबट्रेक्ट करें गाइड देखें।
-
प्रॉब्लम के खत्म होने तक रिपीट करें: डिवाइजर की अगली डिजिट को नीचे रिमाइन्डर तक लाकर 100 बनाएँ। चूंकि 11 < 100 है, 1 को कोशेंट की अगली डिजिट के रूप में लिखें। प्रॉब्लम को पहले की तरह ही सॉल्व करना जारी रखें:
- 11 को 100 के नीचे लिखें और सबट्रेक्ट करके 1 पाएँ।
- डिवाइडेंड की फ़ाइनल डिजिट को नीचे लाकर 11 बनाएँ।
- 11 = 11, इसलिए 1 को कोशेंट की फ़ाइनल डिजिट के रूप में (आन्सर को) लिखें।
- इसमें कोई रिमाइन्डर नहीं है, इसलिए प्रॉब्लम पूरी हो चुकी है। आन्सर 00111 , या 111 होगा।
-
अगर जरूरत हो, तो एक रेडिक्स पॉइंट एड करें: कभी-कभी, रिजल्ट में इंटीजर नहीं मिलता है। अगर फ़ाइनल डिजिट यूज करने के बाद भी आपके पास में एक रिमाइन्डर है, तो डिवाइडेंड में एक ".0" और आपके कोशेंट में एक "." एड करें, ताकि आप एक और डिजिट को नीचे ले आ सकें और आगे बढ़ सकें। जब तक कि आप आपकी मनचाही स्पेसिफिसिटी तक नहीं पहुँच जाते, तब तक इसे रिपीट करें, फिर आन्सर को राउंड करें। पेपर पर, आप आखिरी के 0 को हटाकर राउंड डाउन कर सकते हैं या अगर लास्ट डिजिट 1 है, तो उसे ड्रॉप कर दें और नई लास्ट डिजिट में 1 एड करें। प्रोग्रामिंग में, बाइनरी और डेसिमल नंबर्स के बीच में कन्वर्ट करते समय राउंड करने के लिए किसी एक स्टैंडर्ड अल्गोरिदम को फॉलो करें। [३] X रिसर्च सोर्स
- बाइनरी डिवीजन प्रॉब्लम अक्सर फ्रेक्शनल पोर्शन के साथ में खत्म होते हैं, ज़्यादातर बार ये डेसिमल नोटेशन में सामने आते हैं। [४] X रिसर्च सोर्स
- इसे एक जनरल टर्म "रेडिक्स पॉइंट (radix point)" की तरह रेफर किया जाता है, जो क्योंकि "डेसिमल पॉइंट" को केवल डेसिमल सिस्टम में ही अप्लाई किया जाता है, इसलिए बेस में अप्लाई होती है। [५] X रिसर्च सोर्स
विधि 2
विधि 2 का 2:
कॉम्प्लिमेंट मेथड का इस्तेमाल करना (Using the Complement Method)
-
बेसिक कान्सैप्ट को समझें: डिवीजन प्रॉब्लम – किसी भी बेस में – को सॉल्व करने का एक तरीका ये है कि आप नेगेटिव नंबर पाने के पहले, नंबर ऑफ टाइम्स को टैली करके, डिवाइजर को डिवाइडेंड से, फिर रिमाइन्डर से सबट्रेक्ट करते रहें। यहाँ पर प्रॉब्लम 26 ÷ 7 को सॉल्व करते हुए, बेस टेन में एक उदाहरण दिया है:
- 26 - 7 = 19 (सबट्रेक्ट किया गया 1 बार)
- 19 - 7 = 12 ( 2 )
- 12 - 7 = 5 ( 3 )
- 5 - 7 = -2 आया। नेगेटिव नंबर, इसलिए बैकअप। आन्सर रिमाइन्डर 5 के साथ में 3 होता है। नोट करें कि इस तरीके से आन्सर का नॉन-इंटीजर पोर्शन कैलकुलेट नहीं होता है।
-
2कॉम्प्लिमेंट से सबट्रेक्ट करना सीखें: भले ही आप ऊपर दिए तरीके को बाइनरी में आसानी से यूज कर सकते हैं, हम चाहें तो एक और भी ज्यादा एफ़िशिएंट मेथड से भी सबट्रेक्ट कर सकते हैं, जो बाइनरी नंबर्स को डिवाइड करने के लिए कंप्यूटर प्रोग्रामिंग करते समय टाइम सेव करता है। ये बाइनरी में कॉम्प्लिमेंट मेथड से सबट्रेक्ट करना है। यहाँ पर 111 - 011 (सुनिश्चित करें कि दोनों ही नंबर्स एक बराबर लेंथ के हैं) कैलकुलेट करने के बेसिक्स दिए गए हैं:
- हर एक डिजिट को 1 से सबट्रेक्ट करके सेकंड टर्म के वन्स कॉम्प्लिमेंट की तलाश करें। ऐसा बाइनरी में हर 1 को 0 में और हर 0 को 1 में बदलकर आसानी से किया जाता है। [६] X रिसर्च सोर्स [७] X रिसर्च सोर्स हमारे उदाहरण में 011 बन जाता है 100
- रिजल्ट में एक एड करें: 100 + 1 = 101 होगा। इसे टूज कॉम्प्लिमेंट (twos complement) बोला जाता है और ये आपको सबट्रेक्शन को एक एडिशन प्रॉब्लम की तरह परफ़ोर्म करने देता है। [८] X रिसर्च सोर्स असल में, प्रोसेस के फिनिश होने पर हमने दो पॉज़िटिव नंबर को सबट्रेक्ट करने की बजाय, एक नेगेटिव नंबर को एड किया है।
- फर्स्ट टर्म में रिजल्ट एड करें। एडिशन प्रॉब्लम को लिखें और 111 + 101 = 1100 सॉल्व करें।
- कैरी डिजिट को हटा दें। आपके आन्सर की फर्स्ट डिजिट को डिस्कार्ड करके फ़ाइनल रिजल्ट पाएँ। 1100 → 100 पाएँ।
-
3ऊपर के दो कान्सैप्ट को कम्बाइन करें: अब आपको डिवीजन प्रॉब्लम को सॉल्व करने की सबट्रेक्शन मेथड और सबट्रेक्शन प्रॉब्लम को सॉल्व करने की टूज कॉम्प्लिमेंट मेथड मालूम है। आप नीचे दिए स्टेप्स का इस्तेमाल करके इसे डिवीजन प्रॉब्लम को सॉल्व करने के लिए इसे कम्बाइन कर सकते हैं। [९] X रिसर्च सोर्स अगर आपको पसंद आए, तो आप आगे बढ़ने के पहले खुद भी इसे फिगर करके देख सकते हैं।
-
टूज कॉम्प्लिमेंट को एड करके, डिवाइजर को डिवाइडेंड से सबट्रेक्ट करें: प्रॉब्लम 100011 ÷ 000101 को सॉल्व करते हैं। पहला स्टेप टूज कॉम्प्लिमेंट मेथड का यूज करके उसे एडिशन प्रॉब्लम में बदलने के लिए 100011 - 000101 सॉल्व करना है:
- टूज कॉम्प्लिमेंट 000101 = 111010 + 1 = 111011
- 100011 + 111011 = 1011110
- कैरी बिट → 011110 डिस्कार्ड कर दें
-
कोशेंट में एक एड करें: कंप्यूटर प्रोग्राम में, ये वो पॉइंट है, जहां आप कोशेंट को एक से इंक्रीमेंट करते हैं। पेपर पर, कोने में कहीं पर एक नोट बनाएँ, जहां पर इसे आप किसी दूसरे काम के साथ में मिक्स करके कनफ्यूज न हो पाएँ। हमने सफलतापूर्वक एक बार सबट्रेक्ट कर लिया है, इसलिए अभी तक का कोशेंट 1 होगा।
-
डिवाइजर को रिमाइन्डर से सबट्रेक्ट करके रिपीट करें: हमारे लास्ट कैलकुलेशन का रिजल्ट के एक होने के बाद बचा रिमाइन्डर होता है। हर बार टूज कॉम्प्लिमेंट को एड करना और कैरी बिट को डिस्कार्ड करना जारी रखें। जब तक कि आपको एक ऐसा रिमाइन्डर नहीं मिल जाता, जो आपके डिवाइजर के बराबर या उससे छोटा हो, तब तक हर बार कोशेंट में एक एड करें: [१०] X रिसर्च सोर्स
- 011110 + 111011 = 1011001 → 011001 (कोशेंट 1+1=10 )
- 011001 + 111011 = 1010100 → 010100 (कोशेंट 10+1=11 )
- 010100 + 111011 = 1001111 → 001111 ( 11+1=100 )
- 001111 + 111011 = 1001010 → 001010 ( 100+1=101 )
- 001010 + 111011 = 10000101 → 0000101 ( 101+1=110 )
- 0000101 + 111011 = 1000000 → 000000 ( 110+1=111 )
- 0 नंबर 101 से छोटा है, इसलिए हम यहाँ पर रुकेंगे। कोशेंट 111 डिवीजन प्रॉब्लम के लिए आन्सर होगा। रिमाइन्डर आपके सबट्रेक्शन प्रॉब्लम का फ़ाइनल रिजल्ट रहेगा, इस मामले में 0 (कोई रिमाइन्डर नहीं है) होगा।
सलाह
- केवल आन्सर के पॉज़िटिव या नेगेटिव होने का निर्धारण करने के दौरान के अलावा, कैलकुलेट करने के पहले साइन बाइनरी नंबर में साइन डिजिट को इग्नोर करें।
- अगर आपके नंबर में अलग-अलग डिजिट हुई, तो सबट्रेक्शन की टूज कॉम्प्लिमेंट मेथड काम नहीं करेगी। इसे फिक्स करने के लिए छोटे नंबर में शुरुआती ज़ीरो एड करें।
- बाइनरी मैथ को मशीन इन्सट्रक्शन सेट में इस्तेमाल करने के पहले स्टैक को इंक्रीमेंट, डिक्रीमेंट या पॉप करने के इन्सट्रक्शन को पहले ही ध्यान में रखना चाहिए।
रेफरेन्स
- ↑ http://www.eetimes.com/author.asp?section_id=14&doc_id=1282912
- ↑ http://electronics.stackexchange.com/questions/22410/how-does-division-occur-in-our-computers
- ↑ http://www.cs.rit.edu/~mtf/student-resources/20131_tilleti_mscourse.pdf
- ↑ http://www.exploringbinary.com/binary-division/
- ↑ http://mathforum.org/library/drmath/view/56091.html
- ↑ http://academic.evergreen.edu/projects/biophysics/technotes/program/2s_comp.htm
- ↑ http://courses.cs.vt.edu/~csonline/NumberSystems/Lessons/OnesComplement/index.html
- ↑ http://www.cs.cornell.edu/~tomf/notes/cps104/twoscomp.html
- ↑ http://academic.evergreen.edu/projects/biophysics/technotes/program/2s_comp.htm