मैं एक सवाल '+' या के उपयोग के बिना दो पूर्णांकों जोड़ने के लिए अजगर कोड लिखने के बारे में है जो हल करने के लिए कोशिश कर रहा हूँ दो पूर्णांकों जोड़ने - ऑपरेटरों ''। मैं निम्नलिखित कोड है जो दो सकारात्मक संख्या के लिए पूरी तरह से काम करता है:अनंत लूप जबकि अजगर 3 में बिटवाइज़ संचालन का उपयोग कर
def getSum(self, a, b):
while (a & b):
x = a & b
y = a^b
a = x << 1
b = y
return a^b
कोड का यह टुकड़ा अगर इनपुट दो धनात्मक पूर्णांक या दो नकारात्मक पूर्णांक है के लिए पूरी तरह से काम करता है, लेकिन यह विफल रहता है जब एक नंबर सकारात्मक है और दूसरा नकारात्मक है। यह अनंत लूप में चला जाता है। ऐसा कोई विचार क्यों हो रहा है कि यह क्यों हो रहा है?
'a' और 'b' के लिए आप किस परीक्षण मान का उपयोग कर रहे हैं? लूप के दौरान 'ए' और' बी' के मानों को प्रिंट या देखें - क्या वे दोहराने वाले पैटर्न में आते हैं? साथ ही, क्या इससे कोई फर्क पड़ता है कि 'a' या' b' नकारात्मक ऑपरेंड है या नहीं? – cxw