Potencias del dos con desplazamiento de bits

27/Ene/2009 Java , 2 Comentarios

Hace unos días explicabamos el ejemplo de cómo obtener las potencias del dos con Java. Para ello nos apoyabamos 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 sería, que sería 1001, el calculo lo haríamos como:

  2^3 = 8
+ 2^0 = 1
---------
        9

Lo que vamos a hacer para nuestro ejemplo es apoyarnos en esta carácterística e ir desplazando un 1 hacía la izquierda. Algo como lo siguiente:

000001 = 1
000010 = 2
000100 = 4
001000 = 8
010000 = 16
100000 = 32

Para 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ón
1 << 2 // Para desplazarlo dos posiciones
1 << 3 // Para desplazarlo tres posiciones
...

Asi que solo nos queda meterlo en un bucle para sacar todas las potencias del dos.

  1.  
  2. int iNumeroPotencias = 10;
  3.  
  4. for (int x=0;x<=iNumeroPotencias;x++)
  5. System.out.println("2 elevado a " + x + " igual a " + (1 << x));

Gracias a Le Funes por su colaboración...

Vídeos sobre Java


2 comentarios en “Potencias del dos con desplazamiento de bits”

Víctor Cuervo

bLLANNCAAA

import java.util.*;
public class eje_1 {

public eje_1() {
}
public static void main (String arg []){

Scanner teclado=new Scanner (System.in);
int n,p;

System.out.print(“Introdusca un numero”);
n=teclado.nextInt();
System.out.print(“Introdusca la potencia”);
p=teclado.nextInt();

int resultado = 1;
for(int i=0; i<p; i++)
resultado = resultado * n;

System.out.println("El resultado es igual="+resultado);

}
}

Víctor Cuervo

Fhernd

Excelente información. Me ha gustado su organización y claridad. Adelante!

¿Algo que nos quieras comentar?

Déjanos tu comentario, no te preocupes que tu email no será publicado

*

*