La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Formats des nombres réels 7 janvier 2013. Introduction Si la représentation des nombres entiers est bien maitrisée sur lensemble des microprocesseurs,

Présentations similaires


Présentation au sujet: "Formats des nombres réels 7 janvier 2013. Introduction Si la représentation des nombres entiers est bien maitrisée sur lensemble des microprocesseurs,"— Transcription de la présentation:

1 Formats des nombres réels 7 janvier 2013

2 Introduction Si la représentation des nombres entiers est bien maitrisée sur lensemble des microprocesseurs, la représentation en nombres réels lest moins. Si notre microprocesseur ne fonctionne quen nombre entier, on peut le faire travailler en nombre réel en utilisant lapproche de virgule fixe. Exemple (sur 8 bits) : 0x b Pour le processeur, il voit 54 en décimal. Pour nous, qui avons mentalement ajouté le point décimal, on voit en décimal. 2

3 Format à virgule fixe 3 Ce format est dit format à virgule fixe. On peut faire des additions: 0x b + 0x b = 0x b Pour le processeur: = 71 (en décimal) Pour nous : = (en décimal) … et des multiplications. Toutefois, il y a un risque de débordement, en particulier avec les multiplications. 54 X 17 = 918 qui ne se représente pas sur 8 bits.

4 Format à virgule fixe 4 Sur 16 bits, 918 est représenté comme suit: 0x b Sur 16 bits, le chiffre (résultat du produit de par ) est: 0x b En décalant de 4 bits vers la droite, on trouve (sur 8 bits) 0x b Ce nombre est: Il y a une erreur de troncation. On a eu de la chance, pas de débordement pour le nombre réel, puisque lon peut tronquer les décimales.

5 Pour pallier à ce problème 5 On peut utiliser le format à virgule fixe normalisé. Les nombres sont représentés dans une plage allant de -1 à +1. Le point décimal est juste après le bit le plus significatif, qui sert à représenter le signe. Nombre négatif en complément à 2. Ou, si le processeur le permet, on peut utiliser la représentation à virgule flottante.

6 Format à virgule fixe normalisé Pour solutionner les débordements des multiplications 6

7 Format à virgule fixe normalisé Représenté par le vocable Qx, avec x, le nombre de décimales après le point. Exemple – format Q3. Représenté sur 4 bits (3+1); Représentation en complément à 2; Zéro est 0x0000b; 0.000b Le plus grand nombre positif est 0x0111b 0.111b ou 7/8 en base 10. 7

8 Format à virgule fixe normalisé Exemple – format Q3. Le plus grand nombre négatif est 0x1000b 1.000b. Complément à 2 : 0.111b b = 1.000b (non signé) Ce qui donne -1. 8

9 Format Qx Bilan: Taille du nombre est x+1 bits. x bits les moins significatifs sont après le point; Le bit avant le point est le signe; Positif = 0 Négatif = 1 (et nombre en complément à 2) Chiffre le plus grand correspond à : Chiffre le plus petit correspond à : 9

10 Format Qx Plus grand nombre: x = 3 (4 bits) : = 7/8 = x = 7 (8 bits) : = x = 15 (16 bits) : = Plus le nombre de bits est élevé plus il y a de résolution et mieux la plage de -1 à +1 est couverte. 10

11 Multiplication de deux nombres en format Qx La multiplication de 2 nombres damplitude inférieure ou égale à 1 donne un nombre damplitude inférieure ou égale à 1. Donc, pas de débordements avec une multiplication. Exemple (Q3): (0x0.101b) X (0x1.001b) = (0x b) X = En pratique, on soit tronque le résultat à 0x1.011b Ou on arrondit à 0x1.100b

12 Multiplication de deux nombres en format Qx Exemple (Q3): Le calcul a exigé 8 bits, car le résultat comporte 6 décimales après le point. Le nombre était en format Q6. Pour revenir en Q3, on peut décaler le résultat de 3 bits vers la droite. (0x b) et ne garder que les 4 derniers bits. Lexemple montre que la troncation pour mettre le résultat sur 4 bits entraîne une imprécision. Donc on travaille en Q15 habituellement. 12

13 Addition de deux nombres en Qx Laddition de deux nombres en Qx est susceptible de provoquer des débordements. Le nombre résultant peut avoir une amplitude supérieure à 1. Exemple (Q3): (0x0.101b) + (0x0.100b) = (0x1.001b) = ????? = > 1. Des précautions doivent être prises lors des additions. 13

14 Formats à virgule flottante Le format de la famille des DSP de Texas Instruments Le format IEEE

15 Représentation en virgule flottante Format TI Cette représentation utilise un format du type: M : la mantisse (0.M est damplitude inférieure à 1); E : lexposant. s : signe de la mantisse. Format : 0x E s M b. Exemple fictif: Représentation sur 8 bits: 0xeees mmmmb 3 bits pour lexposant, 5 bits pour la mantisse, incluant son signe. 15

16 Représentation en virgule flottante Format général 16

17 Mantisse de signe positif Si le signe de la mantisse est 0, le nombre qui est représenté par la mantisse est 01.M X 2 E. Le chiffre 1.00 est représenté par: M = 0x b E = 0x000b Le chiffre 3.5 est représenté par: M = 0x b E = 0x001b Donc 1.75 x 2 =

18 Mantisse de signe négatif Si le signe de la mantisse est 1, le nombre est négatif et il est représenté par la mantisse est 10.M X 2 E. En base 10: (-2+0.xxx) X 2 E. Le chiffre est représenté par: M = 0x b E = 0x111b Le chiffre -3.5 est représenté par: M = 0x b E = 0x001b 18

19 Détail du calcul Exemple #1: (0x b) Négatif: Mantisse: Complément à 2 : = Donc le nombre correspondant est : Exposant : 001 La valeur correspondante est : 2 1 = 2. Le nombre représenté par 0x b est en binaire ou -3.5 en décimal. 19

20 Reste le cas du zéro Par convention, le nombre zéro est définit par une mantisse nulle et un exposant E = 0x1000…000b. Dans lexemple de représentation fictive, ce serait: (0x b). Dans les faits, ce nombre est: Mantisse: Exposant : 100 (négatif, complément à 2 est : -100b = -4) Le nombre représenté par 0x b est en binaire ou 2 -4 = en décimal. Ce « petit » nombre est considéré comme étant 0. 20

21 Reste le cas du zéro Cela est généralisé pour tous les cas ou lexposant E = 0x1000…000b. Ainsi, tous les nombres : 0x100X XXXXb avec X = 0 ou 1 sont considérés comme étant égaux à 0. Le plus petit nombre positif est: (0x b). Mantisse: Exposant : 101 (négatif, complément à 2 est : -011b = -3) Le nombre représenté par 0x b est en binaire ou 2 -3 = en décimal. 21

22 Norme IEEE 754 La norme IEEE 754 diffère un peu du format TI présenté précédemment. Ce format est 0x s E M b. Différences avec la norme de la série TMS320Cxx Le signe du nombre est le bit le plus significatif. Lexposant nest plus représenté en complément à deux, mais est une valeur décalée de 2 (e-1) -1, avec e, le nombre de bits de lexposant. 22

23 Norme IEEE 754 Ainsi, si dans la poursuite de lexemple à 8 bits, je considère le nombre +1, il sécrira: 1) M = 0x0000b et s = 0. Donc la valeur de base qui est 1.M est Lexposant du 2 sera 0. Le nombre 1 est donc X ) Exposant Le décalage est 2 (3-1) -1 = 3. Donc E = = 3, ou en binaire 0x011b. 3) Bilan +1 = 0x b = 0x30h. 23

24 Norme IEEE 754 Pour le nombre -1, il sécrira: 1) M = 0x0000b et s = 1. Donc la valeur de base qui est -1.M est Lexposant du 2 sera encore 0. Le nombre -1 est donc X ) Exposant Le décalage est 2 (3-1) -1 = 3. Donc E = = 3, ou en binaire 0x011b. 3) Bilan -1 = 0x b = 0xB0h. 24

25 Norme IEEE 754 Pour le nombre -3.5, il sécrira: 1) Puisque le nombre est négatif : s = 1. 2) Exposant et mantisse Le décalage de lexposant est 2 (3-1) -1 = sécrit en binaire 0x11.10b Décalons ce nombre pour le mettre sous la forme 1.xxx. Ici, il faut décaler vers la droite une seule fois pour trouver 0x1.1100b Ainsi, la mantisse est 0x1100b et lexposant de 2 est 1, car on a décalé 1 fois vers la droite. E = = 4 = 0x100b 3) Bilan -3.5 = 0x b = 0xCCh. 25

26 Norme IEEE 754 – Le zéro et linfini Pour le nombre 0, il sécrira: 0xX b. Il y a donc deux zéros, un positif et un négatif. Pour linfini (oui oui vous avez bien lu): 0xX b. Tous les bits de lexposant à 1 et ceux de la mantisse à 0. Il y a donc deux infinis, un positif et un négatif. Si la mantisse nest pas nulle, on considère que « ce nest pas un nombre » (NaN – Not a Number). 26

27 Norme IEEE 754 Le plus grand nombre normalisé est: 0xX b. Tous les bits de lexposant à 1 sauf le dernier (sinon, cest linfini) Tous les bits de la mantisse à 1. Valeur: 0x1.1111b X 2 (6-3) = 0x1111.1b = 15.5 (décimal) Le plus grand nombre dénormalisé est: 0xX b. Tous les bits de lexposant à 0. Tous les bits de la mantisse à 1. Valeur: 0x1.1111b X 2 (0-3) = 0x b = (décimal) 27

28 Norme IEEE 754 Le plus petit nombre normalisé est: 0xX b. Tous les bits de lexposant à 0 sauf le dernier. Tous les bits de la mantisse à 0. Valeur: 0x1.0000b X 2 (1-3) = 0x0.01b = 0.25 (décimal) Le plus petit nombre dénormalisé est: 0xX b. Tous les bits de lexposant à 0 Tous les bits de la mantisse à 0 sauf le dernier Valeur: 0x1.0001b X 2 (0-3) = 0x b = (décimal) 28

29 Norme IEEE 754 Presque 1: 0x b. Valeur: 0x1.1111b X 2 (2-3) = 0x b = 59/64 = (décimal) En pratique, on travaille plutôt sur: 32 bits en simple précision; 64 bits en double précision. Ce qui est disponible dépend de léquipement et des compilateurs. 29

30 Référence sur la norme IEEE = =


Télécharger ppt "Formats des nombres réels 7 janvier 2013. Introduction Si la représentation des nombres entiers est bien maitrisée sur lensemble des microprocesseurs,"

Présentations similaires


Annonces Google