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