Python: convertir binario a decimal

En este ejercicio de programación y algoritmos en Python te voy a enseñar cómo convertir un número binario (base 2) a un número decimal (base 10) usando algoritmos propios, es decir, vamos a resolver el ejercicio usando un algoritmo manual, y no una función ya integrada en el lenguaje.

Verás que será realmente sencillo hacer la conversión numérica de binario a decimal en Python, pues básicamente es hacer multiplicaciones, elevar un número e ir sumando.

Al final vamos a programar una función que, dado un número en base 2, regrese el número en base 10.

Explicación del algoritmo

Lo que vamos a hacer es recorrer la cadena que representa al número binario de derecha a izquierda, para ello vamos a invertirla para recorrerla de manera inversa.

Dentro de cada paso del ciclo que recorre la cadena, vamos a elevar 2 (la base, ya que es binario) a la posición en la que vayamos, y vamos a guardar el resultado como el multiplicador. Es decir, en el primer paso, el número 2 se va a elevar a 0, en el segundo a 1, etcétera.

Más tarde multiplicamos el dígito actual (0 o 1) por el multiplicador, y el resultado lo vamos a ir almacenando en la variable decimal, que al final tendrá el número en base 10. Todo esto usando Python.

Código fuente: conversión binario a decimal

Veamos entonces la función. La misma recibe un binario y devuelve un decimal:

"""
    https://parzibyte.me/blog
"""
def binario_a_decimal(binario):
    posicion = 0
    decimal = 0
    # Invertir la cadena porque debemos recorrerla de derecha a izquierda
    # https://parzibyte.me/blog/2019/06/26/invertir-cadena-python/
    binario = binario[::-1]
    for digito in binario:
        # Elevar 2 a la posición actual
        multiplicador = 2**posicion
        decimal += int(digito) * multiplicador
        posicion += 1
    return decimal

Fíjate en que el paso del ciclo o mejor dicho la posición en la que vamos es declarada en la línea 5, y en la línea 6 se declara el número decimal que vamos a devolver.

Después invertimos la cadena en la línea 9, la recorremos y elevamos el 2 a la posición en la línea 12.

Finalmente aumentamos el valor en decimal y también la posición, para que al terminar el ciclo se regrese el valor decimal.

Poniendo todo junto

En mi caso he probado la función con el siguiente código:

"""
    https://parzibyte.me/blog
"""
def binario_a_decimal(binario):
    posicion = 0
    decimal = 0
    # Invertir la cadena porque debemos recorrerla de derecha a izquierda
    # https://parzibyte.me/blog/2019/06/26/invertir-cadena-python/
    binario = binario[::-1]
    for digito in binario:
        # Elevar 2 a la posición actual
        multiplicador = 2**posicion
        decimal += int(digito) * multiplicador
        posicion += 1
    return decimal


# Probar
binario = input("Ingresa un número binario: ")
decimal = binario_a_decimal(binario)
print(decimal)

La he probado varias veces y he comparado con mi conversor de números online; los resultados son correctos:

Convertir binario a decimal en Python – Ejecución del programa

Si el post te gustó, te invito a leer más sobre Python.

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.

Dejar un comentario

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