La virgule flottante

La virgule flottante

by Oulaya Darbi -
Number of replies: 3

Bonjour, j'ai un peu de mal avec la virgule flottante. 

J'ai compris le concept, le fait que ça s'inspirait de l'écriture scientifique de base 10, où on représente par exemple 0.289753 par 2.89 *10^(-1). Cependant je ne vois pas ce que représente l'écriture :                                                                                                       """ 2^(exposant) . 1. mantisse """ 

Je n'arrive pas à voir à quoi ca va correspondre. Est que la mantisse c'est le motif binaire du nombre fractionnaire, et qu'est ce que le 1 et l'exposant du 2 représentent ? De plus, dans l slide du prof ainsi que dans l'exemple du livre page 97, on a un exemple (figure 4.15) que je n'arrive pas à comprendre. 

J'espère que vous pourrez m'aider. Merci d'avance !

In reply to Oulaya Darbi

Re: La virgule flottante

by Aybars Yazici -

L'idée est que les nombres sont représentés presque exactement comme l'écriture scientifique en base 2. Il semble au début plus facile d'inverser l'ordre de la mantisse et l'exposant vu qu'on est plus habitué à ce type d'enchaînement. Par exemple 12 = 1,5 * 2^3. 

Quand on représente cela sous forme binaire, on n'a besoin que spécifier la partie 'décimale' de la mantisse (1,5) et l'exposant de 2 (2^3).  On annonce à l'ordinateur juste qu'on dispose d'un 3 pour la partie exposante et 0,5 pour la partie mantisse (décimale). Si on a 3 bits pour la partie exposante et 1 pour la mantisse, cela s'écrit en binaire 011 1 ( = 2^3 * 1,(2^-1)).

Le nombre de bits investis pour chaque partie influence soit la gamme de représentation (p. exposante) ou la précisison (p. mantisse)

Il existe aussi un cas particulier pour représenter les valeurs entres 0 et 1. C'est expliqué en plus de détails dans les slides.

In reply to Aybars Yazici

Re: La virgule flottante

by Oulaya Darbi -

D'accord.

Et par rapport a l'exposant de 2, est-ce qu'il est strictement lié à la partie entière du nombre décimal ? Par exemple si je veux représenter le motif binaire du nombre décimal 1,417 avec 4 bits répartis de manière à avoir 2 bits pour l'exposant et 2 bits pour la mantisse. Quel est le raisonnement que je dois avoir ? Est ce que je suis censée faire comme ça : 

   Vu que la partie entière est 1 = 0*2^1 + 1*2^0 donc on aura pour exposant de 2 : 01

  Et vu que avec 2 bits, les parties décimales représentées sont : 0 pour le motif binaire 00, 0.25 pour le motif binaire 01, 0.5 pour le motif binaire 10 et 0.75 pour le motif binaire 11. et que 0.25 < 0.417 < 0.5 donc la mantisse sera celle de 0.25 cad que le nombre 1,417 sera écrit de la façon suivante : 2^01 * 1,01 et donc 01 01


C'est assez confus. J'espère que vous pourrez m'éclaircir là dessus. Et merci d'avance !

In reply to Oulaya Darbi

Re: La virgule flottante / conversion de et vers la base dix dans les slides 34 et 36-37

by Ronan Boulic -

1) Avant de se lancer dans un conversion du décimal vers la virgule flottante, il faut être familier avec l'opération inverse détaillée dans le slide 34.

  • je vous propose de convertir ce motif binaire donnée par la liste F ci-dessous en décimal:
    • F(4) = 0
    • F(3) = 0
    • F(2) = 1
    • F(1) = 0

2) les slides 36-37 du cours M1-L2 d'aujourd'hui donnent l'algorithme pour passer d'un nombre en base 10 vers sa représentation en virgule flottante dans le format illustré en cours (2 bits pour l'exposant, et 2 bits pour la mantisse).

  • Je vous propose d'utiliser cet algorithme pour convertir votre valeur 1,417

Attention l'algo traite le cas général qui inclut zéro (forme dénormalisée) ; c'est important pour votre cas car la valeur à représenter est < 2.

je vous donne la bonne réponse pour que vous puissiez vérifier votre résultat:

  • forme dénormalisée car 1,417 < 2, donc motif binaire de l'exposant -> 00
  • mantisse obtenue par troncation = valeur représentée inférieure à 1,417 -> 10
c'est la valeur de la question 1) qui est l'approximation par troncation de 1,417