formats des nombres réels

30
Formats des nombres réels 7 janvier 2013

Upload: sinjin

Post on 23-Feb-2016

63 views

Category:

Documents


0 download

DESCRIPTION

Formats des nombres réels. 7 janvier 2013. Introduction. Si la représentation des nombres entiers est bien maitrisée sur l’ensemble des microprocesseurs, la représentation en nombres réels l’est moins. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Formats des nombres réels

Formats des nombres réels

7 janvier 2013

Page 2: Formats des nombres réels

Introduction Si la représentation des nombres entiers est

bien maitrisée sur l’ensemble des microprocesseurs, la représentation en nombres réels l’est moins.

Si notre microprocesseur ne fonctionne qu’en nombre entier, on peut le faire travailler en nombre réel en utilisant l’approche de virgule fixe. Exemple (sur 8 bits) :

0x0011 . 0110b Pour le processeur, il voit 54 en décimal. Pour nous, qui avons mentalement ajouté le point décimal,

on voit 3.375 en décimal.2

Page 3: Formats des nombres réels

Format à virgule fixe

3

Ce format est dit format à virgule fixe.

On peut faire des additions: 0x0011 . 0110b + 0x0001 .0001b = 0x0100 .

0111b Pour le processeur: 54 + 17 = 71 (en décimal) Pour nous : 3.375 + 1.0625 = 4.4375 (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.

Page 4: Formats des nombres réels

Format à virgule fixe

4

Sur 16 bits, 918 est représenté comme suit: 0x0000 0011 1001 0110b

Sur 16 bits, le chiffre 3.58594 (résultat du produit de 3.375 par 1.0625) est: 0x0000 0011 .1001 0110b

En décalant de 4 bits vers la droite, on trouve (sur 8 bits) 0x0011 .1001b Ce nombre est: 3.5625

Il y a une erreur de troncation.

On a eu de la chance, pas de débordement pour le nombre réel, puisque l’on peut tronquer les décimales.

Page 5: Formats des nombres réels

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.

Page 6: Formats des nombres réels

Format à virgule fixe normalisé

Pour solutionner les débordements des multiplications

6

Page 7: Formats des nombres réels

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

Page 8: Formats des nombres réels

Format à virgule fixe normalisé Exemple – format Q3.

Le plus grand nombre négatif est 0x1000b 1.000b. Complément à 2 :

0.111b + 0.001b = 1.000b (non signé) Ce qui donne -1.

8

Page 9: Formats des nombres réels

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 à :

2 11 22

xx

x

2 12x

x

9

Page 10: Formats des nombres réels

Format Qx Plus grand nombre:

x = 3 (4 bits) : 1-2-3 = 7/8 = 0.875 x = 7 (8 bits) : 1-2-7 = 0.9921875 x = 15 (16 bits) : 1-2-15 = 0.99996948242188

Plus le nombre de bits est élevé plus il y a de résolution et mieux la plage de -1 à +1 est couverte.

10

Page 11: Formats des nombres réels

Multiplication de deux nombres en format Qx La multiplication de 2 nombres d’amplitude

inférieure ou égale à 1 donne un nombre d’amplitude inférieure ou égale à 1. Donc, pas de débordements avec une

multiplication. Exemple (Q3):

(0x0.101b) X (0x1.001b) = (0x11.01 1101b) 0.625 X -0.875 = -0.546875 En pratique, on soit tronque le résultat à 0x1.011b

-0.625 Ou on arrondit à 0x1.100b

-0.5

11

Page 12: Formats des nombres réels

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. (0x1111 1.011b) et ne garder que les 4 derniers bits.

L’exemple montre que la troncation pour mettre le résultat sur 4 bits entraîne une imprécision. Donc on travaille en Q15 habituellement.

12

Page 13: Formats des nombres réels

Addition de deux nombres en Qx L’addition 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) 0.625 + 0.5 = -0.875 ????? 0.625+ 0.5 = 1.125 > 1.

Des précautions doivent être prises lors des additions.

13

Page 14: Formats des nombres réels

Formats à virgule flottante

Le format de la famille des DSP de Texas Instruments

Le format IEEE 754

14

Page 15: Formats des nombres réels

Représentation en virgule flottanteFormat TI Cette représentation utilise un format du type:

M : la mantisse (0.M est d’amplitude inférieure à 1); E : l’exposant. s : signe de la mantisse. Format : 0x E s M b.

Exemple fictif: Représentation sur 8 bits: 0xeees mmmmb

3 bits pour l’exposant, 5 bits pour la mantisse, incluant son signe.

. 2Ey ss M

15

Page 16: Formats des nombres réels

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

16

Page 17: Formats des nombres réels

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 2E.

