Vous êtes sur la page 1sur 1

Algorithme de conversion d’un entier naturel en binaire

EXERCICE 1 (Tester dans le Shell...)


...Les instructions suivantes (et les comprendre !)

Python 3.8.6 (tags/v3.8.6:db45529, Sep 23 2022, 15:52:53)


[MSC v.1927 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>> bin(45)
'0b101101'
>>> 0b101101
45
>>> hex(45)
'0x2d'
>>> 0x2d
45
>>> int("2d", 16)
45
>>>

EXERCICE 2 (Conversion d’un entier naturel en binaire)


Voici le guide :

1. Demander à l’utilisateur de saisir un entier positif et stocker sa réponse dans une variable n.
C’est le nombre à convertir en binaire.

2. Créer une chaîne de caractère b ne contenant aucun caractère (une chaîne vide). Faire éven-
tuellement une recherche internet pour la démarche à suivre.

3. On va utiliser la méthode suivante, calquée sur l’algorithme des divisions successives.


Cet algorithme s’arrête lorsque l’on trouve un quotient égal à zéro. Donc :
tant que n n’est pas égal à zéro, ajouter à la chaîne de caractère b (se poser la question "à
gauche ou à droite ?") le reste de la division euclidienne de n par 2, puis remplacer n par le
quotient entier de la division de n par 2.

4. Que se passe-t-il avec la boucle tant que précédente si l’entier n donné par l’utilisateur est
nul ?
Prévoir ce cas de figure en dehors de la boucle tant que, à l’aide d’un test.

5. Coder le tout en Python, si ce n’est pas déjà fait.

6. Tester plusieurs valeurs de n, en vérifiant avec la fonction bin(.) de Python.

EXERCICE 3 (Pour les plus rapides, pistes de réflexion sans aide de résolution : voir mini-projets)

1. Comment coder la conversion inverse (l’utilisateur donne l’écriture binaire sous forme de
chaîne de caractère et le programme affiche l’entier naturel correspondant dans la base 10) ?

2. Peut-on adapter l’exercice 2 à la base 16 ?

3. Et pour le décodage (de base 16 à base 10) ?

Vous aimerez peut-être aussi