Vous êtes sur la page 1sur 3

Le codage des nombres flottants

1. Introduction 2. Conversion 3. Virgule flottante 1. Introduction : Le but de ce cours est de vous montrer le codage, au sein de l'ordinateur, de n'importe quel nombre, entier ou non et sign : 3,144592 2,718 -1E218 etc.. Comme vous l'avez dj vu, un microprocesseur n'est pas conu pour travailler en base 10 mais en base 2. Rappel : pour passer d'un nombre entier de base 10 en base 2, il suffit de faire des divisions successives par 2 jusqu' obtenir un reste gal 1 ou 0. 2. Conversion : Par analogie, on en dduit que pour convertir une fraction dcimale en base 2, il suffit de raliser des multiplications successives par 2, jusqu' obtenir une partie fractionnaire nulle. Exemple : soit convertir 32,125 en base 2 : on sait que 32 est quivalent 100000 et
0,125 * 2 = 0,25 partie entire = 0 et partie fractionnaire = 0,25 0,25 * 2 = 0,5 0,5 * 2 = 1 partie entire = 0 et partie fractionnaire = 0,5 partie entire = 1 et partie fractionnaire = 0

Ce qui donne : 32,125 = 32 + 0,125 100000 + 0, 001 = 100000,001 en base 2 Normalisation : le problme qui se pose maintenant est le stockage en mmoire ou dans un registre d'une quantit crite en base 2. Dans un premier temps, tout nombre sera traduit sous forme d'un produit entre une fraction (une fraction est un nombre avec une partie entire nulle, c'est dire infrieur 1 en valeur absolue ou encore commenant par un point dcimal) et une puissance de 2. Exemple : 32,125 s'crit aussi 100000,001 ou encore 0,100000001*2 6 Pour mmoriser un nombre, il suffit donc de coder sa puissance de 2 et sa fraction. L'intrt de cette mthode est que l'on sait toujours ou se trouve le point dcimal et qu'il n'y a plus de partie entire, on obtient donc un mode de reprsentation fig. Il est clair qu'il faut aussi un bit pour mmoriser le signe (0 = + et 1 = ), un bit pour chaque chiffre de la fraction en base 2 et quelques chiffres pour reprsenter la puissance (positive ou ngative) traduite en base 2.

Remarque : si la fraction est trop grande, il n'est pas question de prendre en compte tous les chiffres. 3. Virgule flottante: En clair, tout nombre sera dsormais crit sous la forme d'un produit entre une puissance de 2 et une fraction dont les chiffres sont les chiffres significatifs du nombre. La seule exception tant le 0 qui n'a pas vraiment de chiffres significatifs. Tout nombre non nul peut tre mis sous ce format, appel virgule flottante normalise. Nous le reprsenterons par : SM*2e o S est le signe, M la mantisse et e l'exposant. La ralit : pour stocker un nombre dcimal dans une mmoire binaire, il suffit de le convertir en binaire, puis de mettre le rsultat au format virgule flottante normalise : SM*2e avec 1/2&; M<1 Remarque : (1/2&; M permet d'liminer les 0 droite de la virgule de faon obtenir plus de chiffres significatifs, prcision). Un nombre p de bits sera utilis pour la fraction m. Le premier bit de celle-ci tant ncessairement 1. Un nombre p' de bits sera utilis pour l'exposant e. Pour coder les exposants ngatifs, il a fallu imposer un codage (autre que le complment 2). Une constante, k, est ajoute l'exposant de telle manire que l'ensemble devienne positif. K+e s'appelle la caractristique du nombre. Nous allons voir les deux formats les plus utiliss dans un micro-ordinateur. Tous les deux comptent 32 bits avec p = 23 et p' = 8 Norme IBM sur 32 bits
31 24 e+128 23 Signe 22 0 23 premiers chiffres de la Mantisse

Norme IEEE sur 32 et 80 bits


31 Signe 79 Signe 30 23 e +126 78 64 Exposant : e+16383 22 0 23 premiers chiffres de la Mantisse 63 0 Mantisse

Pour le 80387, cela permet d'obtenir des nombres allant de 3,4*10e-4932 1,2*10e+4932 (ce qui est suprieur au nombre d'atomes composants la terre !)