निर्भर करता है। क्या हम गुणा के तार्किक संचालन के बारे में बात कर रहे हैं, या यह वास्तव में हार्डवेयर में कैसे किया जाता है?
उदाहरण के लिए, आप एक हेक्साडेसिमल (या ऑक्टल, या किसी अन्य आधार दो गुणक) स्ट्रिंग को "गुणन के बिना" पूर्णांक में बदल सकते हैं। आप चरित्र द्वारा चरित्र जा सकते हैं और ओरिंज ( |
) और बिटशिफ्टिंग ( <<
) रख सकते हैं । यह *
ऑपरेटर का उपयोग करने से बचता है ।
दशमलव तार के साथ ऐसा ही करना मुश्किल है, लेकिन हमारे पास अभी भी सरल जोड़ है। आप एक ही काम करने के अलावा छोरों का उपयोग कर सकते हैं। करने के लिए बहुत आसान है। या आप अपनी खुद की "गुणन तालिका" बना सकते हैं - उम्मीद है कि आपने स्कूल में संख्याओं को गुणा करने का तरीका सीखा; आप एक कंप्यूटर के साथ एक ही काम कर सकते हैं। और हां, अगर आप एक दशमलव कंप्यूटर (बाइनरी के बजाय) पर हैं, तो आप "बिटशिफ्ट" कर सकते हैं, जैसे पहले के हेक्साडेसिमल स्ट्रिंग के साथ। बाइनरी कंप्यूटर के साथ भी, आप बिटशिफ्ट्स की एक श्रृंखला का उपयोग कर सकते हैं - (a << 1) + (a << 3)
जैसा कि है a * 2 + a * 8 == a * 10
। नकारात्मक संख्या के बारे में सावधान। इसे दिलचस्प बनाने के लिए आप बहुत सारे ट्रिक कर सकते हैं।
बेशक, ये दोनों ही भेस में गुणा हैं। ऐसा इसलिए है क्योंकि स्थितिगत संख्यात्मक प्रणाली स्वाभाविक रूप से गुणक हैं । इस तरह से यह विशेष रूप से संख्यात्मक प्रतिनिधित्व काम करता है। आपके पास सरलीकरण हो सकते हैं जो इस तथ्य को छिपाते हैं (जैसे बाइनरी नंबर की केवल आवश्यकता होती है 0
और 1
इसलिए, गुणा करने के बजाय, आपके पास एक साधारण शर्त हो सकती है - बेशक, आप जो कर रहे हैं वह वास्तव में अभी भी गुणा है, सिर्फ दो संभावित इनपुट और दो संभव के साथ आउटपुट), लेकिन यह हमेशा वहाँ है, गुप्त। <<
वैसे ही है * 2
, भले ही ऑपरेशन करने वाला हार्डवेयर सरल और / या तेज हो।
पूरी तरह से गुणन के साथ दूर करने के लिए, आपको एक स्थिति प्रणाली का उपयोग करने से बचने की आवश्यकता है। उदाहरण के लिए, रोमन अंकों additive (ध्यान दें कि वास्तविक रोमन अंकों compactification नियम हम आज का उपयोग नहीं किया - चार हो जाएगा IIII
, नहीं IV
, और यह चौदह की तरह किसी भी रूप में लिखा जा सकता है XIIII
, IIIIX
, IIXII
, VVIIII
आदि)। इस तरह के स्ट्रिंग को पूर्णांक में बदलना बहुत आसान हो जाता है - बस चरित्र द्वारा चरित्र जाओ, और जोड़ते रहो। यदि चरित्र है X
, तो दस जोड़ें। यदि V
, पाँच जोड़ें। अगरI
, एक जोड़ें। मुझे आशा है कि आप देख सकते हैं कि रोमन अंक इतने लंबे समय तक लोकप्रिय क्यों रहे; जब आप कई गुणा और विभाजन करने की आवश्यकता होती है, तो स्थितिज संख्यात्मक प्रणाली अद्भुत होती है। यदि आप मुख्य रूप से जोड़ और घटाव के साथ काम कर रहे हैं, तो रोमन अंक बहुत अच्छा काम करते हैं, और बहुत कम स्कूली शिक्षा की आवश्यकता होती है (और एक स्थिति कैलकुलेटर की तुलना में एबैकस बनाना और उपयोग करना बहुत आसान है!)।
इस तरह के असाइनमेंट के साथ, साक्षात्कारकर्ता वास्तव में क्या उम्मीद करता है, इसके बारे में बहुत हिट और याद आती है। शायद वे सिर्फ आपकी सोची हुई प्रक्रियाओं को देखना चाहते हैं। क्या आप तकनीकीताओं को गले लगाते हैं (क्या वास्तव में गुणा <<
नहीं है)? क्या आप संख्या सिद्धांत और कंप्यूटर विज्ञान जानते हैं? क्या आप केवल अपने कोड के साथ आगे बढ़ते हैं, या स्पष्टीकरण मांगते हैं? क्या आप इसे एक मजेदार चुनौती के रूप में देखते हैं, या फिर एक और हास्यास्पद उबाऊ साक्षात्कार प्रश्न के रूप में जो आपकी नौकरी क्या है, इसकी कोई प्रासंगिकता नहीं है? हमारे लिए यह बताना असंभव है कि साक्षात्कारकर्ता जिस उत्तर की तलाश कर रहा था।
लेकिन मुझे उम्मीद है कि मैंने कम से कम आपको संभावित उत्तरों की एक झलक दी :)