CONVERSION D`UN NOMBRE ENTIER EN ÉCRITURE BINAIRE

publicité
Lycée Auguste Brizeux
Travail donné le 24 septembre 2014
PCSI
Informatique
CONVERSION D'UN NOMBRE ENTIER EN ÉCRITURE BINAIRE
Travail demandé
. Écrire un programme en Python demandant à l'utilisateur un entier n ∈ N, et renvoyant l'écriture
binaire de n, c'est-à-dire la liste des coecients a0 , ... , ap (tous étant égaux à 0 ou 1) permettant
d'écrire n = a0 × 20 + a1 × 21 + · · · + ap−1 2p−1 + ap 2p .
. Ce programme devra s'intituler NOM_conversion.py (où NOM doit être remplacé par le nom de l'auteur
du programme !), et être déposé sur la plate-forme Moodle dédiée avant mardi 30 septembre à 22h.
Quelques conseils...
1. Principe général
Etant donné n ∈ N, pour obtenir l'écriture binaire de n, il s'agit de trouver des coecients a0 , ... , ap (tous étant
égaux à 0 ou 1) permettant d'écrire n = a0 × 20 + a1 × 21 + · · · + ap−1 2p−1 + ap 2p .
Pour cela, on doit décomposer cet entier n en puissances de 2.
Par exemple
Dans le cas où n = 44 :
~ on commence par chercher la plus grande puissance de 2 contenue dans 44 : il s'agit de 25 = 32 ;
~ on considère ensuite 44 − 25 = 12, et on réitère le procédé...
Cette démarche permet d'écrire 44 sous forme de somme de puissances de 2 :
44 = 25 + 23 + 22 = 1 × 25 + 0 × 24 + 1 × 23 + 1 × 22 + 0 × 21 + 0 × 20
Il ne reste alors plus qu'à donner l'écriture de 44 en binaire : 101100.
L'algorithme de conversion à concevoir devra donc contenir, notamment :
un sous-algorithme permettant de calculer la plus grande puissance de 2 inférieure à un entier n donné
un sous-algorithme construisant la liste des exposants de 2 gurant dans l'écriture de n en binaire
,→ par exemple, si n = 44, on veut construire la liste [5, 3, 2]
(ce sous-algorithme pourra faire intervenir le précédent)
un sous-algorithme permettant de convertir la liste des exposants de 2 considérée ci-dessus en liste de 0 et
de 1 correspondant à l'écriture binaire de n
,→ par exemple, si n = 44, la liste [5, 3, 2] doit permettre d'obtenir, à la n, [1, 0, 1, 1, 0, 0]
2. Quelques manipulations de listes en Python
Les manipulations de listes en Python feront l'objet d'un travail plus approfondi ultérieurement.
Néanmoins, il est, ici, utile de savoir :
déclarer une liste vide : liste=[ ] ;
concaténer deux listes liste_1 et liste_2 : liste_1+liste_2 est la liste constituée des éléments de liste_1
suivis de ceux de liste_2 ;
,→ par exemple [1,-5,3]+[2,-2] est la liste [1,-5,3,2,-2] ;
calculer la longueur d'une liste : len(L) donne le nombre d'objets gurant dans la liste L.
3. Algorithmique et programmation
Avant de se confronter à Python, il ne faut pas négliger la phase de conception de l'algorithme :
cette partie du travail ne nécessite aucun
ordinateur !
:::::::::::::::
Pour rendre un programme facile à comprendre, corriger et modier, de nombreux commentaires
doivent y gurer.
La qualité première d'un programme est de fonctionner :
on vériera donc que le programme obtenu parvient au moins à s'exécuter sans erreur.
Pour s'assurer qu'un programme apporte la réponse souhaitée, il faudra le tester avec plusieurs
données en entrée.
,→ Ici, 44, 100, 13 peuvent servir de cobayes .
Téléchargement