jueves, 2 de mayo de 2013

Ejercicio conversión binario a decimal Deitel 4.31

Saludos dejo mi programa en java. respecto a los ejercicios del libro Deitel que es muy bueno y mi favorito hasta el momento.

El programa consiste en coonvertir un numero binario a decimal sin utilizar un método ya predefinido en java, solo se tiene que utilizar el operador % y la división ademas de algun o algunos ciclos.

public void binarioDecimal()
    {
        int numero = 0;
        int contador = 1;
        int cifraBinaria = 0;
        System.out.println("Por favor introduzca un número binario");
        Scanner entrada= new Scanner(System.in);
        numero = entrada.nextInt();
       
        //mientras numero sea mayor o igual a 1 entra al ciclo        
        while (numero>=1)
        {
            //cifraBinaria es igual a su valor mas el módulo de numero multimplicado por la posición del bit el cual es controlado por el contador
            // ejemplo 1*1 = 1
            cifraBinaria +=  (numero%10 * cuadradoPosicion(contador));
            //incrementamos el contador
            contador++;
            //dividimos a numero entre diez y el resultado será tomado como el nuevo valor para ser evaluado en el while
            numero/=10;    
        }
       
   
    System.out.println("El número binario es:" + cifraBinaria);
    }
   
    public int cuadradoPosicion(int cuadrado)
    {
        int contador = 1;
        int acomulador = 1;
        //evaluamos el while en la condición controlado por el numero "cuadrado"
        //si el valor es 1 no entra al ciclo
        while (contador<cuadrado)
        {
            //se acomula la multiplicación de 1 * 2= 2 ; 2*2 = 4 .....
            acomulador *= 2;
            contador++;
        }       
        return acomulador;
       
    }


solo falta crear la clase que contenga a los dos metodos y agregar algunos accesos a los paquetes sobre todo al impot java.util.system.scanner

6 comentarios:

  1. que es cuadrado, no veo nada declarado con ese nombre o que adquiera algun valor para iniciar el while o algo con ese nombre que pueda indexar en la declaracion del metod public int cuadradoposicion, es mas creo que no se permite esa declaracion asi como esta en el ejemplo

    ResponderBorrar
  2. Yo lo hice de esta manera

    static public void main(String args [])
    {
    int numero, residuo, total = 0, binario = 1;
    Scanner entrada = new Scanner(System.in);
    numero=entrada.nextInt();
    while(numero>0)
    {
    residuo = numero%10;
    if(residuo==1)
    {
    residuo = residuo*binario;
    total= total+binario;
    }
    binario = binario*2;
    numero = numero/10;
    }

    System.out.println("Total: "+total);
    }
    }

    ResponderBorrar
    Respuestas
    1. //This program converts binary to decimal Sysmtem

      import java.util.Scanner;

      public class BinaryToDecimal{
      public static void main(String args[]){
      int binaryNumber = 0, mod = 0, decimalNumber = 0, i = 0;//Inicializamos Variables
      Scanner sc = new Scanner(System.in); // Creamos objeto Scanner

      System.out.println("Escribe un numero en binario");
      binaryNumber = sc.nextInt();//Leemos el número en binario

      while(binaryNumber>0){//Hacemos un ciclo que se repita hasta que la variable sea menor que 0
      mod = binaryNumber % 10; //Obtenmos el modulo 10 de el numero binario
      if(mod == 1){
      decimalNumber += Math.pow(2,i); //Si el modulo es 1, sumamos al numero decimal que lleva el contador de 2 (2^n) o en este caso (2^i)
      }
      binaryNumber /= 10; //Dividimos el numero entre 10 lo que elimina el primer termino de la derecha, si es 1 el numero java desprecia los decimales y el numero se hace 0
      i++;
      }
      System.out.println("Este el resultado en decimal: " + decimalNumber);

      }
      }

      Borrar
    2. Me diste la respuesta pero yo lo hice un poco diferente pero es la misma idea, gracias

      Borrar
    3. Gracias por compartir tus conocimientos, me fue muy útil.

      Borrar