6
1 IFT1215 Introduction aux systèmes informatiques Représentation des nombres flottants IFT1215 Introduction aux systèmes informatiques Représentation des nombres flottants La représentation flottante permet la représentation de nombres très petits ou très grands en utilisant très peu de digits au prix d’une représentation avec une certaine précision IFT1215 Introduction aux systèmes informatiques Notation exponentielle Le point décimal “flotte” (ajustement approprié de l’exposant). Représentations équivalentes dans la base 10 de 1,234 123,400.0 x 10 -2 12,340.0 x 10 -1 1,234.0 x 10 0 123.4 x 10 1 12.34 x 10 2 1.234 x 10 3 0.1234 x 10 4 IFT1215 Introduction aux systèmes informatiques Éléments de la notation exponentielle -0.9876 x 10 -3 Signe de la mantisse Position du point décimal Mantisse Exposant Signe de l’exposant Base Base de système du nombre! IFT1215 Introduction aux systèmes informatiques Représentation normalisée Un nombre représenté en virgule flottante est normalisé s’il est sous la forme: ± 0,M * X ±c M – un nombre dont le premier chiffre est non nul • Exemple: + 59,4151 * 10 -5 => Normalisé: +0,594151 * 10 -3 IFT1215 Introduction aux systèmes informatiques Exposant et son signe L’exposant est translatée de manière à toujours coder en interne une valeur positive Avec 2 digits réservés au codage de l’exposant • Les valeurs positives: [+0, +99] • En appliquant une translation k=50: Les exposants représentables => [-50,49] La constante k est appelée constante d’excentrement

ReprEnVirgFlot

Embed Size (px)

Citation preview

Page 1: ReprEnVirgFlot

1

IFT1215 Introduction aux systèmes informatiques

Représentation des nombres flottants

IFT1215 Introduction aux systèmes informatiques

Représentation des nombres flottants

• La représentation flottante permet la représentation de nombres très petits ou très grands en utilisant très peu de digits au prix d’une représentation avec une certaine précision

IFT1215 Introduction aux systèmes informatiques

Notation exponentielle

Le point décimal “flotte” (ajustement approprié de l’exposant).

• Représentations équivalentes dans la base 10 de 1,234

123,400.0 x 10-2

12,340.0 x 10-1

1,234.0 x 100

123.4 x 101

12.34 x 102

1.234 x 103

0.1234 x 104

IFT1215 Introduction aux systèmes informatiques

Éléments de la notation exponentielle

-0.9876 x 10-3

Signe dela mantisse

Position dupoint décimal Mantisse

Exposant

Signe del’exposant

BaseBase de système du nombre!

IFT1215 Introduction aux systèmes informatiques

Représentation normalisée

• Un nombre représenté en virgule flottante est normalisé s’il est sous la forme:• ± 0,M * X±c

• M – un nombre dont le premier chiffre est non nul• Exemple:

• + 59,4151 * 10-5 => Normalisé: +0,594151 * 10-3

IFT1215 Introduction aux systèmes informatiques

Exposant et son signe• L’exposant est translatée de manière à toujours

coder en interne une valeur positive• Avec 2 digits réservés au codage de l’exposant

• Les valeurs positives: [+0, +99]• En appliquant une translation k=50:

• Les exposants représentables => [-50,49]

• La constante k est appelée constante d’excentrement

Page 2: ReprEnVirgFlot

2

IFT1215 Introduction aux systèmes informatiques

Représentation en virgule flottante• Avec 2 digits réservés au codage de l’exposant

avec un excentrement égal à 5010 et 5 digits pour la mantisse on peut représenter• de .00001 x 10-50 à .99999 x 1049

IFT1215 Introduction aux systèmes informatiques

Overflows / Underflows

• De .00001 x 10-50 à .99999 x 1049

1 x 10-55 à .99999 x 1049

IFT1215 Introduction aux systèmes informatiques

Format typique

IFT1215 Introduction aux systèmes informatiques

La norme IEEE 754• Un format standardisé• Format simple précision: 32 bits

• Bit du signe (1 bit)• Exposant (8 bits)• Mantisse (23 bits)

