Représentation des flottants Informatique pour tous

publicité
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
Téléchargement