3.5.1 Binario a Decimal – Algoritmo Básico en Python

Referencia: https://es.wikipedia.org/wiki/Sistema_binario

Base Numérica Binaria

Los números binarios se conforman con los símbolos 0 y 1, que se combinan para representar cualquier número. Una etiqueta de un producto en código de barras es la representación binaria del número que identifica el producto.

Para representar números superiores a 1 dígito, se aplica un método semejante al de formación de números decimales, combinando ordenadamente los símbolos. Se repiten las combinaciones de dígitos anteriores y se le añade un dígito para continuar la numeración

Decimal Binaria
0 0
1 1
2 10
3 11
4 100
5 101
6 110
7 111
8 1000
9 1001
10 1010
11 1011
12 1100

En el sistema binario se utiliza la ponderación por posición de dígito en la misma forma que en la numeración decimal, por ejemplo:

  • La posición más a la derecha es menos significativa y de menor ponderación o peso: 20
  • La siguiente posición hacia la izquierda tiene un peso equivalente a: 21
  • La siguiente posición a la izquierda usa un equivalente a: 23
  • Y así sucesivamente.

Se puede encontrar el valor decimal de un número binario cualquiera multiplicando el digito correspondiente por el “peso” que tiene y sumando los resultados parciales.

Referencia: Capítulo III Otros sistemas de numeración. Baldor, Aurelio (1974). Aritmética de Baldor, Guatemala. Cultural Centroamericana S.A.


Ejemplo 01

Para convertir el número binario 101 a decimal, se realizan las operaciones presentadas en la imagen:

Algoritmo de Binario a Decimal

Para realizar el algoritmo, se separa cada dígito del número binario, y luego se realiza la operación de ponderación para acumularla en el resultado final.

En la ponderación se usará un contador de posición para ser usado como el exponente de la base 2.

El algoritmo en diagrama de flujo se representará como:


Algoritmo en Python

# Binario a Decimal

binario = int(input("número en binario: "))

decimal = 0
i = 0
while (binario>0):
    digito  = binario%10
    binario = int(binario//10)
    decimal = decimal+digito*(2**i)
    i = i+1
# SALIDA
print("en decimal: ",decimal)

con los siguientes resultados:

>>> 
número en binario: 101
en decimal:  5
>>> 
número en binario: 1000
en decimal:  8
>>> 
número en binario: 111
en decimal:  7
>>>