Représentation des nombres réels

Représentation des nombres rationnels

En notation décimale, les chiffres à gauche de la virgule représentent des unités, des dizaines, des centaines, etc. et ceux à droite de la virgule, des dixièmes, des centièmes, des millièmes, etc. De même, en binaire, les chiffres à droite de la virgule représentent des demis, des quarts, des huitièmes, etc.

 

 

Activité : représentation décimale
Trouver la représentation décimale des nombres suivants :
  • \(110,011010_2\)
  • \(10,11001_2\)

 

 

Représentation de la partie décimale d’un nombre

La méthode est simple et ressemble à celle utilisée pour représenter la partie entière d’un nombre :

A partir de la partie décimale du nombre à représenter :

  1. Multiplier le nombre par 2 ;
  2. Si le résultat est strictement inférieur à 1, alors on retient le chiffre 0, sinon on retient le chiffre 1 ;
  3. Recommencer à l’étape 1 avec la partie décimale du nombre obtenu à l’étape 2.
    L’opération est terminée lorsque ce nombre est nul.
Activité : représentation décimale
Représenter en binaire les nombres suivants :
  • \(\frac{1}{4}\)
  • \(0,125_{10}\)
  • \(0,4_{10}\)

 

Valeur approchée

En base 10, il est impossible de représenter certains nombres rationnels (par exemple \(\frac{1}{3}\approx 0,33333333\cdots\)). Cela concerne tous les nombres pour lesquels il n’existe pas de puissance de 10 par lesquels on peut les multiplier pour obtenir un entier.

De la même manière, en base 2 il est impossible de représenter les nombres pour pour lesquels il n’existe pas de puissance de 2 par lesquels on peut les multiplier pour obtenir un entier.

Par exemple : \(0,1_{10}\approx 0,0001100110011\cdots\), avec le motif \(0011\) qui se répète à l’infini.

Activité : représentation décimale
Déterminer la représentation binaire de \(\frac{9999}{4096}\)

 

Déterminer la représentation binaire de 7,5947265625. Montrer que l’on peut écrire ce nombre sous la forme d’une fraction dont le dénominateur est une puissance de 2.

 

 

Virgule flottante

En base 10, il est possible d’écrire les très grands nombres et les très petits nombres en utilisant les puissances de 10 :

Par exemple \(5,187\cdot10^{23}\)

Il est possible de faire exactement la même chose avec une représentation binaire, en utilisant les puissances de 2 :

Par exemple \(101,1101\cdot2^{10}\). (ATTENTION, l’exposant 10 est aussi exprimé en binaire !)

Cette notation est appelée notation à virgule flottante car en effet, pour représenter un même nombre, la virgule peut être décalée à droite ou à gauche :

  • en base 10, décaler la virgule vers la droite revient à multiplier le nombre par 10
    exemple : \(12,5819\cdot10^{4}=125,819\cdot10^{3}\)
  • en base 2, décaler la virgule vers la droite revient à multiplier le nombre par 2
    exemple : \(1110,1100101\cdot2^{1000}=11101,100101\cdot2^{0111}\)

D’une manière générale, une représentation à virgule flottante consiste à représenter un nombre réel par :

  • un signe (égal à −1 ou 1),
  • une mantisse (aussi appelée significande)
  • et un exposant (entier relatif, généralement borné).

Un tel triplet représente le nombre réel : \(signe \times mantisse \times b^{exposant}\)

 

Représentation des flottants dans un ordinateur

Source : https://fr.wikipedia.org/wiki/IEEE_754

L’IEEE 754 est une norme sur l’arithmétique à virgule flottante. Elle est la norme la plus employée actuellement pour le calcul des nombres à virgule flottante dans le domaine informatique, avec les CPU et les FPU. La norme définit les formats de représentation des nombres à virgule flottante  et valeurs spéciales (infinis et NaN), en même temps qu’un ensemble d’opérations sur les nombres flottants. La première version de cette norme date de 1985.

Selon la norme IEEE 754, le nombre réel à exprimer en binaire doit être écrit sous la forme :

\(\pm \times mantisse \times 2^{exposant}\)

de sorte que la mantisse s’écrive \(1,\cdots\)

et que sa partie décimale et l’exposant puissent être représentée en code binaire naturel :

\(s \times 1,a_{22}a_{21}\cdots a_{1}a_{0}\times 2^{b_{7}b_{6}\cdots b_{1}b_{0}}\)

Il peut être exprimé en binaire, à l’aide de 32 bits, sous la forme :

\(s\) \(b_{7}b_{6}\cdots b_{1}b_{0}\) \(a_{22}a_{21}\cdots a_{1}a_{0}\)
bit de signe :

  • + : 0
  • – : 1
bits d’exposant :

\(exposant=\left(b_{7}b_{6}\cdots b_{1}b_{0}\right)_2-127\)

Soient des exposants \(2^{-126}\) à \(2^{127}\)

Les valeurs 0000 0000 et 1111 1111 sont réservées à un autre usage

bits de mantisse :

\(a_{22}a_{21}\cdots a_{1}a_{0}\)

Correspondants aux chiffres binaires après la virgule, la partie entière étant toujours égale à 1

 

Convertisseur en ligne

Exemple :

La représentation sur 32 bits de \(0,1\) s’obtient de la manière suivante :

\(0,1=1,6\times 2^{-4}\)

\(-4+127=123=0111 1011_2\)

\(1,6=1,10011001100110011001100_2\)

⇒ 0               01111011                                 10011001100110011001100

 

La norme prévoit deux formats :

  • Simple précision : 32 bits (8 bits d’exposant, 23 bits de mantisse)
  • Double précision : 64 bits (11 bits d’exposant, 52 bits de mantisse)

 

Vous aimerez aussi...

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *