Usando solo sumar, restar y cambiar bits, ¿cómo puedo multiplicar un número entero por un número dado?Cambio Bits para multiplicar por cualquier número
Por ejemplo, quiero multiplicar un número entero por 17.
Yo sé que el desplazamiento de la izquierda es la multiplicación por un múltiplo de 2 y desplazando a la derecha se divide por una potencia de 2, pero no sé cómo generalizar eso.
¿Qué hay de los números negativos? Convierte a dos complemento y hacer el mismo procedimiento?
(EDIT: OK, tengo esto, no importa que convierte a complemento a dos y luego es lo que el cambio en función del número de izquierda a derecha en vez de derecha a izquierda..)
Ahora viene la parte difícil. Solo podemos usar 3 operadores.
Por ejemplo, multiplicando por 60 que puedo lograr mediante el uso de esto:
(x << 5) + (x << 4) + (x << 3) + (x << 2)
Dónde x
es el número estoy multiplicando. Pero eso son 7 operadores: ¿cómo puedo condensar esto para usar solo 3?
En multiplicaciones generales no se puede hacer en 3 operaciones de cambios, añadir/resta ... Pero ambos 17 y 60 se puede hacer en 3 operaciones . (pista: prueba una resta de 60) EDITAR: No vi que esto ya haya sido respondido. – Mysticial
hicieron los problemas para que el trabajo convenientemente en 3 operadores jaja. Gracias por toda la ayuda. – Adam