• Format double précision: 64 bits• Bit du signe (1 bit) • Exposant (11 bits)• Mantisse (52 bits)

IFT1215 Introduction aux systèmes informatiques

Format simple précision

32 bits

Mantisse (23 bits)

Exposant (8 bits)

Signe de la mantisse (1 bit)

CS M en base 2, avec un bit caché à 1

IFT1215 Introduction aux systèmes informatiques

Format Double Précision

64 bits

Mantisse (52 bits)

Exposant (11 bits)

Signe de la mantisse (1 bit)

Page 3: ReprEnVirgFlot

3

IFT1215 Introduction aux systèmes informatiques

Normalisation dans le format IEEE 754

• La mantisse est normalisé sous la forme• ±1,M*2±c

• Pseudo mantisse• Le 1 précédant la virgule n’est pas codé en

machine et est appelé bit caché• Exemple:

• Mantisse:• Représentation:

10100000000000000000000

1.1012 = 1.62510

IFT1215 Introduction aux systèmes informatiques

IEEE 754, exposant

• Constante k d’excentrement appliquée à l’exposant• Simple précision: +12710• Double précision: +102310

• L’exposant c codé en interne• ±c + 12710• ±c + 102310

• Ex., – k = 12710,• Exposant:• Représentation:

100001112

13510 – 12710 = 810 (valeur)

IFT1215 Introduction aux systèmes informatiques

Exposant et son signe- Exemple -

Représentez l’exposant 1410 avec un excentrement 127:

12710 = + 011111112

1410 = + 000011102

Représentation = 100011012

IFT1215 Introduction aux systèmes informatiques

Représentez l’exposant -810 avec un excentrement 127:

12710 = + 011111112

- 810 = - 000010002

Représentation = 011101112

Exposant et son signe- Exemple -

IFT1215 Introduction aux systèmes informatiques

Exemple• Simple précision

0 10000010 11000000000000000000000

1.112 = 1.7510

130 – 127 = 3

0 = mantisse positive

+1.75 × 23 = 14.0IFT1215 Introduction aux systèmes informatiques

Exercice – Conversion en virgule flottante IEEE 754

• Quelle est la valeur décimale des représentations internes suivantes?

• Réponse:

1 10000010 11110110000000000000000

Page 4: ReprEnVirgFlot

4

IFT1215 Introduction aux systèmes informatiques

Exercice – Conversion en virgule flottante IEEE 754

• Quelle est la valeur décimale des représentations internes suivantes?

• Réponse: -15.6875

1 10000010 11110110000000000000000

Réponse

IFT1215 Introduction aux systèmes informatiques

1 10000010 11110110000000000000000

Solution

En décimal

130 - 127 = 3 1.11110110000000000000000000

1 + .5 + .25 + .125 + .0625 + 0 + .015625 + .0078125

1.960937523 * = 15.6875

- 15.6875( negatif )

IFT1215 Introduction aux systèmes informatiques

1 10000010 11110110000000000000000

Solution : Méthode Alternative

En décimal

130 - 127 = 3 1.11110110000000000000000000

1111.10110000000000000000000

- 15.6875( negatif )

Décalez “Point”

IFT1215 Introduction aux systèmes informatiques

Exercice – Conversion en virgule flottante IEEE 754

• Quelle est la représentation interne du nombre 3.1410?

• Remarque: utiliser seulement les 10 chiffres significatifs pour la mantisse

• Réponse:

IFT1215 Introduction aux systèmes informatiques

Exercice – Conversion en virgule flottante IEEE 754

• Quelle est la représentation interne du nombre 3.1410?

• Remarque: utiliser seulement les 10 chiffres significatifs pour la mantisse

• Réponse:

Réponse

0 10000000 10010001111000000000000

IFT1215 Introduction aux systèmes informatiques

Solution : 3.14 en IEEE Simple Précision

3.14 En Binaire (approx): 11.001000111101

•Normalisez (21)•Enlevez le bit caché 1001000111101

Exposant = 127 + 1 10000000

Valeur est positive: Bit de signe = 0

0 10000000 10010001111010000000000

Page 5: ReprEnVirgFlot

5

IFT1215 Introduction aux systèmes informatiques

IEEE 754 Simple PrécisionFormat (Résumé)

