pregunta simple, pero no puedo parecer bastante para averiguarlo:Bitshifting para multiplicar un número entero por 10
si tengo un número entero, por ejemplo 12, y realizar el siguiente bit a la manipulación en él:
int i = 12;
i = (i << 3) + (i << 1);
I terminar con 120 (12 * 10). Este es el caso con cualquier número.
¿Puede alguien explicarme, de manera sucinta, por qué es que esto funciona? (Obviamente me falta algo bastante rudimentario cuando se trata de cambiar bits).
Gracias
¿Conoce cómo Bitshifting funciona? 'i << 3' es i * (2^3) o i * 8, y' i << 1' es i * (2^1) o i * 2, así que si los agrega, obtiene i * 10 . –
He're you go: http://en.wikipedia.org/wiki/Multiplication_algorithm#Shift_and_add – Stefan
También tenga en cuenta que cualquier compilador * decente lo hará mejor que usted ... Simplemente use la multiplicación simple y el optimizador hará lo que sea mejor para ti en la plataforma actual. –