Depende. ¿Estamos hablando de la operación lógica de la multiplicación, o cómo se hace realmente en hardware?
Por ejemplo, puede convertir una cadena hexadecimal (u octal, o cualquier otra base dos multiplicador) en un entero "sin multiplicación". Puede ir carácter por carácter y seguir oring ( |) y bitshifting ( <<). Esto evita usar el *operador.
Hacer lo mismo con las cadenas decimales es más complicado, pero todavía tenemos una suma simple. Puede usar bucles con adición para hacer lo mismo. Bastante simple de hacer. O puede hacer su propia "tabla de multiplicar", ojalá haya aprendido a multiplicar números en la escuela; Puedes hacer lo mismo con una computadora. Y, por supuesto, si está en una computadora decimal (en lugar de binaria), puede hacer el "desplazamiento de bits", al igual que con la cadena hexadecimal anterior. Incluso con una computadora binaria, puede usar una serie de cambios de bits, (a << 1) + (a << 3)es lo mismo que a * 2 + a * 8 == a * 10. Cuidado con los números negativos. Puedes descubrir muchos trucos para hacer esto interesante.
Por supuesto, ambos son solo multiplicaciones disfrazadas. Esto se debe a que los sistemas numéricos posicionales son inherentemente multiplicativos . Así es como funciona esa representación numérica particular. Puede tener simplificaciones que ocultan este hecho (por ejemplo, los números binarios solo necesitan 0y 1, por lo tanto, en lugar de multiplicar, puede tener una condición simple; por supuesto, lo que realmente está haciendo es multiplicar, solo con dos entradas posibles y dos posibles salidas), pero siempre está ahí, al acecho. <<es lo mismo que * 2, incluso si el hardware que realiza la operación puede ser más simple y / o más rápido.
Para eliminar por completo la multiplicación, debe evitar el uso de un sistema posicional. Por ejemplo, los números romanos son aditivos (nota que los números romanos reales no utilizaron las reglas compactificación que tenemos hoy - cuatro serían IIII, no IV, y los catorce años se podrían escribir en cualquier forma como XIIII, IIIIX, IIXII, VVIIIIetc.). Convertir una cadena de este tipo en entero se vuelve muy fácil: simplemente vaya carácter por carácter y siga agregando. Si el personaje es X, suma diez. Si V, suma cinco. SiI, Agrega uno. Espero que puedan ver por qué los números romanos siguieron siendo populares durante tanto tiempo; los sistemas numéricos posicionales son maravillosos cuando necesitas hacer muchas multiplicaciones y divisiones. Si se trata principalmente de sumas y restas, los números romanos funcionan muy bien y requieren mucha menos educación (¡y un ábaco es mucho más fácil de hacer y usar que una calculadora posicional!).
Con tareas como esta, hay muchos imprevistos sobre lo que el entrevistador realmente espera. Quizás solo quieran ver tus procesos de pensamiento. ¿Adoptas tecnicismos ( <<no es realmente multiplicación)? ¿Conoces la teoría de números y la informática? ¿Simplemente te sumerges con tu código o pides una aclaración? ¿Lo ve como un desafío divertido, o como otra pregunta ridícula y aburrida de la entrevista que no tiene ninguna relevancia para su trabajo? Es imposible para nosotros decirle la respuesta que estaba buscando el entrevistador.
Pero espero al menos darte una idea de las posibles respuestas :)