To zależy. Czy mówimy o logicznej operacji mnożenia, czy o tym, jak to się faktycznie robi w sprzęcie?
Na przykład możesz przekonwertować ciąg szesnastkowy (lub ósemkowy lub dowolny inny mnożnik bazowy dwa) na liczbę całkowitą „bez mnożenia”. Możesz iść znak po znaku i zachować oring ( |) i bitshifting ( <<). Pozwala to uniknąć korzystania z *operatora.
Robienie tego samego z łańcuchami dziesiętnymi jest trudniejsze, ale nadal mamy prosty dodatek. Możesz użyć pętli z dodatkiem, aby zrobić to samo. Całkiem proste do zrobienia. Możesz też stworzyć własną „tabliczkę mnożenia” - mam nadzieję, że nauczyłeś się, jak pomnożyć liczby w szkole; możesz zrobić to samo z komputerem. I oczywiście, jeśli korzystasz z komputera dziesiętnego (zamiast binarnego), możesz wykonać „przesunięcie bitów”, podobnie jak w przypadku wcześniejszego ciągu szesnastkowego. Nawet w przypadku komputera binarnego można użyć szeregu przesunięć bitowych - (a << 1) + (a << 3)jest taki sam jak a * 2 + a * 8 == a * 10. Uważaj na liczby ujemne. Możesz wymyślić wiele sztuczek, aby uczynić to interesującym.
Oczywiście oba te elementy są tylko maskowaniem. Jest tak, ponieważ pozycyjne systemy numeryczne są z natury multiplikatywne . Tak działa ta konkretna reprezentacja numeryczna. Można mieć uproszczeń, które ukrywają ten fakt (tylko np liczb binarnych trzeba 0i 1tak zamiast mnożenia, można mieć prosty warunek - oczywiście, co tak naprawdę robi to nadal mnożenie, tylko przy użyciu tylko dwóch możliwych wejść i dwóch możliwych wyjść), ale zawsze tam jest, czai się. <<jest taki sam jak * 2, nawet jeśli sprzęt, który wykonuje operację, może być prostszy i / lub szybszy.
Aby całkowicie zrezygnować z mnożenia, należy unikać używania systemu pozycjonowania. Na przykład, cyfry rzymskie są addytywne (uwaga, że rzeczywiste cyframi rzymskimi nie używać zasad zwartym mamy dzisiaj - cztery byłoby IIIInie IV, i to czternaście może być napisany w jakiejkolwiek formie jak XIIII, IIIIX, IIXII, VVIIIIitd.). Konwersja takiego ciągu na liczbę całkowitą staje się bardzo łatwa - po prostu idź znak po znaku i dodawaj dalej. Jeśli postać jest X, dodaj dziesięć. Jeśli Vdodaj pięć. GdybyI, Dodaj jeden. Mam nadzieję, że zrozumiecie, dlaczego cyfry rzymskie były tak popularne; Pozycyjne systemy numeryczne są cudowne, gdy trzeba dużo powielać i dzielić. Jeśli zajmujesz się głównie dodawaniem i odejmowaniem, cyfry rzymskie działają świetnie i wymagają znacznie mniej nauki (a liczydło jest o wiele łatwiejsze do wykonania i użycia niż kalkulator pozycyjny!).
Przy takich zadaniach istnieje wiele trafień i oczekiwań dotyczących tego, czego faktycznie oczekuje ankieter. Może po prostu chcą zobaczyć twoje procesy myślowe. Czy akceptujesz specyfikacje techniczne ( <<tak naprawdę to nie mnożenie)? Czy znasz teorię liczb i informatykę? Czy po prostu zagłębiasz się w kod, czy prosisz o wyjaśnienia? Czy traktujesz to jako zabawne wyzwanie, czy może kolejne śmieszne, nudne pytanie, które nie ma związku z twoją pracą? Nie możemy powiedzieć ci odpowiedzi, której szukał ankieter.
Ale mam nadzieję, że przynajmniej rzuciłem okiem na możliwe odpowiedzi :)