Java - Convertir al numero de correspondencia ya sea binario o decimal

 
Vista:

Convertir al numero de correspondencia ya sea binario o decimal

Publicado por JC (3 intervenciones) el 14/04/2020 22:33:15
Buenas tardes quien me podría guiar en como realiza un programa en JAVA que pueda leer un numero ya sea binario o decimal y lo convierta en el numero de correspondencia ya sea binario o decimal.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Convertir al numero de correspondencia ya sea binario o decimal

Publicado por Kabuto (1381 intervenciones) el 15/04/2020 01:05:07
Primero hay que saber cuál es el proceso de una conversión y otra.
Es decir, aprender a hacer las conversiones a "lápiz y papel", nosotros mismos, no mediante computadora.

De Binario a Decimal

De Decimal a Binario


Una vez entendido el proceso, se intenta escribir un programa que siga esa lógica.

Insisto en que hay que intentarlo, aunque no se consiga. En cualquier caso a continuación dejo un código completado, por si sirve de ayuda y referencia.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
public class Conversor {
 
	public static void main(String[] args) {
		Scanner teclado = new Scanner(System.in);
 
		int opc = 0;
 
		while (opc != 3) {
			System.out.println("\n\n[1] -- Convertir de decimal a binario");
			System.out.println("[2] -- Convertir de binario a decimal");
			System.out.println("[3] -- FIN DE PROGRAMA");
			System.out.print("Elija opcion: ");
			opc = teclado.nextInt();
 
			switch(opc) {
			case 1:
				System.out.print("\nIntroduzca número decimal: ");
				int decimal = teclado.nextInt();
				System.out.println("Equivalente binario: " + decimalABinario(decimal));
				break;
			case 2:
				System.out.print("\nIntroduzca número binario: ");
				int binario = teclado.nextInt();
				System.out.println("Equivalente decimal: " + binarioADecimal(binario));
				break;
			case 3:
				System.out.println("\n\n\tFIN DE PROGRAMA");
				break;
			default:
				System.out.println("Opcion desconocida");
			}
		}
		teclado.close();
 
	}
 
	/**
	 * Convierte un número decimal en su equivalente binario
	 * @param dec Número en base decimal
	 * @return Mismo valor en base binaria
	 * @see <a href="http://recursostic.educacion.es/secundaria/edad/4esotecnologia/quincena5/4q2_contenidos_2c.htm">
	 * De Decimal a Binario</a>
	 */
	static int decimalABinario(int dec) {
 
		/*
		 * Para convertir de decimal a binario
		 * hay que hacer sucesivas divisiones entre 2
		 * y guardar el resto (que será 0 ó 1 ).
		 * Cuando el número decimal quede reducido a
		 * valor 1 ó 0, se termina el proceso y se guarda
		 * también este valor.
		 * Entonces tenemos una secuencia de 0 y 1, que
		 * si invertimos su orden, obtenemos el número
		 * binario equivalente.
		 */
 
		//Iremos construyendo un String con los valores que guardamos
		StringBuilder bin = new StringBuilder();
 
		while (dec > 1) {
			bin.append(dec % 2); //Guardamos el resto, con el operador módulo
			dec /= 2; //Dividimos el valor decimal. Todo esto se repite hasta que valga 1 ó 0
		}
		bin.append(dec); //Recogemos el último valor, el cociente de la última división
 
		//Si invertimos el String construido, tenemos el equivalente binario
		return Integer.parseInt(bin.reverse().toString());
	}
 
	/**
	 * Transforma un número binario en su equivalente decimal.
	 * @param bin Valor en base binaria
	 * @return Mismo valor en base decimal
	 * @see <a href="http://recursostic.educacion.es/secundaria/edad/4esotecnologia/quincena5/4q2_contenidos_2b.htm">
	 * De binario a decimal</a>
	 */
	static int binarioADecimal(int bin) {
 
		int expon = 0;
		int decimal = 0;
 
		while (bin > 0) {
			//Cogemos última cifra del número binario, haciendo modulo 10
			int cifra = bin % 10;
			//Multiplicamos por la potencia de 2 que corresponde, y acumulamos en el valor decimal
			decimal += cifra * (int) Math.pow(2, expon);
			//Incrementamos exponente para la próxima cifra
			expon++;
			//Eliminamos la cifra actual con la que ya hemos potenciado, haciendo división por 10
			bin /= 10;
		}
 
		return decimal;
	}
 
}

En pantalla tenemos este resultado:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[1] -- Convertir de decimal a binario
[2] -- Convertir de binario a decimal
[3] -- FIN DE PROGRAMA
Elija opcion: 1
 
Introduzca número decimal: 28
Equivalente binario: 11100
 
 
[1] -- Convertir de decimal a binario
[2] -- Convertir de binario a decimal
[3] -- FIN DE PROGRAMA
Elija opcion: 2
 
Introduzca número binario: 11100
Equivalente decimal: 28
 
 
[1] -- Convertir de decimal a binario
[2] -- Convertir de binario a decimal
[3] -- FIN DE PROGRAMA
Elija opcion: 3
 
 
	FIN DE PROGRAMA
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar