केवल जोड़ना, घटाना, और बिट्सफिफ्टिंग का उपयोग करके, मैं किसी दिए गए नंबर से एक पूर्णांक को कैसे गुणा कर सकता हूं?बिट्सफ़िफ्ट किसी भी संख्या से गुणा करने के लिए
उदाहरण के लिए, मैं द्वारा 17.
मुझे पता है कि स्थानांतरण बाईं 2 की एक बहु से गुणा करने और सही स्थानांतरण 2 के एक शक्ति से विभाजित किया जाता है एक पूर्णांक गुणा करने के लिए चाहते हैं, लेकिन मैं कैसे करने के लिए पता नहीं है सामान्यीकृत करें।
नकारात्मक संख्याओं के बारे में क्या? दो के पूरक में कनवर्ट करें और एक ही प्रक्रिया करें?
(संपादित करें: ठीक है, मैं यह मिल गया, कोई बात नहीं आप दो के पूरक में बदल जाएंगे और संख्या दाईं से बाईं ओर के अधिकार के बजाय बाईं से के अनुसार तो आप स्थानांतरण करते।।)
अब मुश्किल हिस्सा आता है। हम केवल 3 ऑपरेटरों का उपयोग कर सकते हैं।
उदाहरण के लिए, 60 से गुणा मैं इस का उपयोग करके पूरा कर सकते हैं:
(x << 5) + (x << 4) + (x << 3) + (x << 2)
कहाँ x
संख्या मैं गुणा कर रहा हूँ। लेकिन यह 7 ऑपरेटर हैं - मैं केवल 3 का उपयोग करने के लिए इसे कैसे जोड़ सकता हूं?
सामान्य गुणा में बदलाव के 3 कार्यों में नहीं किया जा सकता, जोड़ें/घटा देती है ... लेकिन दोनों 17 और 60 3 कार्यों में किया जा सकता है । (संकेत: 60 के लिए एक घटाव आज़माएं) संपादित करें: मैंने नहीं देखा कि यह पहले से ही उत्तर दिया गया था। – Mysticial
उन्होंने समस्याओं को बनाया ताकि आसानी से 3 ऑपरेटर हाहा में काम किया जा सके। पूरी सहायताके लिए शुक्रिया। – Adam