EXERCICE 3 : CONVERSIONS BINAIRE-DECIMALE et DECIMALE-BINAIRE
Dans cet exercice, il s'agit d'écrire un programme permettent de convertir un nombre binaire en base 10 et inversement.
Les trois parties sont indépendantes.
Première partie : conversion de binaire en base 10
1. Afficher le reste et le quotient de la division euclidienne par 10 de : 17, 320 et 110001
2. Écrire une fonction chiffres ayant pour paramètre un nombre entier x positif et renvoyant la liste de ses chiffres.
Exemple : Liste_chiffres(32) renverra la liste:[3,2].
Tester la fonction sur les entiers 320 et 11001.
3. Écrire une fonction decimale, ayant pour paramètre un nombre entier positif x écrit en binaire et renvoyant sa valeur en
base 10.
Exemple : decimale(10) renverra 2.
4. Tester la fonction pour les nombres en binaire : 10, 101 et 11001.
Deuxième partie : conversion de la base 10 en binaire, méthode 1
Cette exercice utilise deux méthodes indépendantes permettant de convertir un nombre entier positif de la base 10 en base
2.
5. L’écriture binaire d’un nombre pair se termine par un 0, et celle d’un nombre impair par un 1. En s’inspirant de ce qui a
été fait pour écrire la fonction chiffres, écrire une fonction binaire1, ayant pour paramètre un entier positif x et renvoyant la
liste de ses chiffres en binaire.
Exemple : binaire1(2) doit renvoyer la liste [1,0].
6. Tester la fonction avec les nombres 2 et121 .
Troisième partie : conversion de la base 10 en binaire, méthode 2
7. Écrire une fonction exposant_max , ayant pour paramètre un entier positif x et renvoyant l’exposant n de la plus grande
puissance de 2 tel que
.
Exemple : exposant_max(5) doit renvoyer 2 , car 2² = 4 < 5 , (mais pas 3 car 23 = 8 > 5).De même, exposant_max(16) doit
renvoyer 4. Tester la fonction avec les nombres 5 et 16.
8. Écrire une fonction liste_exp(x), ayant pour paramètre un entier positif x et renvoyant la liste des exposants de 2 figurant
dans l’écriture de x.
Exemple :
, donc liste_exp(17) doit renvoyer la liste [4,0].
9. Tester la fonction avec les nombres 16 et 17.
10. En utilisant la fonction liste_exp(x), écrire une fonction binaire2 , ayant pour paramètre un entier positif x et renvoyant
la liste de ses chiffres en binaire.
Exemples : binaire2(2) doit renvoyer la liste [1,0] et binaire2(17) doit renvoyer la liste [1,0,0,0,1].
4. Tester avec les nombres 2, 17 et 121.
Annexe
A propos de la base 2:
La valeur d'un nombre écrit en base 2 est obtenue par somme de puissances de 2. Par exemple, le nombre dont la
représentation binaire est 100101 vaut 1×25 +0×24 +0×23 +1×22 +0×21 +1×2 0 =45.
Instructions sur la manipulation des listes en Python :
• concaténation de 2 listes : L = L + [3] « ajoute » 3 à la fin de la liste L, L = [3] + L ajoute 3 au début de liste L.
• len(L) permet d'accéder au nombre d’éléments de la liste L .
• L=[] permet de construire une liste vide.
La division euclidienne en Python :
• x //y permet d'obtenir le quotient de la division euclidienne de x par y
• x%y permet d'obtenir le reste de la division euclidienne de x par y.
2