Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

C . में दो पूर्णांकों का बिटवाइज़ पुनरावर्ती योग


इस समस्या में हमें दो अंक दिए गए हैं। हमारा काम दो पूर्णांकों के बिटवाइज़ पुनरावर्ती जोड़ के लिए एक 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’

  1. जावास्क्रिप्ट में दो नंबर लेकर पूर्णांकों की तुलना करना

    हमें एक जावास्क्रिप्ट फ़ंक्शन लिखना है जो दो नंबर लेता है, मान लीजिए num1 और num2। अगर num1, num2 से बड़ा है, तो हमारा फंक्शन और बड़ा होना चाहिए। अगर num2 num1 से बड़ा है, तो हमारा फंक्शन छोटा होना चाहिए। अन्यथा, फ़ंक्शन बराबर लौटना चाहिए। उदाहरण निम्नलिखित कोड है - const compareIntegers

  1. जावास्क्रिप्ट में पूर्णांकों की सूची में दो नंबरों का अधिकतम उत्पाद

    हमें एक जावास्क्रिप्ट फ़ंक्शन लिखना है जो पहले और एकमात्र तर्क के रूप में पूर्णांकों की एक सरणी लेता है। फ़ंक्शन को अधिकतम उत्पाद खोजना चाहिए जिसे सरणी के किन्हीं दो तत्वों को गुणा करके प्राप्त किया जा सकता है। हमारे लिए शर्त यह है कि हमें इसे रैखिक समय और स्थिर स्थान में करना होगा। उदाहरण के लिए

  1. बिटवाइज़ ऑपरेशंस का उपयोग करके 2 से जोड़ और गुणा के लिए सी प्रोग्राम।

    बिटवाइज़ ऑपरेटर्स बिट्स पर काम करते हैं (यानी ऑपरेंड के बाइनरी वैल्यू पर) संचालक विवरण & बिटवाइज और | बिटवाइज या ^ बिटवाइज XOR बाएं शिफ्ट राइट शिफ्ट - एक का पूरक Bitwise AND a ख ए और बी 0 0 0 0 1 0 1 0 0 1 1 1 Bitwise OR a ख ए | बी 0 0 0 0 1 1 1 0 1 1 1 1 Bitwise