En este artículo explicaré 2 maneras de convertir un número binario a un número decimal en Java; es decir, convertir de base 2 (binario) a base 10 (decimal).

El primer método es recorriendo la cadena y haciendo las operaciones que se harían manualmente; o sea que lleva más trabajo.

La segunda manera indica cómo usar un método que ya viene en la API de Java listo para convertir binario a decimal sin esfuerzo. Veremos ambas.

Binario a decimal: método fácil

Como lo dije, ya existe un método en Java que hace esto. Como queremos una gran precisión usamos el tipo de dato long para convertir números binarios aunque sean grandes.

La clase Long tiene un método estático llamado parseLong que recibe una cadena y la base de dicha cadena. Basta con llamarlo y pasarle el número binario con la base, que es 2.

Aquí la sintaxis:

long numeroDecimal = Long.parseLong(numeroBinarioComoCadena, 2);

Al final veremos algunos ejemplos.

Algoritmo para convertir binario a decimal

Explicación del algoritmo

El segundo método es un algoritmo más desarrollado. Recorremos el número binario dígito por dígito, obteniendo un 1 o un 0.

Multiplicamos ese dígito por un multiplicador (qué redundancia, lo sé) que será el resultado de elevar el 2 a una potencia dada por el índice en el que vayamos.

Por ejemplo, el número final de la derecha tiene un multiplicador de 1, el penúltimo tiene uno de 2, el antepenúltimo uno de 4 y así sucesivamente.

Si el dígito es 0, al multiplicar seguirá siendo 0; pero si es 1, entonces será el valor que va en esa posición. Al final todo eso se suma en una variable y el resultado es el número decimal.

Código fuente

El código queda así:

De igual manera se utiliza un tipo de dato long para soportar números grandes.

Probar conversión binaria a decimal

Ahora veamos a los dos métodos expuestos en acción. He creado un código en donde se prueba a ambos y se imprime el valor que regresa cada uno. Aquí está:

Si quieres probar el código en línea haz click aquí. También puedes descargarlo y probarlo en un IDE, te recomiendo NetBeans.

Lee más sobre Java en mi blog.

Estoy interesado en trabajar contigo de manera remota para llevar tu idea a la realidad, formar parte de tu equipo de desarrolladores, ayudarte con tu tarea, dar asesorías y todo lo relacionado con tecnología y programación. Contáctame para más información
No te vayas sin seguirme en Twitter, Facebook y GitHub
Si tienes dudas déjalas en un comentario, pero asegúrate de seguirme antes como agradecimiento (no te cuesta nada y me ayudas mucho)


parzibyte

He trabajado por más de 4 años en el desarrollo de software con experiencia en Java, PHP, JavaScript, HTML, Node.JS, Python, Android y Go. También he trabajado con bases de datos SQL como MySQL y SQLite, así como con bases de datos NoSQL usando MongoDB. Soy bueno utilizando algunos frameworks y herramientas como Firebase, jQuery, AngularJS, VueJS, CodeIgniter, Laravel, BulmaCSS, Bootstrap y Electron. Otros términos que conozco son: Arduino, GraphQL, API's, REST, AJAX, PouchDB, CouchDB, Experiencia de usuario, buenas prácticas de programación, Webpack, NPM, Administración de servidores y programación de scripts La plataforma en la que tengo más experiencia es la web, pero en mis ratos libres realizo unos pequeños ejercicios en C# y C. Estoy aquí para ayudarte a resolver tus problemas de programación y depuración :-)

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

A %d blogueros les gusta esto: