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);
}
}
me salvaste la vida XD
ResponderEliminarMe alegro de que te haya sido útil Antonio
EliminarEnrique puedes ayudarme por favor
EliminarTengo este código
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package numeron;
/**
*
* @author estudiantes
*/
public class Entero {
//atributos
private byte bits[];
private byte cantidad = 64;
/**
Constructor 1
* inicializa el arreglo de tamaño cantidad.
* @param n
* n pertenece a [1,64]
* valor por defecto es 64
*/
public Entero(byte n){
if(n >= 1 && n <= 64){
cantidad = n;
}
bits = new byte[cantidad];
}
/**
* @param numeroDecimal
* Número decimal para ser convertido a binario
*
* @param representacion4
* Esquema de representación binaria.
* 0 Sin signo
* 1 Con Singo
* 2 Complemento a 1
* 3 Complemento a 2
* El esquema por defecto es complemento a 2
*/
public Entero(int numeroDecimal, int representacion4){
//Inserte el código aquí
}
/**
returna el número como cadena de bits
*
* @return num
* desde el bit más significativo hacia el menos signficativo
*/
@Override
public String toString(){
String num = "";
for(int i=bits.length - 1; i>=0; i--){
num += bits[i];
}
return num;
}
}
Y debo hacer esto:
*Agregar el constructor Entero que permita inicializar el arreglo con un número decimal en el esquema de representación binaria seleccionado.*
¿Podrías ayudarme por favor, Gracias
GRASIAS ENRIKE
ResponderEliminarMuchas gracias por el Curro.
ResponderEliminarYo 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
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
ResponderEliminarlogrado ya quedan pocos por hacer. comparto mi codigo :) saludos.
ResponderEliminarimport 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);
}
}
import java.util.Scanner;
ResponderEliminarpublic 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();
}
}
System.out.prnt(Este blog esta super chido, muchas gracias);
ResponderEliminar}
}
}
Gracias por el comentario Valentin. Espero que sigas visitándolo y que te sea útil.
Eliminarhola
ResponderEliminarTeniendo en cuenta el desafío que se extiende en el Libro: Cómo programar en Java, comparto mi código. Ha sido un placer analizar la respuesta de cada uno de ustedes.
ResponderEliminarpackage ejercicios;
import java.util.Scanner;
public class ImprimirEquivalenteDecimalDeNumeroBinario4_31
{
public static void main(String[] args)
{
Scanner entrada = new Scanner(System.in); // utilizo un objeto escaner para obtener datos del usuario
int numero = 0;; // variable que almacena el numero ingresado
int auxiliar = 0; // variable que almacena el numero ingresado y utiliza su valor para diversos calculos
int cantDigitos = 0; // variable que almacena la cantidad de digitos del numero
int digito = 0; // variable que almacena el valor de un digito
int constante = 2; // variable que se usa en reemplazo de la potencia, para los calculos de conversion de binario a decimal
int resultadoParcialDecimal = 0; // variable que almacena la suma de las potencias de los digitos
int correcto = 0; // variable que se utiliza para verificar si el numero ingresado es binario
// Algoritmo que pide nuevamente ingreso del usuario si el numero no es binario
while (correcto == 0) // si el numero no es binario...
{
System.out.println("Ingrese un numero entero Binario (solo debe contener unos y/o ceros): "); // pide ingreso de usuario
numero = entrada.nextInt(); // ingreso el numero (cuando excedo el numero de 10 digitos, lanza un error)
auxiliar = numero; // comparto el valor para calculos auxiliares
// algoritmo para saber si el numero es binario
while (auxiliar != 0) // mientras a "auxliar" le queden cifras
{
digito = auxiliar % 10; // guardo el ultimo digito de la derecha
if (digito == 0 || digito == 1) // si el digito es binario...
{
auxiliar = auxiliar / 10; // quito el último dígito de la derecha y almaceno el resto del numero
correcto = 1; // si todos los digitos son binarios el numero es binario y no debe pedirse otro ingreso
}
else // si al menos un digito no es binario
{ auxiliar = 0; // salgo del algoritmo para saber si el numero es binario
correcto = 0; // vuelvo al algoritmo para ingresar numero
}
}
}
auxiliar = numero; // si el numero es binario restablezco valor y uso auxiliar para la conversion
// algoritmo para separar digitos de un numero binario y calcular su equivalente decimal
while (auxiliar != 0) // mientras a "auxliar" le queden cifras
{
digito = auxiliar % 10; // guardo el ultimo digito (de la derecha)
auxiliar = auxiliar / 10; // quito el último dígito de la derecha y almaceno el resto del numero
cantDigitos++; //sumamos 1 al contador de digitos
if (cantDigitos == 1) // condicion para calculo del primer digito (de la derecha)
resultadoParcialDecimal = digito * 1;
if (cantDigitos == 2) // condicion para calculo del segundo digito (de la derecha)
resultadoParcialDecimal += digito * constante;
if (cantDigitos >= 3) // condicion para calculo a partir del tercer digito (de la derecha) en adelante
{
constante += constante; // elevo 2
resultadoParcialDecimal += digito * constante;
}
}
// Muestro resultado :)
System.out.println("El numero binario '" + numero + "' equivale a '" + resultadoParcialDecimal + "' en sistema decimal");
// Me costó mucho tratando de utilizar solo los conceptos de los capitulos vistos previamente en Cómo programar en Java - Deitel...
}
}
Les comparto mi solución :D
ResponderEliminarimport java.util.Scanner;
public class BinarioDecimal {
public static void main(String[] args) {
long bin=0, num=0;
String bins="";
char dig=' ';
boolean binario=false;
Scanner sc=new Scanner(System.in);
System.out.print("Ingrese numero binario: ");
bin=sc.nextLong();
bins=String.valueOf(bin);
for (int i=0; i<bins.length(); i++) {
if (bins.charAt(i)=='0' || bins.charAt(i)=='1') {
binario=true;
}else {
binario=false;
}
}
if (binario) {
for (int i=0; i<bins.length(); i++) {
dig=bins.charAt(i);
num=num+Long.parseLong(String.valueOf(dig))*(int)Math.pow(2,bins.length()-(i+1));;
}
System.out.println("Numero: " + num);
}else{
System.out.println("El numero ingresado no es Binario");
}
}
}
alguien que pueda hacer este mismo ejercicio pero en lenguaje C
ResponderEliminarpublic static long Binario_A_Decimal(String f){
ResponderEliminarlong valor = 0;
for (int i = 1,j=f.length()-1; j>=0; i*=2,j--) {
if (f.charAt(j)=='1') {
valor +=i;
}
}
return valor;
}
Buenas noches. Me estoy iniciando en programación. Me ayudan con este ejercicio. gracias. Tengo que utilizar arreglo.
ResponderEliminarEscriba un programa que lee un numero binario de 8 bits, lo almacene en un vector, lo
convierta a formato decimal y lo muestre en pantalla.
class java {
ResponderEliminarpublic static void main(String[] args) {
boolean b_binaria[];
b_binaria = new boolean[8];
// 01010101
b_binaria[0]=false;
b_binaria[1]=true;
b_binaria[2]=false;
b_binaria[3]=true;
b_binaria[4]=false;
b_binaria[5]=true;
b_binaria[6]=false;
b_binaria[7]=true;
int dec=0;
for (int i = 7; i >= 0; i--) {
System.out.println(b_binaria[i] +" , "+ i);
if (b_binaria[i]==true) {
dec=dec + (int) Math.pow(2, 7-i);
}
}
System.out.println(dec);
}
}
Alguien me podria ayudar en este programa en java
ResponderEliminarElaborar una clase con los métodos que estime convenientes para pedir una cantidad en binario, la convierta a decimal y a octal. Finalmente se imprima en el monitor la cantidad tanto en binario, decimal y octal. (Utilizar cajas de dialogo).