Conversion d’un nombre binaire en décimal avec Python
Avant de parler code, essayons d’abord de comprendre ce que c’est qu’un nombre binaire et nombre décimal.
Nombre Binaire
Un nombre binaire est un nombre en base 2 c’est à dire un nombre composé que de 0 et 1.
Exemple:
10010100110 #ceci est un nombre binaire
Nombre décimal
Un nombre décimal est un nombre en base 10. Si vous avez compris le principe, c’est un nombre composé des chiffres de 0 à 9.
Exemple:
245897 #ceci est un nombre décimal
Maintenant qu’on sait c’est quoi un nombre décimal et un nombre binaire, voyons comment faire cette fameuse conversion.
Imaginons avoir le nombre 101011
à convertir en décimal c’est à dire combien vaut ce nombre en base 10 ? 🤔
Pour ce faire, nous allons nous servir de deux choses:
- donner des indices au nombre à convertir en partant de la droite ,
- nous servir de la puissance 2.
Remarque:
Les indices commence forcément à 0.
Comment mettre les indices ? 🤔
Ici, dans notre exemple nous avons representé le nombre en noir et ses indices en rouge conformément à ce qu’on avait dit à savoir en partant de la droite du nombre et les indices commencent à 0.
Comment utiliser la puissance de 2 ? 🤔
Là aussi, c’est très simple. Nous allons suivre un petit principe qui est le suivant: (2 ^ indice) * valeur
.
Exemple avec notre nombre de départ 101011
(2 ^ 5) * 1 #valeur du debut
(2 ^ 4) * 0
(2 ^ 3) * 1
(2 ^ 2) * 0
(2 ^ 1) * 1
(2 ^ 0) * 1 #valeur de fin
Si vous avez bien suivi le principe, notre nombre 101011
est de taille 6 et ce qui veut dire qu’il aura forcément 6 indices en partant de 0 à 5.
Remarque:
^
signifie ici, puissance donc 2 ^ 0 = 2 à la puissance 0
Obtentions du résultat des indices et des valeurs:
(2 ^ 5) * 1 # on obtient 32
(2 ^ 4) * 0 # on obtient 0
(2 ^ 3) * 1 # on obtient 8
(2 ^ 2) * 0 # on obtient 0
(2 ^ 1) * 1 # on obtient 2
(2 ^ 0) * 1 # on obtient 1
C’est bien beau tout ça mais comment obtenir la valeur en décimal ? 🤔
Bonne question 😉
Pour obtenir la valeur en décimal, rien de compliquer. Il suffit de faire la somme de toutes les valeurs qu’on obtient.
32 + 0 + 8 + 0 + 2 + 1 # on obtient 43
donc 101011
en binaire = 43
en décimal
Remarque:
Bien que Python dispose d’une fonction native built-in function
pour convertir des nombres binaires en décimaux, il est important de comprendre l’algorithme sous-jacent pour saisir pleinement les concepts. Laissez-moi donc vous expliquer comment fonctionne l’algorithme de conversion.
Code en Python
1. def binary_to_decimal(number: int) -> int:
2. """
3. Convertit un nombre binaire en décimal.
4.
5. Args:
6. number (int): Le nombre binaire à convertir.
7.
8. Returns:
9. int: La représentation décimale du nombre binaire.
10. """
11. values = list(str(number))
12. result = 0
13. pow_index = len(values) - 1
14. for i in values:
15. if i == "1":
16. result += pow(2, pow_index)
17. pow_index -= 1
18. return result
Ce code est une fonction Python qui convertit un nombre binaire en décimal. Voici comment cela fonctionne :
Voici une explication ligne par ligne du code :
1. def binary_to_decimal(number: int) -> int:
Définit une fonction appelée binary_to_decimal
prenant un argument number
de type int
et renvoyant une valeur de type int
.
2. """
3. Convertit un nombre binaire en décimal.
4.
5. Args:
6. number (int): Le nombre binaire à convertir.
8. Returns:
9. int: La représentation décimale du nombre binaire.
10. """
Fournit une documentation de la fonction qui explique son objectif et ses paramètres.
11. values = list(str(number))
Crée une liste values
en convertissant chaque chiffre du nombre binaire number
en caractères individuels
12. result = 0
13. pow_index = len(values) - 1
Initialise la variable result
à 0
et pow_index
à la longueur de la liste values
moins 1.
14. for i in values:
Commence une boucle for
qui itère à travers chaque valeur i
dans la liste values
.
15. if i == "1":
16. result += pow(2, pow_index)
Vérifie si la valeur i
est égale à “1”. Si oui, ajoute 2 élevé à la puissance pow_index
à la variable result
.
17. pow_index -= 1
18. return result
Décrémente pow_index
à la fin de chaque itération et, une fois la boucle terminée, renvoie la valeur calculée dans result
.
Code complet pour tester la fonction :
def binary_to_decimal(number: int) -> int:
"""
Convertit un nombre binaire en décimal.
Args:
number (int): Le nombre binaire à convertir.
Returns:
int: La représentation décimale du nombre binaire.
"""
values = list(str(number))
result = 0
pow_index = len(values) - 1
for i in values:
if i == "1":
result += pow(2, pow_index)
pow_index -= 1
return result
def main():
# Demande à l'utilisateur d'entrer un nombre binaire
number = int(input("Enter the binary number you want to convert: "))
# Affiche une bannière de résultat
print("\n\n*********************************************")
print("****************** Result *******************")
print("*********************************************")
# Appelle la fonction binary_to_decimal pour convertir le nombre
decimal_value = binary_to_decimal(number)
# Affiche le résultat de la conversion
print(f"The decimal number of {number} is {decimal_value}")
if __name__ == "__main__":
main()
Bonus:
Pour ceux qui ce demandent, on aurait aussi pu le faire nativement en utilisant la fonction int()
de python.
binaire = "101011"
decimal = int(binaire, 2)
print(decimal) # on obtient 43
Voir le code complet du programme sur Github, où vous aurez accès à une collection passionnante de ressources intitulée “MultiLang-Code-Snippets” qui regroupe une variété de petits extraits de code dans différents langages de programmation tels que Python
, Php
, C
, C++
, JavaScript
, et bien plus encore. N’hésitez pas à explorer et à contribuer à cette ressource polyglotte completement open source pour enrichir vos connaissances en programmation et découvrir de nouvelles perspectives.