Vous êtes sur une version archivée de lyceum.fr de l'année 2023/2024. Revenir au présent.

Exercices

Chapitre 3: Représentation des nombres à virgule

On rappelle que l’encodage des nombres flottants s’effectue de la façon suivante:

s m 2 n s\ m \cdot 2^n

Représentation générale d’un nombre à virgule flottante

1 Encodage sur un octet

On considère des nombres flottants encodés sur un octet avec:

  • 1 bit de signe,
  • 3 bits d’exposant,
  • 4 bits de mantisse.
  1. Calculer le décalage de l’exposant. Quel est l’intervalle d’exposant accessible?

  2. Trouver les nombres à virgule représentés par les mots binaires suivants:

    • 0111 1000
    • 1001 0001
  3. Donner les représentations binaires des nombres flottants suivants:

    • 2 , 5 = 1 , 25 × 2 1 2,5=1,25 \times 2^1 .
    • 1 , 125 = 1 , 125 × 2 0 -1,125=-1,125 \times 2^0 .

2 Encodage demi-précision sur 16 bits

On considère des nombres flottants encodés sur deux octets avec:

  • 1 bit de signe,
  • 5 bits d’exposant,
  • 10 bits de mantisse.
  1. Calculer le décalage de l’exposant. Quel est l’intervalle d’exposant accessible?

  2. Trouver les nombres à virgule représentés par les mots binaires suivants:

    • 01000000 10000000
    • 11000000 00100000
  3. Donner les représentations binaires des nombres flottants suivants:

    • 6 , 5 = 1.625 × 2 2 -6,5=-1.625\times 2^{2} .
    • 0 , 017578125 = 1 , 125 × 2 6 0,017578125=1,125\times 2^{-6} .

3 Encodage simple précision sur 32 bits

On considère des nombres flottants encodés sur 32 bits avec:

  • 1 bit de signe,
  • 8 bits d’exposant
  • 23 bits de mantisse.
  1. Calculer le décalage de l’exposant. Quel est l’intervalle d’exposant accessible?

  2. Trouver les nombres à virgule représentés par les mots binaires suivants

    • 00111111 11000000 00000000 00000000
    • 10111110 00000000 00000000 00000000
  3. Donner les représentations binaires des nombres flottants suivants:

    • 4 , 5 = 1 , 125 × 2 2 -4,5=-1,125 \times 2^{2} .
    • 0 , 046875 = 1 , 5 × 2 5 0,046875=1,5 \times 2^{-5} ).

4 Exercice Python n°1

On considère le programme suivant:

x = 1.0
y = x + 1.0
while y - x == 1.0:
    x = x * 2.0
    y = x + 1.0
print("Terminé, y=", y)
  1. Si l’on calculait sur des nombres rationnels exacts, que se passerait-il lors de l’exécution de ce programme ?

  2. Écrire ce programme et l’exécuter. Que constate-t-on ?

  3. Modifier le programme de façon à déterminer au bout de combien d’exécutions du corps de la boucle il s’arrête, ainsi que la valeur de x à la fin de cette exécution.

  4. Comment est représentée cette dernière valeur de x ? Et celle de y ?

On pourra utiliser un convertisseur en ligne comme: http://www.binaryconvert.com/convert_double.html

  1. Proposer une explication de ce comportement.

5 Exercice Python n°2

On considère le programme suivant:

a = 0.0
for _ in range(0, 10):
    a = a + 0.1
    print(a)
  1. Si l’on calculait sur des nombres rationnels exacts, que se passerait-il lors de l’exécution de ce programme ?

  2. Écrire ce programme et l’exécuter. Que constate-t-on ?

  3. Vérifier avec le convertisseur en ligne que la représentation binaire de 0,1 est 0_01111111011_1001100110011001100110011001100110011001100110011010.

    Quel nombre décimal cette représentation désigne-t-elle en réalité ?

  4. Expliquer le résultat obtenu.

5.0.1 Source

Informatique et sciences du numérique Spécialité ISN en terminale S - Avec des exercices corrigés et des idées de projets par Gilles Dowek