
Distintos algoritmos para convertir binario a hexadecimal en Java. El sistema numérico hexadecimal se codifica en 16 elementos. Estos 16 elementos consisten en 10 dígitos (0-1) y 6 letras (A-F). Un número hexadecimal puede derivarse de un binario agrupando 4 dígitos que equivalgan a un carácter hexadecimal. Ejemplos:
Binario: 11011111 --> Hexadecimal: DF
Binario: 10001101 --> Hexadecimal: 8D
Para hacer la conversión a hexadecimal vamos a utilizar dos aproximaciones:
- Usando el método toHexString() nativo de Java.
- Sucesivamente recogiendo el resto y dividiendo el número decimal convertido por 16.
Primera Aproximación: toHexString()
La sintaxis de la función toHexString() es la siguiente:
public static String toHexString(int num)
El algoritmo de este método es como sigue:
- Convierte el número binario en decimal.
- Para convertir el número binario en decimal primero se extrae cada dígito cogiendo cada resto dividiendo entre 10.
- A continuación, se multiplica este dígito con potencias incrementales en base 2.
- Continuas dividiendo el número binario original por 10 para eliminar el último dígito en cada iteración.
- Tras tener el número decimal, usa el método toHexString() para tener la salida deseada.
class BinarioAHexadecimal {
int binarioADecimal(long binario)
{
int numeroDecimal = 0, i = 0;
while (binario > 0)
{
numeroDecimal += Math.pow(2, i++) * (binario % 10);
binario /= 10;
}
return numeroDecimal ;
}
String decimalAHexadecimal(long binario)
{
int numeroDecimal = binarioADecimal(binario);
String numeroHexadecimal = Integer.toHexString(numeroDecimal );
numeroHexadecimal = numeroHexadecimal .toUpperCase();
return numeroHexadecimal ;
}
public static void main(String[] args)
{
// instantiating the class
BinarioAHexadecimal binarioADecimal = new BinarioAHexadecimal();
long numero= 10011110;
System.out.println("Numero de entrada : " + numero);
System.out.println(binarioADecimal.decimalAHexadecimal(numero));
}
}
Segunda Aproximación: conversión a decimal
En esta aproximación también convertiremos el número binario en decimal. Entonces dividiremos sucesivamente recogiendo el resto de este número decimal para recoger el único carácter para cada conjunto de 4 dígitos que había en el número binario original.
Los pasos del algoritmo son los siguientes:
- Convertir el binario a decimal usando los pasos 2-4 del algoritmo anterior.
- Ejecutar un bucle while hasta que el número decimal sea cero mientras se divide en cada iteración entre 16.
- En cada iteración se recoge el resto de dividir entre 16.
- Se forma una cadena añadiéndole los caracteres que son el resto de haber dividido por 16.
- Si el resto es igual o mayor a 10, se reemplaza por la letra correspondiente A-F.
class BinarioAHexadecimal{
int binarioADecimal(long binario)
{
int numeroDecimal = 0, i = 0;
while (binario > 0) {
numeroDecimal += Math.pow(2, i++) * (binario % 10);
binario /= 10;
}
return numeroDecimal;
}
String decimalAHexadecimal(long binario)
{
int numeroDecimal = binarioADecimal(binario);
char letras[] = { 'A', 'B', 'C', 'D', 'E', 'F' };
int resto, i = 0;
String numeroHex= "";
while (numeroDecimal != 0) {
resto = numeroDecimal% 16;
if (resto >= 10)
hexNumber = letras[resto - 10] + numeroHex;
else
numeroHex= resto + numeroHex;
numeroDecimal /= 16;
}
return numeroHex;
}
public static void main(String[] args)
{
BinarioAHexadecimal binarioAHex = new BinarioAHexadecimal();
long numero =11000011;
System.out.println("Entrada: "+numero);
System.out.println("Salida : " +binarioAHex.decimalAHexadecimal(numero));
}
}
Más algoritmos matemáticos
| Algoritmo | Descripción |
| Sucesión de Fibonacci | Aprende a programar en Java la famosa sucesión de Fibonacci |
| Números Primos | Algoritmo de cálculo en Java para saber si un número es primo |
| Factorial | Cálculo del factorial de un número en Java |
| Número Pi | Aprende a calcular Pi en Java |
| Número e | Número e, algoritmo en Java |
| Raíz cuadrada | Desarrollo en Java del algoritmo raíz cuadrada |
| Números Perfectos | Determina en Java si un número es “perfecto” |
| Conversión binario – hexadecimal | Conversor binario a hexadecimal en Java |
| Generación de números aleatorios | Generar números aleatorios entre 1 y 100, ejemplos prácticos |
| Matrices en Java | Crea una matriz en Java y manéjala con soltura |
| Calculadora en Java | Ejemplo sencillo para montar una calculadora en java con interfaz básica |
Recursos básicos Java
| Asunto | Descripción |
| Tutorial básico y sintaxis | Tutorial básico Java y sintaxis. Aprende los fundamentos del lenguaje. |
| Hilos (Threads) | Aprende a manejar hilos y las cuestiones básicas de la concurrencia |
| Funciones Lambda | Aquí te enseñamos las nociones más importantes para arrancas con funciones lambda |
| Palíndromos | Programa de ejemplo para el uso de palíndromos en Java. |
| Máquina Virtual de Java | Te explicamos el funcionamiento de la máquina virtual de java (Java Virtual Machine – JVM) |
| JDK, JRE y JVM | Diferencias entre el JDK, JRE y JVM. |
| Mejores libros Java en Español | Hazte con los mejores libros Java para aprender paso a paso y profundizar en las mejores prácticas |
| TensorFlow | Manejo del API de TensorFlow para la construcción de grafos de operaciones y su ejecución |
| Tutorial Log4j | Tutorial para el manejo de Log4j, herramienta ágil y flexible para la gestión de Logs en Java |
| Java Security | Entiende y aplica las posibilidades que da Java para mantener la seguridad |
| Tutorial JConsole | Aprende los conceptos básicos de monitorización de procesos Java con JConsole |
| JavaFX | Tutorial de JavaFX, librería gráfica moderna para construcción de GUIs en móvil, escritorio y web. |
| Estructuras de datos en Java | Explicación y ejemplos de las estructuras de datos más importantes: listas, pila, cola, arbol. |
| Javaapi | Conjunto de clases, interfaces, métodos y paquetes que forman parte de la plataforma Java estándar |
| Algoritmo Huffman | Método eficiente para codificar datos, asignando códigos más cortos a los caracteres más frecuentes |