• 15 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 01/10/2019

Codez en binaire les nombres décimaux

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Virgule fixe

En virgule fixe, comme son nom l'indique, la virgule, ou son équivalent anglo-saxon le point décimal, est fixe ; ce qui signifie qu'on consacre un nombre défini de bits pour la partie décimale à droite de la virgule et un nombre fini de bits à gauche pour la partie entière. Le nombre réel est représenté alors en binaire comme somme pondérée avec les puissances entières négatives de 2. Ainsi, par exemple :

$\(2^3\)$

$\(2^2\)$

$\(2^1\)$

$\(2^0\)$

$\(2^{-1}\)$

$\(2^{-2}\)$

$\(2^{-3}\)$

$\(2^{-4}\)$

$\(2^{-5}\)$

$\(2^{-6}\)$

$\(2^{-7}\)$

 

$\(2^{-8}\)$

1

0

1

1

1

1

0

0

1

0

1

 

1

en consacrant les 4 premiers bits (à droite) à la partie décimale et les 8 suivants à la partie entière.

Sauriez-vous trouver l'équivalent décimal du binaire ci-dessus ?

La position de la virgule est ici implicite et doit évidemment être connue sans ambiguïté. On comprend aisément que si on souhaite davantage de chiffres décimaux, il faudra consacrer davantage de bits à la partie décimale. Typiquement, des représentations classiques sont 16 bits pour la partie entière et 16 pour la partie décimale (format Q16.16) ou encore, 32 bits pour la partie entière et 12 pour la partie décimale.

Il faut bien comprendre que la manipulation des nombres en virgule fixe peut être réalisée de façon logicielle, auquel cas le choix du format Q est de la responsabilité du programmeur. Il doit alors écrire le code correspondant. Si, au contraire, la manipulation est faite par un processeur qui dispose d’une unité de calcul en virgule fixe, auquel cas les opérations sont réalisées de manière matérielle, alors il faut se conformer au Q format du processeur sur lequel on travaille.

On notera que cette représentation est compatible avec la représentation des nombres négatifs en complément à 2. Si on utilise cette technique, en consacrant m bits à la partie entière et n bits à la partie décimale, alors la borne inférieure de représentation vaut -2^(m-1) tandis que la borne supérieure vaudra 2^(m-1) -1/2^n.

Virgule flottante

Les processeurs puissants des ordinateurs modernes sont équipés à présent d'unités de calcul en virgule flottante (FPU pour Floating Point Unit). La performance des processeurs de station de travail ou des supercalculateurs se mesure en GFLOPS voire TFLOPS, c’est-à-dire en giga-opérations en virgule flottante par seconde, voire tera-opérations en virgule flottante par seconde. La représentation des réels en virgule flottante consiste à représenter un nombre par un bit de signe noté S, une mantisse notée M et un exposant noté E.

Le standard est synthétisé dans la table ci-dessous :

Standard IEEE 754
Standard IEEE 754

L'avantage de la représentation en virgule flottante par rapport à la virgule fixe est qu'à nombre de bits identique, elle permet de gérer une dynamique beaucoup plus grande. C'est le principe de la notation scientifique (l'exposant) qui permet de faire flotter la virgule. En calcul scientifique, le format virgule fixe devient vite insuffisant. Les FPU sont des composants dont disposent maintenant tous les processeurs modernes, dès lors qu’ils sont destinés à prendre en charge un minimum de calcul.

Nous ne rentrerons pas dans les détails du standard. On peut juste mentionner qu'il incorpore également des nombres « spéciaux », notamment les deux infinis et le NaN (Not a Number) qui peut apparaître par exemple par division par zéro. Mentionnons enfin que pour les spécialistes de calcul scientifique, il faut comprendre que les erreurs dites de troncature ou d'arrondis peuvent générer des soucis.

Ainsi, en virgule flottante, un très grand nombre comme $\(2^{100} -1\)$ va être arrondi à $\(2^{100}\)$ , si bien que la différence $\((2^{100}-1)-2^{100}\)$ ne sera pas égale à 1 mais à 0. Les concepteurs de logiciels de calcul comme Scilab  ou Matlab doivent tenir compte que les règles d'associativité classiques en mathématiques peuvent devenir délicates d'application, ce qui impose beaucoup de soin dans l'écriture des fonctions mathématiques.

En résumé

Le codage des nombres n'a plus de secret pour nous. Il nous reste tout de même à voir quelques codes spéciaux qui sont utilisés dans des applications particulières. C'est l'objet du prochain chapitre.

Exemple de certificat de réussite
Exemple de certificat de réussite