Système de numération et représentation de l’information - Représentation en virgule flottante

Index de l'article

 


Représentation en virgule flottante

 

Beaucoup d’applications numériques manipulent les données autres que les entiers. Ces derniers sont appelées nombres flottant. De façon générale, un nombre flottant est une représentation interne d’un nombre réel et il permet ainsi de coder des grands nombres. A un nombre à virgule flottante on associe  deux jeux de données :

  • Le premier représente les chiffres significatifs du nombre c’est-à-dire la mantisse.
  • Le second indique la puissance à laquelle la base est élevée : c’est l’exposant. Exemple 10E6

Il existe plusieurs représentations pour les nombres flottant.

 

Exemple : 13x106 = 0.13x108 = 1.3x107 = 1300x104

 

Il nous faut donc représenter ces nombres sous une forme normalisée afin d’obtenir une forme unique c’est-à-dire une représentation qui ne varie pas d’un matériel à un autre. Un nombre normalisé en virgule flottante est sous la forme : X = ±0.α1α2… αtβe

 

où 0 ≤  αi ≤ β-1
0 ≤ m < 1
α1 ≠ 0

 

Exemple :

27.38 = 0.273x10²
0.047x103 = 0.47x10²

 

Il existe plusieurs conventions de représentation :

  • La première représentation est la représentation IBM. Cette représentation utilise 32 bits :
    |S (1 bit) |Exposant(7 bits) |Mantisse (24 bits)|
  • La représentation IEE, elle utilise également 32 bits repartie comme suite :
    |Exposant (7 bits) | S (1 bit) | Mantisse (24 bits)|
 

Représentation dans la norme IEE

 

La base utilisée dans la représentation est la base 16. Il convient donc de transcrire d’abord le nombre à représenter en base 16. Ensuite il faut le normaliser. Dans la norme IEE l’exposant de référence à savoir 64.

 

Exemple :

Soit à représenter le nombre suivant en virgule flottante dans la norme IEE : 27,38

  • Conversion en base 16 : 1B.6147AE
  • Normalisation : 0.1B6147AE x 10+2
  • Calcul de l’exposant : 64 + 2 = (66)10 = (1000010)2
  • Signe : 0
    |1000 010|0 | 0001 1011 0110 0001 0100 0111| = 8 4 1 B 6 1 4 7

Comment retrouver la valeur décimale d’un nombre représenté en virgule flottante dans la norme IEE

 

On retrouve dans un vidage de fichier les valeurs hexadécimales suivantes (84163852)16

 

|1000010|0| 0001 0110 0011 1000 0101 0010|

  • S = 0 (nombre positif)
  • E = (1000010)2 = (66)10
  • Décalage : 66 – 64 = 2
  • 0001 0110 0011 1000 0101 0010 = 1 6 3 8 5 2  alors X = +0.163852 x 16²
  • Le décalage X = (16.3852)16
  • En base 10 : X = 1x161 + 6x160 + 3x16-1 + 8x16-2 + 5x16-3 + 2x16-4
    X = 16 + 6 + 3/16 + 8/16² + 5/163 + 2/164
    X = (22,22)10
 

Exercice :

 

1-      Représenter en IEE

  1. (27.75)10
  2. (34.675)10
  3. (-25.99)10
  4. (0.0017)10

2-      Décoder

  1. 512AB017
  2. 1A3B1468