©Arnaud de Saint Julien -Informatique- MPSI Lycée La Merci 2017-2018 1
Feuille d’exercices : codage des nombres
On pourra consulter avec profit le site suivanthttp://www.binaryconvert.com/index.html.
Représentation des entiers relatifs
Exercice 1 (En vrac) On suppose que les entiers relatifs sont codés en complément à deux.
1. Quels entiers relatifs peut-on représenter avec des mots de 8 bits ?nbits ? 2. Donner les mots binaires de 8 bits qui représentent les entiers
0,1,2,−1,−2,127,126,−127,−128.
3. Quels sont les entiers relatifs dont la représentation binaire sur 8 bits est : 0000 0000, 1000 0000, 1111 1111, 0111 1111, 0101 0001, 1000 0001
Exercice 2 (Opérations) On suppose que les entiers relatifs sont codés en complément à deux sur 64 bits.
On posea= 263−1.
1. Donner le mot de 64 bits qui le représente.
2. Calculerm= 2a mod 264et donner l’entier relatif représenté par le mot m.
3. En déduire l’entier renvoyé comme résultat de l’opération 2∗a.
4. Vérifier à l’aide du module numpy import numpy as np
a =np.array(2**63-1) print(2*a)
5. On poseb=−263. Quel entier est renvoyé par 2∗b? 6. On posec= 263−4. Quel entier est renvoyé parc+ 6 ?
Représentation des nombres flottants et norme IEEE-754
On suppose dans cette section que les nombres flottants sont codés en 64 bits (on dit parfois double précision) selon la norme IEEE-754, ce qui est le cas de Python 3 ou de Scilab.
Exercice 3 (En vrac)
1. Donner la représentation flottante des nombres suivants : 9,−9,1,5
8,2−53,0,1 + 2−52,1 + 252,10400 2. Quel est le plus grand nombre flottant ?
3. Quel est le plus petit nombre flottant strictement positif ?
4. Quel est le plus petit nombre flottantε >1 ? Quel est le rapport avec le nombre de chiffres significatifs ? 5. Prévoir les tests d’égalité entre les nombres : 1,1 + 10−15,1 + 10−17.
6. Quel est le plus petit (resp. grand) nombre flottant de la forme 2−n (resp. 2n) avecn∈N?
7. Donner un exemple d’entier relatif codé sur 64 bits qui n’est pas représentable par un nombre flottant en 64 bits.
Exercice 4 (Une suite convergente ?) On considère la suiteudéfinie parun= (1 +n1)n. Donner la limite deu, puis prévoir et expliquer les résultats des deux scripts suivants :
©Arnaud de Saint Julien -Informatique- MPSI Lycée La Merci 2017-2018 2
for k in range(20):
a = (1+ 10**-k)**(10**k) print(a,k)
for k in range(40,60):
a = (1+ 2**-k)**(2**k) print(a,k)
Pour terminer
Exercice 5 (Changement de bases)
1. Soit l’entier n = 1234. Quel est le quotient, noté q, dans la division euclidienne de n par 6 ? Que se passe-t-il si l’on recommence la division par 6 à partir deq?
2. En s’inspirant de la démarche ci-dessus, écrire une fonction nvelleBasequi prend en argument un entier naturelnet un entierb∈J2,10Ket qui renvoie une chaîne de caractères constitué des chiffres denen base b. Par exemplenvelleBase(143,5)renverra ’1033’ car 143 = 1×53+ 3×51+ 3×1.
Exercice 6 (Nombres flottants dénormalisés) On considère que les nombres flottants sont codés selon la norme IEE 754 avec 64 bits.
1. Quel est le plus petit nombre flottant strictement positif de la forme 2−n avecn ∈N? Expliquer votre réponse.
2. On considère le script suivant : n = 1
while n>0:
n = n/2
(a) Justifier la terminaison de ce script et prévoir le nombre exact d’itérations.
(b) Modifier le script de façon à ce qu’il affiche le nombre d’itérations.
(c) Exécuter le script et exprimer votre incompréhension.
3. Nous avons vu que dans le codage des nombres flottants, le mot représentant E l’exposant décalé ne pouvait être égal à 0. Il existe en fait des nombres flottants dits «dénormalisés», où E = 0. Leur valeur est (0.mantisse)2×2−1023+1 au lieu de (1.mantisse)2×2−1023pour un flottant normalisé. Cela permet de représenter des nombres flottants encore plus petits.
(a) Quel est le plus petit nombre flottant dénormalisé strictement positif de la forme 2−n avecn∈N? Expliquer votre réponse.
(b) Faire le lien avec le script précédent et exprimer votre enthousiasme.
©Arnaud de Saint Julien -Informatique- MPSI Lycée La Merci 2017-2018 3
Compléments plutôt mathématiques
Exercice 7 (Ecriture décimale et binaire des rationnels)
1. Donner l’écriture décimale de 458 et 577. Ces nombres sont-ils décimaux ? 2. Quel est le rationnel dont le développement décimal est 0.232323. . .? 3. Donner l’écriture binaire des nombres 58, 1816, 1 + 263, 5 + 2−12. 4. Donner le développement binaire de 101. Est-ce un nombre dyadique ? 5. Déterminer les rationnels dont les développements binaires sont :
0.0011111. . . et 0.110110110. . . . Exercice 8 (Euler problem 26)
A unit fraction contains 1 in the numerator.
The decimal representation of the unit fractions with denominators 2 to 10 are given:
1/2 = 0.5 1/3 = 0.(3) 1/4 = 0.25 1/5 = 0.2 1/6 = 0.1(6) 1/7 = 0.(142857) 1/8 = 0.125 1/9 = 0.(1) 1/10 = 0.1
Where 0.1(6) means 0.166666..., and has a 1-digit recurring cycle.
It can be seen that 1/7 has a 6-digit recurring cycle.
Find the value of d < 1000 for which 1/d contains the longest recurring cycle in its decimal fraction part.