Education

Codage des nombres

Introduction : Le chapitre codage-système de numérotation a traité le codage des nombres entiers naturels. Dans cette partie, nous allons voir comment coder les nombres réels et les nombres entiers négatifs.

Codage des nombres réels

En base 10, le nombre 145,32, à titre d’exemple, est égal à :

De la même façon, le nombre 111,011 en base 2, est égal à :

De la même façon, le nombre 4C,4E en base 16, est égal à :

Conversion réel décimal en base 2

Pour la partie entière :

  • On utilise la méthode de la division entière comme pour les entiers

Pour la partie fractionnaire :

  • On multiplie la partie fractionnaire par 2
  • On note la partie entière obtenue
  • On recommence cette opération avec la partie fractionnaire du résultat et on arrête quand la partie fractionnaire devient nulle ou quand la précision souhaitée est atteinte.
  • La suite des parties entières obtenues dans l’ordre de leur calcul est la partie fractionnaire dans la base 2

Exemple 1 : Convertir le nombre décimal 18,6875 en binaire

  • 18 en base 10 s’écrit  10010 en base 2
  • 0,6875 en base 10 s’écrit  en base 2:

Exemple 2 : Convertir le nombre décimal 34,3 en binaire

  • 34 en base 10 s’écrit  100010 en base 2
  • 0,3en base 10 s’écrit  en base 2:

Exemple 3 : Convertir le nombre décimal 172,3046875 en hexadécimal

  • 172 en base 10 s’écrit  AC en base 16
  • 0,3046875 en base 10 s’écrit  en base 16 :

Comme le chiffre 14 est en hexadécimal E, le nombre décimal 172,3046875 s’écrit en hexadécimal :

 Codage binaire de réels en virgule flottante: Le standard IEEE 754

Le standard  IEEE 754 est la norme la plus employée particulièrement par l’unité de calcul en virgule flottante des processeurs (FPU : floating-point unit) pour effectuer des opérations sur des nombres à virgule flottante. Il a été mis au point en 1985 par l’IEEE (Institute of Electrical and Electronics Engineers). La norme définit quatre formats pour représenter des nombres à virgule flottante en base 2 :

  • Le format simple précision
  • Le formatsimple précision (float)
  • Le formatdouble précision (double)
  • Le formatdouble précision étendue

Le format double précision est pratiquement le seul qui soit utilisé actuellement.

Stockage d’un nombre flottant

D’une façon générale, un nombre flottant est formé de trois éléments : la mantisse, l’exposant et le signe et s’écrit :

  • s désigne le bit de signe
  • e désigne l’exposant
  • m désigne la mantisse

Pour déterminer s, e et m, il faut :

  • Ecrire le nombre en binaire abstraction faite de son signe
  • Décaler la virgule vers la gauche jusqu’à ce qu’il ne reste qu’un 1 sur sa gauche en multipliant par 2 pour chaque décalage
  • Déterminer e  
  • S =  0 si le nombre est positif et à 1 si le nombre est négatif.

L’exposant peut être positif ou négatif. Cependant, la comparaison entre les nombres flottants  dans la représentation complément  à 2 est une opération relativement difficile. Pour contourner cette difficulté, l’exposant est décalé de telle sorte que le stockage du nombre soit sous forme d’un nombre non signé.

Si l’on appelle e le nombre de bits de l’exposant, le décalage est donné par :

  • Le bit de poids fort est le bit de signe. Il est mis à 0 si le nombre est positif et mis à 1 si le nombre est négatif.
  • Les e bits suivants représentent l’exposant décalé
  • Les m bits de poids faible suivants représentent la mantisse
Format simple précision (32 bits) 

En simple précision, le nombre flottant est mémorisé dans un mot de 32 bits (1 bit de signe, 8 bits exposant, 23 bits mantisse. Le  format simple précision est indiqué ci-dessous.

Le décalage D est donc donné par :

Exemple : Nous nous proposons de coder le nombre décimal – 110,625 en format simple précision

On a donc -110,625  qui s’écrit sous le format suivant :

Format double précision (64 bits) 

En double précision, le nombre flottant est mémorisé dans un mot de 64 bits (1 bit de signe, 11 bits d’exposant, 52 bits de mantisse). Le  format simple précision est indiqué ci-dessous.

Pour le format double précision, le décalage D est donné par :

Exemple : Nous nous proposons de coder le nombre décimal 64 en format double précision

On obtient donc comme codage du nombre 64 : 0 10000000101 00………………………………………………………….0

Soit le format suivant: