Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parFlavie Chartier Modifié depuis plus de 6 années
1
Cours 2 : Représentation des nombres réels
Représentation des nombres & Conséquences Cours 2 : Représentation des nombres réels & Conséquences A la fin de ce cours, vous devez être capable de : - coder un réel en simple ou double précision, - décrire les limites de la représentation des réels sur n bits. Codage de 09,2015 en double précision
2
1 Représentation de la partie décimale d’un nombre
En notation décimale, les chiffres à gauche de la virgule représentent des entiers, des dizaines, des centaines …, ceux à droite de la virgule, des dixièmes, des centièmes, des millièmes… 3,14510 = Le codage de la partie entière (3 dans l’exemple précédent) ne pose pas de problèmes particuliers (voir cours précédent). Pour la partie décimale 0,145, il est nécessaire d’adapter la procédure.
3
1 Représentation de la partie décimale d’un nombre
Codage de la partie décimale L’expression de la partie décimale dans une nouvelle base B est obtenue par multiplication successive par B de la partie décimale du résultat précédent, l’unité obtenue correspond à un élément de la décomposition. On procède ainsi de suite jusqu’à ce qu’il n’y ait plus de partie décimale ou que le nombre de bits obtenus corresponde à la taille du mot mémoire dans lequel on stocke cette partie. Méthode 2 Méthode 1 Exemple : passage de 0,145 en base 2 + Pratique !! - imposer le nombre n de chiffres significatifs souhaités, - multiplier la partie décimale par Bn, puis coder le résultat de la partie entière. 0,145 × 2=0,29 0,29 × 2=0,58 0,58 × 2=1,16 0,16 × 2=0,32 0,32 × 2=0,64 Exemple : codage de 0,145 sur 8 bits : 0,145 × 28 ≈ 37,12 or (37)10 = ( )2 donc 0,145 ≈ (0, )2 0,64 × 2=1,28 ... ≈ donc 0,145 = (0,001001)2
4
1 Représentation de la partie décimale d’un nombre
Codage de la partie décimale Remarque : la décomposition de la partie décimale peut conduire à une suite infinie de termes. Par exemple 0,3 0,3 × 2= 0,6 0,6 × 2= 1,2 0,2 × 2= 0,4 0,4 × 2= 0,8 On écrira donc 0,3 ≈ (0, )2 0,8 × 2= 1,6 0,6 × 2= 1,2 ... Remarque : le codage sur un nombre n de bits fixes implique un nombre fini de valeurs. Les calculs seront nécessairement arrondis et comporteront des erreurs d’arrondi et de précision.
5
1 Représentation de la partie décimale d’un nombre
Nous avons vu comment écrire un réel dans n’importe quelle base et notamment la base 2. En plus des erreurs d’arrondi, le problème est que cette écriture ne peut être utilisée dans un ordinateur en raison de la présence la virgule. De plus, cette méthode ne permet pas de représenter des nombres très grands ou très petits comme le nombre d’Avogadro NA = 6, x 1023 mol-1 la constante de Planck h = 6, x J.s Pour remédier à ce problème, la notation scientifique pour les nombres est adoptée. Le principe du codage des réels en mémoire est basé sur cette représentation dite à virgule flottante (float). (11, )2 se mettra sous la forme 1, x 21
6
termes après la virgule,
1 Représentation de la partie décimale d’un nombre (11, )2 Représentation dite à virgule flottante (float) se mettra sous la forme Tout nombre sera ainsi représenté par : +1, x 21 son signe, ici +, sa mantisse réduite termes après la virgule, ici son exposant, ici 1 norme IEEE 754 – Institute of Electrical and Electronics Engineers
7
Les exposants peuvent ainsi aller de -126 à +127 en simple précision.
2 Représentation d’un nombre réel NORME IEEE 754 (virgule flottante) – type float Codage d’un nombre réel selon la norme IEEE En simple précision, cette norme se propose de coder le nombre sur 32 bits et définit trois composantes : - le signe est représenté par un seul bit, bit de poids fort 0 si positif, 1 si négatif - l'exposant est codé sur les 8 bits consécutifs au signe, - la mantisse (dite réduite car seuls les bits situés après la virgule sont retenus) sur les 23 bits restants. Important - l'exposant est réservé pour 0 et nombres dénormalisés (nombre très petits d’exposants incodables), Conversion par excès Les exposants peuvent ainsi aller de -126 à +127 en simple précision. - l'exposant est réservé ∞ et nombre NaN - pour prendre en compte les exposants négatifs, on rajoute 127 soit ( )2 à l'exposant
8
2 Représentation d’un nombre réel NORME IEEE 754
(virgule flottante) – type float Formule d'expression des nombres réels (-1)S x 2(E - 127) x ( 1 + M ) S est le bit de signe (avec -10 = 1), E est l'exposant codé auquel on doit bien soustraire 127 pour obtenir l’exposant réel, M est la mantisse correspondant à la partie fractionnaire et qui est ajoutée à 1 pour effectuer le calcul Formule d'expression des nombres réels dénormalisés (-1)S x 2(E ) x ( M )
9
2 Représentation d’un nombre réel NORME IEEE 754
(virgule flottante) – type float Exemple avec un réel positif coder 525,5 en simple précision sa représentation en base 2 est : ,1 La représentation du nombre 525,5 en binaire avec la norme IEEE 754 en normalisant, on trouve : 1, x 29 en regroupant les quartets : ajout de 127 à l'exposant qui vaut 9 ce qui donne 136, soit en base 2 : La mantisse est composée de la partie décimale de 525,5 en base 2 normalisée, c'est-à-dire ou 0x en hexadécimal codée sur 23 bits, il est nécessaire d'ajouter des zéros pour la compléter :
10
Exemple avec un réel négatif
2 Représentation d’un nombre réel NORME IEEE 754 (virgule flottante) – type float Exemple avec un réel négatif coder -0,625 en simple précision sa représentation en base 2 est : 0,101 La représentation du nombre -0,625 en binaire avec la norme IEEE en normalisant, on trouve : 1,01 x 2-1 en regroupant les quartets : ajout de 127 à l'exposant qui vaut -1 ce qui donne 126, soit en base 2 : La mantisse sur 23 bits est ou 0xBF en hexadécimal
11
2 Représentation d’un nombre réel NORME IEEE 754
(virgule flottante) – type float nombre d’Avogadro : NA = 6, x 1023 mol-1 constante de Planck : h = 6, x J.s Pratique !!!
12
2 Représentation d’un nombre réel NORME IEEE 754
(virgule flottante) – type float Notions sur les précisions des formats de codage Sur 32 bits - simple précision le plus petit écart entre deux nombres, supérieurs à 1, est de 2−23 ≈ 1,2 × 10−7, le chiffre suivant immédiatement 1 est 1, Entre les deux, il n’y a rien... le plus petit nombre est ± 2− ≈ ± 1,40129 × 10−45, le plus grand nombre est ± 1, × ≈ ± 3,4 × 1038. décalage égal à 211−1 − 1 = 1023 Sur 64 bits – double précision le plus petit écart entre deux nombres, supérieurs à 1, est de 2−52 ≈ 2,2 × 10−16, Temps de calcul plus long espace de stockage plus important le plus petit nombre est ± 2− ≈ ± 4,94065 × 10−324, le plus grand nombre est ± × ≈ ±1,8 ×
13
3 Opérations Pour réaliser les opérations sur la représentation des nombres réels, il faut : Pour une addition / soustraction : effectuer l’opération sur les mantisses en pensant à décaler les représentations du nombre nécessaire de bits pour prendre en compte les exposants différents, modifier le résultat pour être sous la bonne forme. Pour une multiplication / division : réaliser l’opération multiplication ou division sur les mantisses et définir la nouvelle mantisse car le résultat peut être supérieur à 2 ou inférieur à 1, additionner (pour la multiplication) ou soustraire (pour la division) les exposants. et dans tous les cas, vérifier le non dépassement de capacité.
14
Les erreurs d’arrondis font perdre l’associativité à l’addition
3 Opérations Une des conséquences de la limitation de la représentation est que les opérations ne sont plus associatives. Explication : supposons pour simplifier que les réels soient stockés avec 3 chiffres significatifs et arrondis au plus proche >>> a=1.23 >>> b=4.56 >>> c=7.89 >>> (a+b)*c==a*c+b*c False Prenons x = 8,22 = 0,822.10 y = 0,00317 = 0, z = 0,00432 = 0, On veut calculer la somme x + y + z (x + y) + z donne x + y = 8,22317 ≈ 0,822.10 (x + y) + z ≈ 8,22432 ≈ 0,822.10 Les erreurs d’arrondis font perdre l’associativité à l’addition x + (y + z) donne y + z = 0,00749 ≈ 0, x + (y + z) ≈ 8,22749 ≈ 0,823.10 Exercice : effectuer l’addition de 0,75 avec 0,85 en représentation flottante sur 16 bits (signe codé sur 1 bit, exposant codé sur 5 bits avec décalage par excès de 15, mantisse réduite codée sur 10 bits) Commentaires …
15
3 Opérations Phénomène de compensation
Lorsque l’on effectue des soustractions entre des nombres de valeurs très proches, il peut y avoir des pertes importantes de précisions Exemple : on veut résoudre x2 – 1634.x + 2 = 0 en effectuant les calculs avec 10 chiffres significatifs. On obtient En modifiant l’algorithme numérique utilisé, on peut compenser les effet d’arrondi Δ = , √Δ≈ 816, , x1 = √Δ = 1633,998776, x2 = √Δ = 0, On a donc une perte de 2 chiffres significatifs sur la valeur de x2 ! Pour compenser cette erreur d’arrondi, on peut remarquer que x1.x2 = 2, donc : x2 = 2 / x1 ≈ 0, …
16
4 Notion de mode d’arrondi & Problèmes de précision
, 4 Notion de mode d’arrondi & Problèmes de précision Malgré les capacités des ordinateurs, le codage des nombres réels nécessite l’utilisation d’arrondis. En effet tous les nombres réels ne pourront pas être codés exactement sur n bits. De plus, les nombres ne sont pas également espacés dans l’ensemble des nombres flottants représentables. positions des premiers nombres flottants sur l’axe des réels positifs norme IEEE 754, 4 modes d’arrondis : Soient et tels que et l’arrondi vers 0 l’arrondi au plus près on représente alors par ou en fonction de mode d’arrondi retenu l’arrondi vers l’arrondi vers
17
Pour les très petits nombres
De plus, les nombres ne sont pas également espacés dans l’ensemble des nombres flottants représentables. Pour les très petits nombres Écart de E-45 E-45 Pour les petits nombres Écart de 1, 1
18
Pour les très petits nombres
De plus, les nombres ne sont pas également espacés dans l’ensemble des nombres flottants représentables. Pour les très petits nombres Écart de Pour les petits nombres Écart de 1, Pour les grands nombres Écart de = 256 ! 3.0E9 E9 Pour les très grands nombres Écart de … !!! E38 E38
19
4 Notion de mode d’arrondi & Problèmes de précision
Remarque : cet arrondi s’effectue après chaque entrée de données et après chaque opération arithmétique élémentaire, si bien que les erreurs d’arrondis peuvent s’accumuler ! Tout résultat informatique est donc par codage entaché d’erreur, on a donc : avec ea l’erreur absolue 1,23456 – 1,23449 ≠ mais 1,23456 – 1,23449 = 7, ! avec er l’erreur relative En simplifiant, on peut remarquer que : Test a == b ? Test expr == 0 ? les additions / soustractions ajoutent les erreurs absolues, les multiplications / divisions ajoutent les erreurs relatives, il peut y avoir de grandes erreurs même sur un petit nombre de calcul cancellation
20
4 Notion de mode d’arrondi & Problèmes de précision
21
5 Représentation d’autres informations
5.1 Caractères Un code binaire est associé à chaque caractère Il existe plusieurs codages : - ASCII (1961) qui définit 128 caractères et est codé sur 7 bits (voir tableau ci-dessous). Les ordinateurs travaillant sur des octets, des versions étendus ont été proposées,
22
5 Représentation d’autres informations
5.1 Caractères Un code binaire est associé à chaque caractère Il existe plusieurs codages : - ASCII (1961) qui définit 128 caractères et est codé sur 7 bits (voir tableau ci-dessous). Les ordinateurs travaillant sur des octets, des versions étendus ont été proposées, - ISO 8859 (1986) définit 15 jeux de 256 caractères codé sur 1 octet (voir tableau page suivante). Ce sont des extensions du code ASCII pour prendre en compte les caractères spéciaux des différentes langues,
23
5 Représentation d’autres informations
5.1 Caractères Un code binaire est associé à chaque caractère Il existe plusieurs codages : - ASCII (1961) qui définit 128 caractères et est codé sur 7 bits (voir tableau ci-dessous). Les ordinateurs travaillant sur des octets, des versions étendus ont été proposées, - ISO 8859 (1986) définit 15 jeux de 256 caractères codé sur 1 octet (voir tableau page suivante). Ce sont des extensions du code ASCII pour prendre en compte les caractères spéciaux des différentes langues, - Unicode (1991) et UTF8 (1993) définissent environ caractères mais peuvent en contenir plus d’un million. Il n’y a plus de relation directe entre le codage d’un caractère et son espace mémoire. Suivant la version de la norme choisie le nombre de bits nécessaire à la représentation peut varier fortement.
24
analogique/numérique
5 Représentation d’autres informations 5.2 Signaux temporels Les signaux temporels ne peuvent être représentés que de façon discrète, Signal initial Discrétisation temporelle Codage des valeurs Chaque point peut être représenté sous la forme d’un entier ou d’un flottant codé et est stocké en mémoire dans un tableau. conversion analogique/numérique CAN
25
5 Représentation d’autres informations
5.3 Images (matricielles) Les images sont stockées et affichées sous forme d’un tableau (d’où le nom image matricielle) de pixels (« picture element ») colorés. On utilise aussi le terme de carte de point (« bitmap »). Le codage de chaque pixel peut être réalisé en : couleur RGB : composante R G B stockée sur 4, 8 ou 16 bits niveau de gris : 4, 8 ou 16 bits par pixel noir et blanc : 1 bit par pixel L’image est ensuite généralement compressée, ce qui donne les différents types de fichiers connus : bmp, raw, tiff, jpeg …
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.