Potencias del dos con desplazamiento de bits
Hace unos días explicábamos el ejemplo de cómo obtener las potencias del dos con Java. Para ello nos apoyábamos sobre la clase Math y el método .pow(). Si bien, para el caso del número 2, y como nos comentaba Le Funes hay una forma de mostrar las potencias del dos con desplazamiento de bits.
Y es que todo número tiene su representación en binario. Entendiendo que en el lenguaje binario se representa todo con ceros y unos. Así la representación en binario del 1 es 1, la del 3 es 11, la de 8 es 1000, la del 9 es 1001, …
Para calcular el número decimal de un número binario es tan sencillo como obtener la posición del número, empezando por la derecha como posición cero, elevar su valor a la potencia del 2 y sumar todos los números. En el caso del 9, que sería 1001, el cálculo lo haríamos como:
2^3 = 8+ 2^0 = 1 ------- 9Lo que vamos a hacer para nuestro ejemplo es apoyarnos en esta característica e ir desplazando un 1 hacia la izquierda. Algo como lo siguiente:
000001 = 1000010 = 2000100 = 4001000 = 8010000 = 16100000 = 32Para desplazar el bit a la izquierda lo hacemos con el operador de desplazamiento <<. La operación sería de la siguiente manera:
1 << 1 // Para desplazar una posición1 << 2 // Para desplazarlo dos posiciones1 << 3 // Para desplazarlo tres posiciones...Así que solo nos queda meterlo en un bucle para sacar todas las potencias del dos.
int iNumeroPotencias = 10;
for (int x = 0; x <= iNumeroPotencias; x++) { System.out.println("2 elevado a " + x + " igual a " + (1 << x));}Gracias a Le Funes por su colaboración.
Descarga el código de Potencias del dos con desplazamiento de bits
Cómo poder calcular potencias del dos con desplazamiento de bits mediante Java.