P2.1 convertir de Base10 en Base2 et inversement

convertir de Base10 en Base2 et inversement

Nous avons vu comment passer de base 10 en base 2 et inversement. Nous allons maintenant coder les conversions décimal - binaire en python.
⚠️ Avant de déplier un paragraphe (titre en bleu), replier le précédent

des boucles avec des chaînes de caractères

Dans ce TP nous allons manipuler des nombres en base 10, qui seront de type int et des nombres codés en binaire, qui seront écrit comme des mots et seront de type str.

Pour décoder un nombre écrit en binaire :

Prenons un exemple : bin = "101"

  • On va lire le mot lettre par lettre, en faisant un parcours de chaine (comme les parcours de listes).
  • Pour chaque lettre, on devra la convertir en int, et la multiplier par une puissance de 2
  • Et on va faire la somme des valeurs obtenues

Exemple : (101)_2 
ightarrow 1 	imes 2^2 + 0 	imes 2^1 + 1 	imes 2^0 = 5

Ce code vous sert d'exemple, mais vous allez devoir faire des modification pour qu'il puisse convertir n'importe quel nombre donnée en chaîne binaire en sa valeur en base 10.

base 2 en base 10

Le code que vous devez complétez doit effectuer les opération suivante :

il commence par afficher le nombre en binaire (une chaine bin prédéfinie par le correcteur automatique).

Il va falloir ici faire 2 initialisations avant la boucle.

  • D'une part, la variable somme, qui va nous servir à calculer la somme des termes.
  • D'autre part la plus grande puissance de p, et pour cela il faudra se servir de len() qui permet de connaître le nombre de lettres dans le mot.

Ensuite on va itérer, sur les lettre du mot.

Dans la boucle :

  • si la lettre est 1 on ajoute 2**p
  • puis on diminue p (avant de passer à la lettre suivante)

Après la boucle on affiche le résultat.

Exercice de code
Ecrire un code qui converti un nombre écrit en binaire dans la base 10.

un nombre binaire nommé bin sera automatiquement généré.

A l'exécution de votre code, un nombre binaire bin sera généré automatiquement. Ce nombre est une chaine de caractère (par exemple : "010011" est une chaine représentant un nombre binaire).
Aide 1 Aide 2 Aide 3

base 10 en base 2 (prérequis : la boucle while)

Rapellons l'algorithme de conversion de base 10 vers la base 2 :

soit un nombre n en base 10

initialiser une variable chaine_bin à une chaine vide 
# on commence les divisions successives
# au début le dividende est n
# on arrête quand le dividende est nul
tant que dividende non nul :
      reste =  reste de la division par 2
      ajouter reste au début de chaine_bin
      quotient = quotient de la division de dividende par 2
      dividende prend la valeur de quotient
fin tant que
afficher le résultat
Cmplétez le code ci-dessous, en suivant l'algorithme des divisions successives donné ci-dessus.

Exercice de code
Complétez ce code qui converti un nombre écrit en base 10 en binaire.

A l'exécution de votre code, un nombre (en base 10) n sera généré automatiquement.

base 16 en base 10 (prérequis : les dictionnaires)

Exercice de code
Complétez ce code qui convertit un nombre écrit en base 16 en binaire.
⚠️ Ne faire cet exercice qu'après avoir étudié les dictionnaires.

Avant l'exécution de votre code, une chaine nommée hex réprésentant un nombre en base 16 sera générée automatiquement.


AUTEURS : Jean-Louis THIROT