हमें एक जावास्क्रिप्ट फ़ंक्शन ऐड () लिखना है जो दो नंबर m और n लेता है। चार बुनियादी अंकगणितीय परिचालनों का उपयोग किए बिना फ़ंक्शन को इनपुट के रूप में ली गई दो संख्याओं को जोड़ना चाहिए और योग वापस करना चाहिए।
उदाहरण
इसके लिए कोड होगा -
const m = 67, n = 33; const add = (x, y) => { while(y !== 0){ let carry = x & y; x = x ^ y; y = carry << 1; }; return x; }; console.log(add(m, n));
स्पष्टीकरण
दो बिट्स के XOR (^) को निष्पादित करके दो बिट्स का योग प्राप्त किया जा सकता है। और कैरी बिट को दो बिट्स के AND (&) का प्रदर्शन करके प्राप्त किया जा सकता है।
हमने यहां हाफ एडर लॉजिक के एक विस्तारित संस्करण का उपयोग किया है जिसका उपयोग दो पूर्णांकों को जोड़ने के लिए 2 सिंगल बिट्स को जोड़ने के लिए किया जा सकता है। यदि x और y में एक ही स्थिति (स्थानों) पर बिट्स सेट नहीं हैं, तो x और y का बिटवाइज़ XOR (^) x और y का योग देता है।
सामान्य सेट बिट्स को भी शामिल करने के लिए, बिटवाइज़ AND (&) का उपयोग किया जाता है। बिटवाइज़ और x और y का सभी कैरी बिट्स देता है। हमने (x &y) <<1 की गणना की है और आवश्यक परिणाम प्राप्त करने के लिए इसे x ^ y में जोड़ा है।
आउटपुट
और कंसोल में आउटपुट होगा -
100