java

Decimal a binario en Java

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.

El algoritmo para convertir decimal a binario en 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.

Convertir decimal a 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.

Método 2: usar toBinaryString

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.

Ejemplos para convertir decimal a binario

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:

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Entradas recientes

Cancelar trabajo de impresión con C++

En este post te quiero compartir un código de C++ para listar y cancelar trabajos…

4 semanas hace

Copiar bytes de Golang a JavaScript con WebAssembly

Gracias a WebAssembly podemos ejecutar código de otros lenguajes de programación desde el navegador web…

2 meses hace

Imprimir PDF con Ghostscript en Windows de manera programada

Revisando y buscando maneras de imprimir un PDF desde la línea de comandos me encontré…

2 meses hace

Hacer pruebas en impresora térmica Bluetooth Android

Esta semana estuve recreando la API del plugin para impresoras térmicas en Android (HTTP a…

2 meses hace

Limpiar clave PEM

Hoy te enseñaré a extraer la cadena base64 de una clave PEM usando una función…

2 meses hace

Foco con Telegram, apagador de 3 vías, relevador y ESP8266

Encender un foco con un Bot de Telegram es posible usando una tarjeta como la…

2 meses hace

Esta web usa cookies.