domingo, 11 de noviembre de 2012

Numeros Binarios JAVA

Hola a todos,

En esta nueva entrada veremos cómo sacar el número binario dado un número entero.

Básicamente un numero binario es una combinación de ceros ( 0 ) y unos ( 1 ), que representan mediante manera exponencial números enteros. Estos números binarios salen de una operación básica como lo es la división  e invirtiendo en resultado final, por lo cual dado un número entero cualquiera dividimos sucesivamente hasta llegar a u número final 0 o 1. Todos estos necesitamos usar obtener dos resultados:

  1. El numero entero siguiente, que se da por medio de divisiones sucesivas.
  2. El residuo de la división por dos del número entero.
Podemos ver mas del concepto en WIki
// 

public class Binario {

 //para esta clase tenemos que importar la libreria para listas
 //que es import java.util.ArrayList; 
 
 public static void main(String[] args) {

  //Numero Entero que convertimos en binario
  int numero=128;
  
  //String en el cual almacenamos el valor binario resultante
  String binario="";
  
  //llamamos al metodo que convirte el numero en binario
  binario=convertirABinario(numero);
  
  //mostramos por consola el numero Binario resultante
  System.out.println("El numero Binario es " + binario);
 }
 
 /**
  * Metodo que convierte  un numero entero en binario
  * @param numero Numero entero correspondiente
  * @return cadena de texto con el numero binario resultante
  */ 
 public static String convertirABinario(int numero)
 {
  //lista donde almacenamos los valores individuales
  ArrayList binarios = new ArrayList();
  
  //variable donde almacenamos el resultado de la division 
  int aux=numero;
  
  //hacemos un ciclo while para sacar todos los valores binarios
  while(true)
  {
   //almacenamos el resultado de la operacion sea 1 o 0
   binarios.add(aux%2);
   
   //pasamos el sigiente numero
   aux/=2;
   
   if(aux<2)
    {
    //una vez obtenido todos los valores salimos del ciclo
     binarios.add(aux); 
     break;
    }
   
  }
    
  //llamamos al metodo que nos invierta la lista y obtenmos el resultado final
  return invertirLista(binarios);
 }

 
 /**
  * Metodo que invierte la lista para obtener el binario final
  * @param lista donde se encuentra los resultados binarios
  * @return con el numero binario final
  */
 public static String invertirLista(ArrayList lista)
 {
  String invertido="";
  
  for(int i=lista.size()-1;i>=0;i--)
  {
   invertido+=lista.get(i);
  }
  
  return invertido;
 }
}

2 comentarios:

  1. yo quiero que alguien me diga como poder sacar el resultado de cuantos unos y cuantos ceros utilice aqui.
    import java.util.Scanner;

    public class binarios {

    public static void main(String[] args) {
    Scanner leer= new Scanner(System.in);
    int z,u;
    for(z=1;z<=10;z++){
    System.out.println("ingresa numero"+z);
    u=leer.nextInt();
    if(u==0||u==1)
    System.out.println("numero binario");
    else{
    System.out.println("error");
    u--;
    if(u==0);



    }
    }

    ResponderEliminar
    Respuestas
    1. Hola, serian varias cosas:

      1. para saber la cantidad de 1 y 0 que ingresa el usuario lo que podrías hacer es separar tu if en dos uno para los 1 y otro para los 0, además crear 2 contadores y cada vez que ingrese a tu if lo incrementas en 1. por ejemplo:

      int contador0=0; //Contador para los 0
      int contador1=0; //Contador para los 1
      …..
      if(u==0)
      {
      System.out.println("numero binario");
      contador0 ++ ;
      }
      if(u==1)
      {
      System.out.println("numero binario");
      contador1 ++ ;
      }

      2. para hacer evidente el numero de binarios ingresados después de finalizar el for lo que podrías hacer seria algo como :

      System.out.println("La cantidad de 0 ingresados es " + contador0);
      System.out.println("La cantidad de 1 ingresados es " + contador1);

      3. tienes que tener en cuenta si solo vas a aceptar numero 1 y 0 o números binarios, ya que estos están compuestos por varios 1 y 0, por lo cual en tu caso en numero como 101010 que es binario pero según tu código no lo aceptaría, deberías mirar esa parte.

      Espero te sea de ayuda, cualquier cosa quedamos atento. :)

      Eliminar

Alguna duda?