Chapitre 5 : convertisseurs Numérique-Analogique et Analogique-Numérique

Nombres réels

Maintenant que nous savons représenter les entiers naturels et relatifs, il convient de s'attaquer aux nombres réels. Nous ne ferons qu'effleurer cet aspect en restant bien conscient qu'il y a derrière une science complexe de composants électroniques et d'algorithmes pour mener à bien des calculs qui portent sur des réels au sein de l'ordinateur. En réalité, nous nous occuperons dans cette section non pas des réels au sens mathématique puisque l'ordinateur ne peut simplement représenter les irrationnels qu'avec un nombre fini de bits. Nous nous contenterons donc de nombres décimaux avec un nombre fini de décimales. Par abus de langage, nous parlerons néanmoins de représentation des réels.

Il y a essentiellement deux manières de représenter les nombres décimaux ou réels : la représentation en virgule fixe ou en virgule flottante. 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 :

en consacrant les 4 premiers bits (à droite) à la partie décimale et les 8 suivants à la partie entière. La position de la virgule est ici implicite et doit évidemment être connue. 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.

Les processeurs puissants des ordinateurs modernes sont équipés à présent d'unités de calcul en virgule flottante. 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. La plupart des machines utilisent un standard appelé IEEE 754 qui spécifie en fait deux formats de nombre en virgule flottante ainsi que quelques opérations associées. Les deux formats fixés par cette norme sont appelés respectivement réels simple précision dans lequel le nombre est codé sur 32 bits et réels double précision dans lequel le nombre est codé sur 64 bits, soit 8 octets.

La norme est synthétisée dans le tableau suivant :

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.

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 va être arrondi à si bien que la différence ne sera pas égale à 1 mais à 0. Les concepteurs de logiciels de calcul comme Scilab que nous utilisons beaucoup 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.

Remarque

Scilab code tous les nombres y compris les booléens et les entiers en réel double précision ce qui conduit à un gaspillage de mémoire considérable : ainsi, un booléen qui par définition consomme 1 bit (variable VRAI ou FAUX soit 1 ou 0) est codé sous Scilab par un réel double précision à l'aide de 64 bits.

PrécédentPrécédentSuivantSuivant
AccueilAccueilImprimerImprimerRéalisé avec Scenari (nouvelle fenêtre)