• Signe – 1 bit (0 – “+”; 1 – “-”)• Exposant – 8 bits (excentrement-127)• Mantisse – 23 bits• Format binaire • Normalisation : 1.MMMM…• Bit caché

s к M1 M2 … M23

signe exposant Mantisse

1 8 9 310

IFT1215 Introduction aux systèmes informatiques

IEEE-754

• IEEE-754 définit deux représentations différentes pour chaque taille de mot• Représentation normalisée

• Le plus petit nombre représentable (simple): 2-126

• Le plus grand nombre représentable (simple): ≈ 2128

• Représentation non normalisée• 4 types

IFT1215 Introduction aux systèmes informatiques

Représentation du zéro, des infinis, représentations dénormalisées

• Le norme IEEE admet des codages spéciaux pour la représentation

1. 02. ∞3. NaN (Not a Number) situation d’erreur 4. Représentations dénormalisées

IFT1215 Introduction aux systèmes informatiques

Représentation du zéro, des infinis, représentations dénormalisées

Conditions spéciales

Non 0±128±∞±0±128±2E+127 * 1.MTout-126 - +127±2-126 * 0.MNon 000±00

ValeurMantisseExposant

IFT1215 Introduction aux systèmes informatiques

Format décimal empaqueté• Dans certain application, il est important de maintenir une

précision parfaite pour la représentation de nombres réels (ex.: dollars et cents)

• Quelques langages de haut niveau (ex.: Cobol) fournissent un format qui permet de spécifier un nombre de chiffres décimaux désiré

• Chaque digit du nombre en base 10 est codé en BCD• Utilisé par IBM System 370/390 et Compaq Alpha

• Exemple: -324.6 = 0000 0011 0010 0100 0110 1101

1100 ou1101 ou1111

. . .4 bits 4 bits

MSB

Jusqu'à 31 digits

IFT1215 Introduction aux systèmes informatiques

Arithmétique en flottant

Opérandes Alignement Normaliser & arrondir6.144 ×102 0.06144 ×104 1.003644 ×105

+9.975 ×104 +9.975 ×104 + .0005 ×105

10.03644 ×104 1.004 ×105

Opérandes Alignement Normaliser & arrondir1.076 ×10-7 1.076 ×10-7 7.7300 ×10-9

-9.987 ×10-8 -0.9987 ×10-7 + .0005 ×10-9

0.0773 ×10-7 7.730 ×10-9

Page 6: ReprEnVirgFlot

6

IFT1215 Introduction aux systèmes informatiques

Arithmétique en flottant: Addition• Aligner le plus faible exposant sur le plus fort• Additionner les deux mantisses. Si overflow,

ajuster l’exposant

• Ex. 0 51 99718 (e = 1) and 0 49 67000 (e = -1)

• Aligner nombres: 0 51 997180 51 00670

• Additionner mantisses: 99718+ 00670

1 00388 Overflow

• arrondir le nombre et ajuster l’exposant: 0 52 10039IFT1215 Introduction aux systèmes informatiques

Arithmétique en flottant: Multiplication• (a * 10e) * (b * 10f) = a * b * 10e+f

• Règle: multiplier mantisses; additionner exposantsMais: Codage d’exposant, (n + e) + (n + f) = 2 * n + e + f

On doit soustraire constante d’excentrement n du résultat

• Ex. 0 51 99718 (e = 1) et 0 49 67000 (e = -1)Mantisses: .99718 * .67000 = 0.6681106Exposants: 51 + 49 = 100 et 100 – 50 = 50Normaliser: .6681106 .66811

Résultat final: .66811 * 100 (comme 50 signifie e = 0)

IFT1215 Introduction aux systèmes informatiques

Programmation

• Calcul avec des entiers• Plus facile pour l’ordinateur• Très haute précision ou même sans perte de

précision• Plus rapide (mois d’accès mémoire, circuits logiques

plus simples, etc.)• Langage C: short (16 bits), long (32 bits)

IFT1215 Introduction aux systèmes informatiques

Programmation

• Calcul avec des flottants• Variable ou constante avec une partie fractionnaire• Perte de précision• Moins rapide• Langage C

• simple précision float• Double précision double