Pasar un número de binario a decimal en Java

Convertir un número de binario a decimal en Java

El programa para pasar un número expresado en binario a decimal se basa en la forma tradicional de hacerlo. Los dígitos del número binario ocupan una posición que se numera de derecha a izquierda empezando por cero. La posición del dígito más a la derecha es la 0.

Numero Binario:
1
1
0
1
0
1
Posición que ocupa cada dígito
5
4
3
2
1
0

Para pasar el número a decimal se multiplica cada dígito binario por 2 elevado a la posición que ocupa. La suma de todos los productos es el equivalente en decimal.

/*
* Programa Java que convierte un número binario a decimal
*/

import java.util.Scanner;

public class BinarioDecimal {

  public static void main(String[] args) {
    long numero, aux, digito, decimal;
     int exponente;
     boolean esBinario;
     Scanner sc = new Scanner(System.in);

    //Leer un número por teclado y comprobar que es binario
     do {
          System.out.print("Introduce un numero binario: ");
          numero = sc.nextLong();
          //comprobamos que sea un número binario es decir
          //que este formado solo por ceros y unos
          esBinario = true;
          aux = numero;
          while (aux != 0) {
                     digito = aux % 10; //última cifra del números
                     if (digito != 0 && digito != 1) { //si no es 0 ó 1
                          esBinario = false; //no es un número binario
                     }
                     aux = aux / 10; //quitamos la última cifra para repetir el proceso
           }
      } while (!esBinario); //se vuelve a pedir si no es binario

      //proceso para pasar de binario a decimal
      exponente = 0;
      decimal = 0; //será el equivalente en base decimal
      while (numero != 0) {
                //se toma la última cifra
                digito = numero % 10;
                //se multiplica por la potencia de 2 correspondiente y se suma al número
                decimal = decimal + digito * (int) Math.pow(2, exponente);
                //se aumenta el exponente
                exponente++;
                //se quita la última cifra para repetir el proceso
                numero = numero / 10;
      }
      System.out.println("Decimal: " + decimal);
   }
}



7 comentarios:

  1. Muchas gracias por el Curro.

    Yo aqui dejo la solución que encontrado antes de mirar el resultado del Blog.

    import java.io.*;
    import java.util.*;

    public class Test {

    public static void main(String[] args) throws IOException {

    System.out.println("11. Pasar de binario a decimal.\n");
    System.out.println("Solución:\n");

    int n, p, q, y;

    Scanner sc = new Scanner(System.in);

    System.out.print("Entrar el nùmero binario para convertir en decimal: ");

    n = sc.nextInt();
    String x = Integer.toString(n);

    p = 0;
    y=x.length()-1;

    do {
    q=n/(int)Math.pow(10,(y));
    n=n%((int)Math.pow(10,(y)));
    y=y-1;
    p=(p*2)+q;
    } while (y>=0);

    System.out.println("el nùmero binario en decimal es: " + p);

    System.out.print("\n");

    }
    }

    Salüt

    ResponderEliminar
  2. hola por favor ayuda quisiera pasar un numero pero con decimales a otro sistema de numeracion por ejemplo 2A6.E3 a binario o a decimal por favorrr es urgente ayudaaaa

    ResponderEliminar
  3. logrado ya quedan pocos por hacer. comparto mi codigo :) saludos.

    import javax.swing.*;
    public class _5_11_Decimal_A_binario {
    /*binario a decimal en java*/

    public static void main(String[] args) {
    String txt = JOptionPane.showInputDialog("Ingrese el codigo binario");
    double suma=0;
    System.out.println();
    for(int v =0; v<txt.length();v++){

    int c2 = Integer.parseInt(""+ txt.charAt(v));

    if(c2==1){
    suma = suma + Math.pow(2, v);
    }

    }
    int sumafinal = (int) suma;
    System.out.println("El numero binario "+txt+" a decimal es : "+sumafinal);

    }
    }

    ResponderEliminar
  4. import java.util.Scanner;
    public class BinarioADecimal {


    public static void main(String[] args) {


    String strBinario;
    char vecBinario[];
    int intBinario, posicionElevada, strLargo, digito;
    double aux;
    String mensajeError = "Numero binario NO VALIDO";
    String mensaje1 = "Ingrese un numero binario";
    Scanner in = new Scanner(System.in);
    intBinario=0;
    aux=0;


    boolean band;

    do{
    System.out.println(mensaje1);

    strBinario = in.nextLine();
    strLargo = strBinario.length();
    vecBinario = new char[strLargo];

    //Verificamos el ingreso que sea binario
    for (int i=0; i<strLargo; i++){
    vecBinario[i]=strBinario.charAt(i);

    }

    band = false;
    for (int j=0; j<strLargo; j++){
    if (vecBinario[j] != '1' && vecBinario[j]!= '0'){

    System.out.println(mensajeError);
    j=strLargo;
    band = true;

    //en caso de que si...
    } else {
    aux = Math.pow(2, (strLargo-1-j)); //auxiliar para potencia
    posicionElevada = (int) aux; // lo paso a integer para que pueda ser compatible
    digito = vecBinario[j]-'0'; // paso chart a int
    intBinario = intBinario + digito*posicionElevada; // hago la operacion para conseguir el decimal
    band = false;

    }
    }

    }while (band == true);
    System.out.println(intBinario);

    in.close();



    }
    }

    ResponderEliminar