Convertir des nombres décimaux en binaire

Comprendre comment convertir des nombres décimaux (ceux que nous utilisons au quotidien) en nombres binaires (utilisés par les ordinateurs) est une compétence fondamentale en informatique. Dans le système binaire, chaque position de chiffre représente une puissance de deux précise. Imaginez un nombre binaire comme un moyen d’indiquer quelles puissances de deux sont nécessaires pour que leur somme corresponde au nombre donné.
Nombre en base 10
128
64
32
16
8
4
2
1
Somme
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
Chaque 1 dans la représentation binaire indique que la puissance de deux correspondante fait partie de la somme, tandis que chaque 0 indique qu’elle ne l’est pas. L’avantage du système binaire réside dans sa simplicité et son unicité.
💡
Chaque nombre possède une et une seule représentation binaire, formée par la somme de puissances de deux distinctes.

Trouver le bit le plus à droite

Pour commencer, voyons comment déterminer le bit le plus à droite dans la représentation binaire d’un nombre. Dans le système décimal, pour obtenir le dernier chiffre d’un nombre, on prend simplement le reste de la division par 10 (souvent noté % 10 en programmation). De la même manière, en binaire, le bit le plus à droite se trouve en prenant le reste de la division par 2, soit % 2. Cela signifie aussi que ce bit vaut toujours 1 pour les nombres impairs et 0 pour les nombres pairs.
Par exemple:
  • Pour 114, le bit le plus à droite vaut 0, car 114 % 2 = 0.
  • Pour 13, ce bit vaut 1, car 13 % 2 = 1.

Décalage d’un nombre binaire

Une fois que nous avons trouvé le bit le plus à droite, l’étape suivante consiste à décaler tout le nombre binaire d’une position vers la droite. Cette opération équivaut à effectuer une division entière par 2 (souvent notée / 2 ou // 2 en Python). Cela enlève le bit le plus à droite, et le bit suivant devient alors le nouveau bit le plus à droite.
  • Décaler 114 () vers la droite donne , soit 114 / 2 = 57 en base 10.
  • Décaler 13 () vers la droite donne , soit 13 / 2 = 6 en base 10.

L’algorithme de conversion

Grâce à ces deux opérations (trouver le bit le plus à droite et décaler le nombre), nous pouvons établir un algorithme simple pour convertir un nombre décimal en binaire :
  1. Initialiser une chaîne vide pour stocker la représentation binaire.
  1. Tant que le nombre est supérieur à 0 :
      • Trouver le bit le plus à droite en prenant le reste de la division par 2.
      • Insérer ce bit à gauche de la chaîne binaire.
      • Diviser le nombre par 2 (division entière) pour le décaler vers la droite.
  1. Renvoyer la chaîne binaire si elle n’est pas vide, et 0 sinon.
En utilisant cet algorithme, vous pouvez convertir n’importe quel nombre en base 10 dans sa représentation binaire unique.

Implémentation minimale

b, d = '101001101', 0   # nombre binaire et nombre décimal
power = 1               # Puissance actuelle de 2 (1, 2, 4, 8, 16, ...)

for bi in b[::-1]:      # On parcourt du bit le moins significatif au plus significatif
    d += int(bi) * power
    power *= 2

print(d)
binary → decimal conversion
b, d = '', 5234         # nombre binaire et nombre décimal

while d > 0:            # Tant qu'il reste des bits à traiter
    b = str(d % 2) + b  # Insérer le bit à gauche de la chaîne
    d //= 2             # Décaler le nombre vers la droite

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