Représentations des nombres
Résumé
Dans ce TP nous allons nous intéresser au changement de base pour les entiers. Le but est de
transcrire des entiers de la base 10 vers une base quelconque. Nous nous attarderons sur la base 16.
Puis nous ferons le lien entre nombre de chiffres et logarithme.
Écrire l’algorithme suivant sous Python.
Entrer un entier n
s←” ”/* chaine vide */
tant que n>0 faire
r←reste de la division de npar 2
n←quotient de la division de npar 2
s←écrire rà gauche de s.
fin
afficher s
Tester l’algorithme sur les entiers de 1à16.
Afficher le résultat pour les entiers de 1à100.
Que fait cet algorithme ?
Modifier le programme pour pouvoir choisir une base quelconque.
Donner l’écriture en base 12 de 1043 et de 12397. Dans le cas de la base 16 par exemple, la convention
est de noter les valeurs supérieures à 10 par les lettres A, B, C, D, E et F.
Modifier le programme pour respecter la convention de la base 16.
Pour pouvoir réutiliser un algorithme, on a l’habitude de l’écrire sous forme de fonction.
Écrire une fonction ChangeBase qui prend en argument deux entiers net bet retourne l’écriture de n
en base b. On se limitera ici et dans la suite à des bases inférieures à 16 en respectant la convention.
Consulter la page http://www.python.org/dev/peps/pep-0257/ pour insérer une documentation
dans votre fonction. Exécutez votre code puis écrire dans le terminal : ChangeBase.__doc__ (double
underscore à chaque fois).
Lorsque vous écrivez une fonction, pensez toujours à insérer une documentation pour vous souvenir de
son utilisation et pour pouvoir la réutiliser facilement.
Écrire une nouvelle fonction NombreChiffres inspirée de ChangeBase qui retourne le nombre de chiffres
dans l’écriture de nen base b.
Nous allons dans la suite mettre en évidence le lien entre le nombre de chiffres de l’expression d’un entier
ndans une base bet le rapport ln(n)
ln(b).
Créer une liste xcontenant les entiers de 1à1000. .
Créer une liste nbchiffres contenant le nombre de chiffres en base 2des entiers de 1à1000.
Créer une liste ln2 contenant le rapport ln(n)
ln(2) pour tous les entiers nde 1à1000..pour obtenir la
fonction ln, il faut
importer la librai-
rie math et utiliser
math.log.
Faire une recherche google sur python import et s’inspirer des résultats pour importer le module
pyplot de la libraire matplotlib.
Faire une recherche google sur python pyplot et s’inspirer des résultats pour afficher sur un même
graphique nbchiffres en fonction de xet ln2 en fonction de x.
Vérifier que le comportement se généralise à n’importe quelle base.
Modifier le programme de changement de base pour pouvoir communiquer avec les Shadoks.
1