S'entraîner sur les flottants...

Méthode isclose()

Question

Après avoir testé que 0.2 + 0.1 est différent de 0.3 en machine, comparez avec la méthode isclose() de Python ces réels :

  • 12.3 et 12.423

  • 15.733 et 15.733

  • 17.733 et 17.74

  • 1.233 et 1.2330000001

Solution

On trouve un exemple de résolution sur cette page.

Décomposition d'un nombre décimal écrit en base 10

Question

Décomposer ces nombres décimaux :

  • 54598,2345

  • 1,9546

À propos des différentes écritures...

On n'oubliera pas de parcourir le cours qui précise les différents méthodes.

Question

Écrire en base 10 les nombres réels binaires suivants :

  • (1010,111010)2

  • (11100,0011110)2

Question

Écrire en base 2 les nombres réels décimaux suivants :

  • (5,625)10

  • (8643,5712)10

Dans le cas d'un nombre binaire avec une écriture infinie, calculer sur 12 bits après la virgule et donner une valeur approchée trouvée.

Écriture de flottants

Question

Faire la liste des flottants en imposant p = 3 et e = 1

Indice

On dira d'abord quelles sont les mantisses possibles... en se rappelant que la mantisse est un nombre à p chiffres, avec exactement un chiffre (non nul) avant la virgule

Question

Quel nombre décimal est représenté par le mot de 64 bits suivant ?

0 10001000110 1010110110000000000000000000000000000000000000000000

Question

Quel nombre décimal est représenté par le mot de 32 bits suivant ?

1 10000110 10101101100000000000000

Indice

Tout est dans le cours...

Question

Représenter le nombre réel -10.125 au format simple précision selon la norme IEEE 754

Indice

La méthode est détaillé dans le cours. De plus, n'oubliez pas qu'il faut décaler l'exposant de 127 en simple précision.

Solution

Soit le nombre "-10,125" en base 10 représentons-le au format simple précision :

  • Nous avons (10)10 = (1010)2 et (0,125)10 = (0,001)2 soit (10,125)10 = (1010,001)2

  • Décalons la virgule : 1010,001 = 1,010001.23, soit avec le décalage de l'exposant (en simple précision c'est un ajout de 127) 1,010001.2130, en écrivant l'exposant en base 2, nous obtenons 1,010001.210000010

  • Nous avons donc :

    • notre bit de signe = 1 (nombre négatif),

    • nos 8 bits d'exposant = 10000010

    • et nos 23 bits de mantisse = 01000100000000000000000

  • Soit en "collant" tous les "morceaux" : 1 10000010 01000100000000000000000

Remarque

Cette écriture étant un peu pénible, il est possible d'écrire ce nombre en hexadécimal : C1220000