Anteriormente expuse cómo convertir binario a decimal en Java, ahora veremos el proceso inverso, el cual es convertir un número decimal (base 10) a uno binario (base 2).
De igual manera voy a exponer 2 métodos: uno que lleva más desarrollo del algoritmo y otro que ya ofrece la API de Java.
La forma desarrollada implica ir dividiendo el número decimal entre 2, hasta llegar a 0. Se toma el residuo de la división (o sea, lo que sobra al dividirlo, lo cual puede ser 1 o 0) y se va concatenando en una cadena.
Concatenando tal vez no es el término correcto, más bien, el dígito del residuo se inserta al inicio de la cadena que será el número binario.
Veamos el método que acabo de explicar en el algoritmo. Usamos un StringBuilder pero no te confundas ni agobies, solamente es para que nos ayude a insertar el dígito binario al inicio de la cadena.
public static String convertirDecimalABinarioManual(long decimal) {
if (decimal <= 0) {
return "0";
}
StringBuilder binario = new StringBuilder();
while (decimal > 0) {
short residuo = (short) (decimal % 2);
decimal = decimal / 2;
// Insertar el dígito al inicio de la cadena
binario.insert(0, String.valueOf(residuo));
}
return binario.toString();
}
Al final regresamos el StringBuilder
pero convertido a cadena. Como lo dije, solamente es para facilitarnos las cosas para trabajar con la cadena.
Como lo dije, ya existe un método optimizado y puesto en la API de Java para convertir un número decimal a su representación binaria.
El método del que hablo se llama toBinaryString
y está dentro de la clase Long
; usamos Long
para manejar números que sean grandes.
La sintaxis es:
String binario = Long.toBinaryString(numeroDecimal);
Abajo veremos ejemplos de uso.
Ahora veamos cómo se usan los métodos que explicamos. La salida debería ser la misma para ambos. Veamos:
class Main {
public static void main(String[] args) {
int[] decimales = { 0, 2, 5, 50, 120, 1023, 51, 52, 60, 100, 53, 54, 55, 56, 57, 16, 17 };
for (int decimal : decimales) {
System.out.println("Convirtiendo decimal a binario el número " + decimal);
System.out.println("Manual: " + convertirDecimalABinarioManual(decimal));
System.out.println("Usando funciones: " + convertirDecimalABinario(decimal));
}
}
public static String convertirDecimalABinario(long decimal) {
return Long.toBinaryString(decimal);
}
public static String convertirDecimalABinarioManual(long decimal) {
if (decimal <= 0) {
return "0";
}
StringBuilder binario = new StringBuilder();
while (decimal > 0) {
short residuo = (short) (decimal % 2);
decimal = decimal / 2;
// Insertar el dígito al inicio de la cadena
binario.insert(0, String.valueOf(residuo));
}
return binario.toString();
}
}
Eres libre de descargar el código, en caso de que lo hagas, mira este tutorial para que instales NetBeans; un IDE poderoso que ayudará a la hora de programar en Java.
Como siempre, te invito a leer más sobre:
Hoy te voy a presentar un creador de credenciales que acabo de programar y que…
Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…
En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…
En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…
Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…
En este artículo te voy a enseñar cómo usar un "top level await" esperando a…
Esta web usa cookies.