Convertir números decimales a binario

Comprender cómo convertir números decimales (los que usamos a diario) en números binarios (utilizados por las computadoras) es una habilidad fundamental en ciencias de la computación. En el sistema binario, la posición de cada dígito representa una potencia específica de dos. Imagina un número binario como una forma de indicar qué potencias de dos son necesarias para que su suma sea igual al número dado.
Número en base 10
128
64
32
16
8
4
2
1
Suma
114
0
1
1
1
0
0
1
0
114 = 64 + 32 + 16 + 2
12
0
0
0
0
1
1
0
0
12 = 8 + 4
13
0
0
0
0
1
1
0
1
13 = 8 + 4 + 1
Cada 1 en la representación binaria indica que la potencia de dos correspondiente forma parte de la suma, mientras que cada 0 indica que no lo es. La belleza del sistema binario radica en su simplicidad y en su carácter único.
💡
Cada número tiene una y solo una representación binaria, compuesta por la suma de potencias distintas de dos.

Cómo encontrar el bit más a la derecha

Para comenzar, analicemos cómo encontrar el bit más a la derecha en la representación binaria de un número. En el sistema decimal, si queremos averiguar el último dígito de un número, podemos tomar el residuo al dividirlo entre 10 (a menudo se denota como % 10 en los lenguajes de programación). De manera similar, en binario, el bit más a la derecha se obtiene al tomar el residuo al dividir el número entre 2, o % 2. Esto también significa que el bit más a la derecha siempre será 1 en los números impares y 0 en los números pares.
Por ejemplo:
  • Para 114, su bit más a la derecha es 0, ya que 114 % 2 = 0.
  • Para 13, su bit más a la derecha es 1, pues 13 % 2 = 1.

Desplazando un número binario

Una vez que hemos encontrado el bit más a la derecha, el siguiente paso es desplazar todo el número binario una posición hacia la derecha. Esta operación equivale a la división entera del número entre 2 (a menudo se denota como / 2 en la mayoría de lenguajes de programación o // 2 en Python). Con este desplazamiento, se elimina el bit más a la derecha y el siguiente bit pasa a ocupar esa posición.
  • Al desplazar 114 ( en binario) hacia la derecha, obtenemos , que equivale a 114 / 2 = 57 en base 10.
  • Al desplazar 13 ( en binario) hacia la derecha, obtenemos , que corresponde a 13 / 2 = 6 en base 10.

El algoritmo de conversión

Con estas dos operaciones (encontrar el bit más a la derecha y desplazar el número), podemos diseñar un algoritmo sencillo para convertir un número decimal a binario:
  1. Inicializa una cadena vacía para almacenar la representación binaria.
  1. Mientras el número sea mayor que 0:
      • Calcula el bit más a la derecha tomando el residuo al dividir el número entre 2.
      • Agrega este bit a la izquierda de la cadena binaria.
      • Divide el número por 2 (división entera) para desplazarlo a la derecha.
  1. Devuelve la cadena binaria si no está vacía, o 0 en caso contrario.
Usando este algoritmo, puedes convertir cualquier número base 10 a su representación binaria única.

Implementación mínima

b, d = '101001101', 0   # números binarios y decimales
power = 1               # Potencia actual de 2 (1, 2, 4, 8, 16, ...)

for bi in b[::-1]:      # Recorre desde el bit menos significativo hasta el más significativo
    d += int(bi) * power
    power *= 2

print(d)
binary → decimal conversion
b, d = '', 5234         # números binarios y decimales

while d > 0:            # Mientras queden bits por procesar
    b = str(d % 2) + b  # Inserta el bit a la izquierda de la cadena
    d //= 2             # Desplaza el número hacia la derecha

print(b if b != '' else 0)
decimal → binary conversion
 
To check your solution you need to sign in
Sign in to continue