Le chiffre 1.00 est représenté par: M = 0x0. 0000b E = 0x000b

Le chiffre 3.5 est représenté par: M = 0x0. 1100b E = 0x001b

Donc 1.75 x 2 = 3.5

17

Page 18: Formats des nombres réels

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 2E. En base 10: (-2+0.xxx) X 2E.

Le chiffre -1.00 est représenté par: M = 0x1. 0000b E = 0x111b

Le chiffre -3.5 est représenté par: M = 0x1. 0100b E = 0x001b

18

Page 19: Formats des nombres réels

Détail du calcul Exemple #1: (0x0011 0100b)

Négatif: Mantisse: 10.0100 Complément à 2 : 011011 + 1 = 011100 Donc le nombre correspondant est : -01.1100

Exposant : 001 La valeur correspondante est : 21 = 2.

Le nombre représenté par 0x0011 0100b est -011.100 en binaire ou -3.5 en décimal.

19

Page 20: Formats des nombres réels

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 l’exemple de représentation fictive, ce serait: (0x1000 0000b). Dans les faits, ce nombre est:

Mantisse: 1.0000 Exposant : 100 (négatif, complément à 2 est : -100b = -4) Le nombre représenté par 0x1000 0000b est 0.0001 en

binaire ou 2-4 = 0.0625 en décimal. Ce « petit » nombre est considéré comme étant 0.

20

Page 21: Formats des nombres réels

Reste le cas du zéro Cela est généralisé pour tous les cas ou

l’exposant 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: (0x1010 0000b). Mantisse: 1.0000 Exposant : 101 (négatif, complément à 2 est : -011b = -3) Le nombre représenté par 0x1010 0000b est 0.001 en

binaire ou 2-3 = 0.125 en décimal.

21

Page 22: Formats des nombres réels

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. L’exposant n’est 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 l’exposant.

22

Page 23: Formats des nombres réels

Norme IEEE 754 Ainsi, si dans la poursuite de l’exemple à 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 1.0000. L’exposant du 2 sera 0. Le nombre 1 est donc 1.0000 X 20.

2) Exposant Le décalage est 2(3-1)-1 = 3. Donc E = 0 + 3 = 3, ou en binaire 0x011b.

3) Bilan +1 = 0x0011 0000b = 0x30h.

23

Page 24: Formats des nombres réels

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 -1.0000.

L’exposant du 2 sera encore 0. Le nombre -1 est donc -1.0000 X 20.

2) Exposant Le décalage est 2(3-1)-1 = 3. Donc E = 0 + 3 = 3, ou en binaire 0x011b.

3) Bilan -1 = 0x1011 0000b = 0xB0h.

24

Page 25: Formats des nombres réels

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 l’exposant est 2(3-1)-1 = 3. 3.5 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 l’exposant de 2 est 1,

car on a décalé 1 fois vers la droite. E = 1 + 3 = 4 = 0x100b

3) Bilan -3.5 = 0x1100 1100b = 0xCCh.25

Page 26: Formats des nombres réels

Norme IEEE 754 – Le zéro et l’infini Pour le nombre 0, il s’écrira:

0xX000 0000b. Il y a donc deux zéros, un positif et un négatif.

Pour l’infini (oui oui vous avez bien lu): 0xX111 0000b.

Tous les bits de l’exposant à 1 et ceux de la mantisse à 0.

Il y a donc deux infinis, un positif et un négatif. Si la mantisse n’est pas nulle, on considère que « ce

n’est pas un nombre » (NaN – Not a Number).

26

Page 27: Formats des nombres réels

Norme IEEE 754 Le plus grand nombre normalisé est:

0xX110 1111b. Tous les bits de l’exposant à 1 sauf le dernier (sinon, c’est

l’infini) 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: 0xX000 1111b.

Tous les bits de l’exposant à 0. Tous les bits de la mantisse à 1. Valeur:

0x1.1111b X 2(0-3) = 0x0.0011111b = 0.2421875 (décimal)

27

Page 28: Formats des nombres réels

Norme IEEE 754 Le plus petit nombre normalisé est:

0xX001 0000b. Tous les bits de l’exposant à 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: 0xX000 0001b.

Tous les bits de l’exposant à 0 Tous les bits de la mantisse à 0 sauf le dernier Valeur:

0x1.0001b X 2(0-3) = 0x0.0010001b = 0.1328125 (décimal)

28

Page 29: Formats des nombres réels

Norme IEEE 754 Presque 1:

0x0010 1111b. Valeur:

0x1.1111b X 2(2-3) = 0x0.11111b = 59/64 = 0.921875 (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

Page 30: Formats des nombres réels

Référence sur la norme IEEE 754

30

http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=4610935