Laboratoire 10 - Flottants

Sommaire

Rappels IEEE-754

Formats des nombres à virgule flottante:

  • Simple-précision (32 bits): 1 bit de signe, 8 bits d’exposant (pôle=127), 23 bits de mantisse
  • Double-précision (64 bits): 1 bit de signe, 11 bits d’exposant (pôle=1023), 52 bits de mantisse

Conversions

  • Convertissez en binaire simple-précision le nombre 1664.125
  • Convertissez en décimal le nombre simple-précision 42FA4000
  • Convertissez en décimal le nombre simple-précision FF800000
  • Convertissez en binaire double-précision le nombre 125.25
  • Convertissez en binaire simple-précision le nombre 65536
  • Convertissez en binaire simple-précision le nombre 0.1
  • Convertissez en binaire double-précision le nombre littéral flottant hexadécimal 0xCAFE.13371573p10

Volume

Écrivez un programme volume.s qui demande le rayon r et la hauteur h d’un cylindre et affiche son volume

Formule: r^2 * h * pi

Note: c’est très pratique pour estimer le nombre de bocaux (en litres) quand on fait des conserves en partant des dimensions de la marmite (en décimètres).

Piscine

Étendre le programme c2f.s vu en cours.

Ajouter un test qui affiche « Trop froid! » si la température est inférieure à 82°F.

Perte de précision (en Java)

  • Quel est le plus petit flottant simple précision positif f tel que f+1.0==f ?

Validez votre réponse en le programmant en Java.

Float f = 0; while (f != f+1) f++; System.out.println(Float.toHexString(f));

Vous pouvez aussi le programmer en RARS, mais le simulateur est très très lent, comptez plusieurs minutes au lieu de quelques dixièmes de secondes en Java.

  • Quel est le nombre flottant simple précision f2 plus grand que f et le suivant tel que f2+1==f2.

Validez votre réponse en affichant les valeurs (hexadécimales exactes) de f+1, f+2, f+3 et f+4.

  • En fonction des valeurs affichées, déduisez quel est le mode d’arrondi utilisé par Java pour ses nombre flottants.

Solution des conversions