Représentation des flottants Informatique pour tous Informatique pour tous Représentation des flottants Flottants Question Comment représenter les nombres à virgules ? Informatique pour tous Représentation des flottants Flottants Question Comment représenter les nombres à virgules ? Par définition, 0,1415 = 1 × 10−1 + 4 × 10−2 + 1 × 10−3 + 5 × 10−4 . Informatique pour tous Représentation des flottants Flottants Question Comment représenter les nombres à virgules ? Par définition, 0,1415 = 1 × 10−1 + 4 × 10−2 + 1 × 10−3 + 5 × 10−4 . Définition : développement en base b < 0, x−1 x−2 ... >b = x−1 × b −1 + x−2 × b −2 + .... Informatique pour tous Représentation des flottants Flottants Question Comment représenter les nombres à virgules ? Par définition, 0,1415 = 1 × 10−1 + 4 × 10−2 + 1 × 10−3 + 5 × 10−4 . Définition : développement en base b < 0, x−1 x−2 ... >b = x−1 × b −1 + x−2 × b −2 + .... Exemple : < 0, 101 >2 = Informatique pour tous Représentation des flottants Flottants Question Comment représenter les nombres à virgules ? Par définition, 0,1415 = 1 × 10−1 + 4 × 10−2 + 1 × 10−3 + 5 × 10−4 . Définition : développement en base b < 0, x−1 x−2 ... >b = x−1 × b −1 + x−2 × b −2 + .... Exemple : < 0, 101 >2 = Informatique pour tous 1 2 + 1 23 = 0, 625 (= < 0, 625 >10 ) Représentation des flottants Flottants Question Comment représenter les nombres à virgules ? Par définition, 0,1415 = 1 × 10−1 + 4 × 10−2 + 1 × 10−3 + 5 × 10−4 . Définition : développement en base b < 0, x−1 x−2 ... >b = x−1 × b −1 + x−2 × b −2 + .... Exemple : < 0, 101 >2 = 1 2 + 1 23 = 0, 625 (= < 0, 625 >10 ) < 1, 01010101... >2 = Informatique pour tous Représentation des flottants Flottants Question Comment représenter les nombres à virgules ? Par définition, 0,1415 = 1 × 10−1 + 4 × 10−2 + 1 × 10−3 + 5 × 10−4 . Définition : développement en base b < 0, x−1 x−2 ... >b = x−1 × b −1 + x−2 × b −2 + .... 1 2 + 1 23 = 0, 625 (= < 0, 625 >10 ) < 1, 01010101... >2 = 1 + 1 22 + 1 24 Exemple : < 0, 101 >2 = Informatique pour tous + 1 26 ... = 1 40 + 1 4 + 1 42 + Représentation des flottants 1 43 ...= Flottants Question Comment représenter les nombres à virgules ? Par définition, 0,1415 = 1 × 10−1 + 4 × 10−2 + 1 × 10−3 + 5 × 10−4 . Définition : développement en base b < 0, x−1 x−2 ... >b = x−1 × b −1 + x−2 × b −2 + .... 1 2 + 1 23 = 0, 625 (= < 0, 625 >10 ) < 1, 01010101... >2 = 1 + 1 = 43 . 1− 1 1 22 + 1 24 Exemple : < 0, 101 >2 = + 1 26 ... = 1 40 + 1 4 + 1 42 + 4 Informatique pour tous Représentation des flottants 1 43 ...= Flottants Question Comment passer d’un développement de 0 < x < 1 en base 10 à un développement dans une autre base b ? On veut écrire x sous la forme x =< 0, x−1 x−2 x−3 ... >b . Informatique pour tous Représentation des flottants Flottants Question Comment passer d’un développement de 0 < x < 1 en base 10 à un développement dans une autre base b ? On veut écrire x sous la forme x =< 0, x−1 x−2 x−3 ... >b . 1 x×b = Informatique pour tous Représentation des flottants Flottants Question Comment passer d’un développement de 0 < x < 1 en base 10 à un développement dans une autre base b ? On veut écrire x sous la forme x =< 0, x−1 x−2 x−3 ... >b . 1 x × b = < x−1 , x−2 x−3 ... >b , donc x−1 = Informatique pour tous Représentation des flottants Flottants Question Comment passer d’un développement de 0 < x < 1 en base 10 à un développement dans une autre base b ? On veut écrire x sous la forme x =< 0, x−1 x−2 x−3 ... >b . 1 x × b = < x−1 , x−2 x−3 ... >b , donc x−1 = bx × bc. 2 Pour trouver x−2 , on refait la même chose sur x × b − x−1 = < 0, x−2 x−3 ... >b . 3 ... Informatique pour tous Représentation des flottants Flottants Question Comment passer d’un développement de 0 < x < 1 en base 10 à un développement dans une autre base b ? On veut écrire x sous la forme x =< 0, x−1 x−2 x−3 ... >b . 1 x × b = < x−1 , x−2 x−3 ... >b , donc x−1 = bx × bc. 2 Pour trouver x−2 , on refait la même chose sur x × b − x−1 = < 0, x−2 x−3 ... >b . 3 ... Exemples : 0,625 = < 0, ? >2 Informatique pour tous Représentation des flottants Flottants Question Comment passer d’un développement de 0 < x < 1 en base 10 à un développement dans une autre base b ? On veut écrire x sous la forme x =< 0, x−1 x−2 x−3 ... >b . 1 x × b = < x−1 , x−2 x−3 ... >b , donc x−1 = bx × bc. 2 Pour trouver x−2 , on refait la même chose sur x × b − x−1 = < 0, x−2 x−3 ... >b . 3 ... Exemples : 0,625 = < 0, 1? >2 1 0,625 × 2 = 1, 25 Informatique pour tous Représentation des flottants Flottants Question Comment passer d’un développement de 0 < x < 1 en base 10 à un développement dans une autre base b ? On veut écrire x sous la forme x =< 0, x−1 x−2 x−3 ... >b . 1 x × b = < x−1 , x−2 x−3 ... >b , donc x−1 = bx × bc. 2 Pour trouver x−2 , on refait la même chose sur x × b − x−1 = < 0, x−2 x−3 ... >b . 3 ... Exemples : 0,625 = < 0, 10? >2 1 0,625 × 2 = 1, 25 2 0, 25 × 2 = 0, 5 Informatique pour tous Représentation des flottants Flottants Question Comment passer d’un développement de 0 < x < 1 en base 10 à un développement dans une autre base b ? On veut écrire x sous la forme x =< 0, x−1 x−2 x−3 ... >b . 1 x × b = < x−1 , x−2 x−3 ... >b , donc x−1 = bx × bc. 2 Pour trouver x−2 , on refait la même chose sur x × b − x−1 = < 0, x−2 x−3 ... >b . 3 ... Exemples : 0,625 = < 0, 101 >2 1 0,625 × 2 = 1, 25 2 0, 25 × 2 = 0, 5 3 0, 5 × 2 = 1 Informatique pour tous Représentation des flottants Flottants Question Écrire un algorithme python pour passer d’un développement de 0 < x < 1 en base 10 à la base 2. Informatique pour tous Représentation des flottants Flottants Question Écrire un algorithme python pour passer d’un développement de 0 < x < 1 en base 10 à la base 2. Informatique pour tous Représentation des flottants Flottants Ensuite, pour passer un flottant de la base 10 à la base 2, on convertit sa partie entière et sa partie fractionnaire. Informatique pour tous Représentation des flottants Flottants Question Comment stocker un flottant en mémoire ? Informatique pour tous Représentation des flottants Flottants Question Comment stocker un flottant en mémoire ? On utilise la notation scientifique : 932, 134 = 9, 32134 × 102 < 1001, 011 >2 = Informatique pour tous Représentation des flottants Flottants Question Comment stocker un flottant en mémoire ? On utilise la notation scientifique : 932, 134 = 9, 32134 × 102 23 < 1001, 011 >2 = 1, 001011 | {z } × |{z} mantisse Informatique pour tous 2exposant Représentation des flottants Norme IEEE-754 Python code les flottants sur 64 bits : 1 1 bit pour le signe (0 si ≥ 0, 1 si < 0) 2 11 bits pour l’exposant : de −210 + 1 = −1023 à 210 = 1024 3 52 bits (chiffres significatifs) pour l’écriture en base 2 de la mantisse : de 0, 00...00 | {z } à 0, 11...11 | {z } 52 Informatique pour tous 52 Représentation des flottants Norme IEEE-754 Python code les flottants sur 64 bits : 1 1 bit pour le signe (0 si ≥ 0, 1 si < 0) 2 11 bits pour l’exposant : de −210 + 1 = −1023 à 210 = 1024 3 52 bits (chiffres significatifs) pour l’écriture en base 2 de la mantisse : de 0, 00...00 | {z } à 0, 11...11 | {z } 52 52 Exemple : 1 0 ... 0 1 1 0 ... 0 1 1 0 représente : Informatique pour tous Représentation des flottants Norme IEEE-754 Python code les flottants sur 64 bits : 1 1 bit pour le signe (0 si ≥ 0, 1 si < 0) 2 11 bits pour l’exposant : de −210 + 1 = −1023 à 210 = 1024 3 52 bits (chiffres significatifs) pour l’écriture en base 2 de la mantisse : de 0, 00...00 | {z } à 0, 11...11 | {z } 52 52 Exemple : 1 0 ... 0 1 1 0 ... 0 1 1 0 représente : - 1, 6 × 2? Informatique pour tous Représentation des flottants Flottants B Ainsi, il peut y avoir dépassement de float dans python : Informatique pour tous Représentation des flottants Flottants B Seul 52 chiffres significatifs sont stockés, on peut avoir des problèmes d’arrondis : Informatique pour tous Représentation des flottants Flottants B Seul 52 chiffres significatifs sont stockés, on peut avoir des problèmes d’arrondis : Question Que fait l’algorithme suivant ? Informatique pour tous Représentation des flottants