TP flottants : correction

publicité
TP flottants : correction
1. On obtient le résultat énigmatique : 5.551115123125783e-17 .
2. En utilisant la formule pour la somme des termes d’une suite géométrique :
< 0, 000110011001100... >2 = 2−4 + 2−5 + 2−8 + 2−9 + ... =
∞
X
2−4k +
k=1
=
∞
X
k=1
∞
X
2−4k−1
k=1
∞
2−4k +
1
3
1
1 X −4k
=
2
= × 2−4 ×
2
2
1 − 2−4
10
k=1
3. D’après la question précédente, la notation scientifique en base 2 de 0,1 est :
< 1, 100110011001... >2 ×2−4
4. Si k ∈ N, le 4k + 1ème chiffre après la virgule de < 1, 100110011001... >2 est un 1 ainsi
que le 4k + 4ème. Les autres sont des 0. Comme 52 = 13 × 4, le 52ème chiffre est un 1 et
le 53ème également. Donc le 52ème chiffre est arrondi au supérieur et 0.1 est représenté
par :
−4
< 1, |10011001...10011010
{z
} >2 ×2
52
5. la notation scientifique en base 2 de 0,2 est obtenue à partir de celle de 0,1 en augmentant
l’exposant de 1 (car 0,2 = 0,1 × 2). On trouve que 0.2 est représenté par :
−3
< 1, |10011001...10011010
{z
} >2 ×2
52
6. < 1, 10011001...10011010 >2 ×2−4 est mis sous la forme < 0, 110011001...1001101 >2
×2−3 , puis :
< 0, 11001100...11001101 >2 ×2−3
+ < 1, 10011001...10011010 >2 ×2−3
= < 10, 01100110...01100111 >2 ×2−3
(0110 se répète, sauf pour le dernier bit, à cause de l’arrondi)
Enfin, le dernier résultat est mis sous forme scientifique en arrondissant :
−2
< 1, |00110011...00110100
{z
} >2 ×2
52
1
7. En utilisant l’algorithme du cours pour passer un flottant en base 2, on trouve :
0, 3 = < 0, 0100110011... >2
(où 0011 se répète infiniment)
On trouve alors que sa représentation dans python est :
−2
< 1, 00110011...00110011
|
{z
} >2 ×2
52
8. En posant la soustraction :
< 1, 00110011...00110100 >2 ×2−2
− < 1, 00110011...00110011 >2 ×2−2
−2
= < 0, 00000000...00000001
|
{z
} >2 ×2
52
= 1 × 2−54
Vérifions dans python :
On retrouve bien le résultat de la question 1 !
2
Téléchargement