TD 2 : Architecture des Ordinateur

Première année d’IUT Informatique

1 Les nombres en virgule flottante : La norme IEEE 754

Un nombre décimal est représenté en simple précision (32 bits) ou en double précision (64 bits) de la façon suivante : s(1) exp biaisé (8 ou 11) ... mantisse (23 ou 52)

Le nombre ainsi représenté est :

si, exp biaisé ≠ 0 et ≠ 255(11111111) (ou ≠ 2047(11111111111) en double) :

(−1)^{s} × 2^{(exp biaisé)−(biais} × 1, ...mantisse...

Le biais vaut 127 (01111111) en simple précision, et 1023 (01111111111) en double précision.

si, exp biaisé = 0 :

(−1)^{s} × 2^{(1)−(biais} × 0, ...mantisse...

si, exp biaisé = 255(11111111) (ou = 2047(11111111111) en double) : alors le nombre représente l’infini si la mantisse est nulle, ou NaN (not a number) sinon.

2 Exercices

1. Donner l’écriture du nombre 1 au format IEEE 754 en simple précision.

2. Si exp biaisé ≠ 0 et ≠ 255(11111111) (ou ≠ 2047(11111111111) en double), quels sont les plus petits et les plus grands nombres représentables en simple et double précision ?

3. Même question si exp biaisé = 0.

4. Donner la représentation simple précision virgule flottante de 2^{5} puis de 2, 125.

5. Quelle est la représentation simple précision virgule flottante de \frac{1}{10} ? Quelle est la précision obtenue ?

6. Même question pour \frac{1}{5}

3 Perte d’information

1. Soient les nombres A = 0 10001110 00000000000000000000000 et B = 0 100110100 00000000000000000000000 au format IEEE 754 en simple précision. Donner les représentations des nombres :

(a) C = A + 1

(b) D = A + B

(c) E = B + C

2. Voici un algorithme :

A <- 1
tant que (((A + 1) - A) - 1) = 0 faire A <- 2 * A
B <- 1
tant que (((A + B) - A) - B) <> 0 faire B <- B + 1

(a) Pour quelle raison la première boucle s´ arrête ?

(b) Pour quelle raison la seconde boucle s´ exécute-t-elle au moins une fois ?

(c) Que contient la variable B en fin d´ exécution ?

3. Nous désirons calculer en simple précision la somme S_{n} = ∑_{1}^{n} \frac{1}{n}. Nous proposons d’écrire deux variantes une où les termes sont cumulés du plus petit au plus grand, et l’autre où l’on cumule dans l’ordre inverse.

(a) Si les résultats obtenus diffèrent dúne variante à l´ autre, quelle peut en être la raison ?

(b) Quelle est la plus précise des deux variantes ?