में बिटवाइड संतृप्त परिवर्धन मैं एक असाइनमेंट पर काम कर रहा हूं और मैं यह समझ नहीं सकता कि इसे कैसे कार्यान्वित किया जाए। मुझे एक फ़ंक्शन सैड (int x, int y) बनाना है जो संख्याओं को एक साथ जोड़ता है जब तक कि यह बहती न हो (फिर केवल अधिकतम संभव int वापस लौटाएं)। मैं कास्टिंग और सशर्त बयान शामिल कुछ समाधानों के साथ आने में सक्षम हूं, लेकिन समाधान में उनको अनुमति नहीं है। केवल ऑपरेटर ~!^+ < < >> & और |सी (एचडब्ल्यू)
उत्तर
हस्ताक्षरित संख्याओं के अतिरिक्त, यदि आप एक ही संकेत के दो नंबर जोड़ते हैं और एक अलग संकेत के साथ परिणाम प्राप्त करते हैं तो ओवरफ़्लो हुआ है। शामिल श्रेणियों की वजह से, दो अलग-अलग संकेत जोड़ते समय अतिप्रवाह उत्पन्न करना असंभव है।
तो, आप क्या कर सकते हैं - केवल साइन बिट देख रहे हैं (दो पूरक में सबसे महत्वपूर्ण) - अनन्य का उपयोग करें या यह सुनिश्चित करने के लिए कि क्या दो मूल संख्याएं साइन में भिन्न हैं, पूरक है ताकि आपको मिल सके '0' अगर वे अलग थे, तो इसके लिए '1'।
फिर आप इनपुट में से एक बनाम अनन्य या परिणाम का उपयोग कर सकते हैं। अगर वे अलग थे, तो वे '0' देंगे, '1' अगर वे अलग थे।
और दोनों दो परिणाम एक साथ '1' प्राप्त करने के लिए मिलते हैं यदि दो इनपुट समान थे लेकिन नतीजा अलग था, '0' अन्यथा।
फिर आप उस मूल्य के साथ एक पूर्ण पूर्णांक भरने के लिए शिफ्ट और ओआरएस के संयोजन का उपयोग कर सकते हैं। मान लीजिए कि आप 32 बिट पूर्णांक में हैं, उच्चतम मूल्य सकारात्मक पूर्णांक प्राप्त करने के लिए बस सबसे कम 31 बिट सेट करें। इसके बाद आप इनपुट के किसी भी संकेत बिट पर शिफ्ट और ओआरएस के समान सेट कर सकते हैं। विशेष या परिणाम। यदि इनपुट नकारात्मक थे तो इससे सबसे कम मूल्य पूर्णांक दिया जाएगा।
संपादित करें: ओह, और ओवरफ्लो के विस्तार के बारे में थोड़ा सा मूल्य का उपयोग करें, int को भरने के लिए विस्तारित किया गया है, यह देखने के लिए कि क्या लौटाया जा सकता है और इसके परिणामस्वरूप आप वापस आ जाएंगे अगर ओवरफ्लो, पूरक और इंकिंग यह सामान्य योजक परिणाम के साथ, फिर दोनों को एक साथ (या जोड़) जोड़ना।
प्रेस्टो: सभी बाइनरी तर्क, कोई सशर्त नहीं। मुझे लगता है, क्योंकि यह होमवर्क है, कि आप वास्तविक कोड नहीं चाहते हैं?
मैंने यह कोड किया है; सुनिश्चित नहीं है कि होमवर्क प्रश्न पर पूर्ण स्रोत उत्तर जोड़ने के लिए उचित है या नहीं। क्या स्पष्टीकरण मैंने पर्याप्त रूप से स्पष्ट किया है? – Tommy
शायद नहीं, लेकिन निर्देशों में लंबाई को इंगित करें जो आपके समाधान को लेता है (एमआईपीएस निर्देश सेट मानते हैं)। हम कोड-गोल्फ खेल सकते हैं ;-) – smci
होमवर्क प्रश्न पूछना ठीक है, लेकिन आपको उन्हें होमवर्क के रूप में टैग करना चाहिए। –
इसे आज़माएं और पोस्ट करें जो आप साथ आते हैं। (जैसा कि ब्रायन ने कहा था, एचडब्ल्यू प्रश्न ठीक हैं, लेकिन यह बेहतर है कि इसे अपना सर्वश्रेष्ठ शॉट दें और अपना कोड पोस्ट करें। एसओ में आपका स्वागत है!) – John
'if'/'else' के बिना, यह हैकी होने वाला है .. –