इस समस्या में हमें दो अंक दिए गए हैं। हमारा काम दो पूर्णांकों के बिटवाइज़ पुनरावर्ती जोड़ के लिए एक C प्रोग्राम बनाना है।
बिटवाइज़ ऑपरेशंस का उपयोग करके योग खोजने का तर्क वैसा ही है जैसा हम प्रीस्कूल में करते थे। योग खोजने के लिए, हम संख्या के प्रत्येक अंक को जोड़ते थे और यदि कोई कैरी है, तो हम इसे अगले अंक में जोड़ देते हैं।
हम एक समान काम करेंगे, एक्सओआर ऑपरेटर का उपयोग करके योग का पता लगाएं और एंड ऑपरेशन का उपयोग करके कैरी की जांच करें। यदि कोई कैरी है तो हम उसे वापस नंबर में जोड़ देंगे अन्यथा नहीं।
यह एक आधा-योजक . का तर्क है जिसे आपने डिजिटल इलेक्ट्रॉनिक्स में सीखा होगा। यहां देखें…
अब, योग की गणना a^b यानी एक XOR b का उपयोग करके की जाती है और हमें एक अतिरिक्त कैरी की जांच करने की आवश्यकता होती है जिसे प्रचारित करने की आवश्यकता होती है यदि दोनों का पहला बिट सेट हो या तो। और हमें संख्या में एक अतिरिक्त सेट बिट जोड़ने की आवश्यकता है।
तो, थोड़ा एल्गोरिदम होगा
चरण 1 − a और b यानी a^b का XOR ज्ञात करें और इसे परिणाम चर में संग्रहीत करें।
चरण 2 - जांचें कि क्या {(a &b) <<1} ==0
चरण 2.1 - यदि यह 0 के बराबर है, तो परिणाम प्रिंट करें, यह अंतिम परिणाम है।
चरण 2.2 - अगर यह 0 के बराबर नहीं है, तो चरण 1 पर जाएं, a ={(a &b) <<1} और b =परिणाम के साथ।
उदाहरण
एल्गोरिथम की कार्यप्रणाली को स्पष्ट करने के लिए कार्यक्रम -
#include <stdio.h> int addNumbers(int a, int b) { int carry = (a & b) << 1; int result = a^b; if (carry == 0) return result; else addNumbers(carry, result); } int main(){ int a = 54, b = 897; printf("The sum of %d and %d using bitwise adding is %d", a, b, addNumbers(a, b)); return 0; }
आउटपुट
The sum of 54 and 897 using bitwise adding is 951’