Telechargé par THR Gaming

cours 04

publicité
Université Ammar Télidji
Département d’Informatique et de Mathématiques
1ère Année L.M.D MI
Module : Structure Machine1
Représentation d'information
Nombres fractionnaires
2018/2019
Instruction
Non Numériques
Nombres entiers positifs ou nuls
Information
Donnée
Nombres entiers négatifs
Numériques
Signe
c1
+
valeur absolue
c2
Nombres fractionnaires
La représentation des nombres réels
•
Un nombre réel est constitué de deux parties : la partie entière et la partie
fractionnaire ( les deux parties sont séparées par une virgule )
Problème : comment indiquer à la machine la position de la virgule ?
Il existe deux méthodes pour représenter les nombre réel :
Virgule fixe : la position de la virgule est fixe,
Virgule flottante : la position de la virgule change ( dynamique ),
1 Représentation en virgule fixe
Dans cette représentation la partie entière est représentée sur n bits et la partie
fractionnaire sur p bits , en plus un bit est utilisé pour le signe.
conversion de nombre fractionnaire : binaire ->Décimal
le nombre 1010,101 peut représenter la somme suivante :
1010 est la partie entière du nombre,
101 sa partie fractionnaire.
• Soit, en écriture décimale : 8 + 2+ 0,5 + 0,125 = 10,625
1 Représentation en virgule fixe
conversion de nombre fractionnaire :Décimal -> binaire
Méthode :
1) multiplier la partie fractionnaire par 2
2) extraire la partie entière (un poids)
3) continuer tant que la partie fractionnaire restante ≠0
Exemple
Traduire en binaire le nombre 78,347 ?
Résultat final :
78,347 écrit en décimal
représente 1001110,0101100011 écrit en binaire
Partie fractionnaire : 0,347
2 Représentation en virgule flottante
•
Chaque nombre réel peut s’écrire de la façon suivante :
N= ± M * b
– M : mantisse ,
– b : la base ,
– e : l’exposant
Exemple 1:
Exemple 2:
( 110,101) 2 = (0,110101) 2 * 2 +3
(0,00101) 2 = - ( 0,101) 2 * 2 -2
e
2 Représentation en virgule flottante
• Un même nombre réel peut être écrit de différentes façons. Par exemple:
0.110x2 5 = 110x2 2 = 0.0110x2 6
• Pour éviter des représentations différentes du même nombre, la mantisse est
normalisée. Dans la convention la plus courante, un nombre binaire normalisé
différent de zéro a la forme:
±1.bbb...bx2 ±e
2 Représentation en virgule flottante
Dans cette représentation sur n bits :
La mantisse est sous la forme signe/valeur absolue
• 1 bit pour le signe
• L’exposant ( positif ou négatif ) est représenté sur p bits .
• et k bits pour la valeur.
Signe mantisse
Exposant
1 bit
p bits
Mantisse normalisée
Pour la représentation de l’exposant on utilise :
1) Le complément à deux
2) Exposant décalé ou biaisé
k bits
Représentation de l’exposant en complément à deux
• Exercice 1
On veut représenter les nombres +( 0,015) 8 et -( 15, 01) 8 en virgule flottante sur une machine
ayant le format suivant :
Signe mantisse
Exposant en CA2
1 bit
4 bits
Mantisse normalisée
8 bits
(0,015) 8 =(0,000001101) 2 = 1,101 * 2 -6
Signe mantisse : positif ( 0)
Mantisse normalisé : 1,101
Exposant = -6 utiliser le complément à deux pour représenter le -6
Sur 4 bits CA2(0110)=1010
0
1 bit
1 0 1 0
4 bits
1 0 1 0 0 0 00
8 bits
Représentation de l’exposant en complément à deux
- (15,01) 8 = - (001101,000001) 2 = - 1,101000001 * 2 3
Signe mantisse : négatif ( 1)
Mantisse normalisée : 1,101000001
Exposant = 3 , en complément à deux il garde la même valeur (00 1 1)
On remarque que la mantisse est sur 9 bits (1010 0000 1), et sur la
machine on a seulement 8 bits sont utilisés pour la mantisse.
Dans ce cas on va prendre les 8 premiers bits de la mantisse
1
1 bit
00 1 1
4 bits
1 0 1 0 0 0 00
8 bits
Remarque :
si la mantisse est sur k bits et si elle est représenté sur la machine sur k’ bits tel que k>
k’ , alors la mantisse sera tronquée : on va prendre uniquement k’ bits  k - k’ bits
perdre dans la précision .
L’ Exposant décalé ( biaisé )
• Avec l’exposant biaisé on a transformé les exposants négatifs à des
exposants positifs en rajoutons à l’exposant la valeur 2 p -1 -1
Exposant Biaisé = Exposant réel + Biais
• La valeur 2 p-1 -1 s’appelle le biais ou le décalage
Exemple
• On veut représenter les nombres ( 0,015) 8 et -( 15, 01) 8 en virgule flottante sur une machine
ayant le format suivant :
Signe mantisse
Exposant décalé
4 bits
1 bit
Mantisse normalisée
11 bits
(0,015)8=(0,000001101) 2 = 1,101 * 2 -6
Signe mantisse : positif ( 0)
Mantisse normalisé : 101
Exposant réel = -6
Calculer le biais : b= 2 4-1 -1 = 7
Exposant Biaisé = -6 + 7 = +1 = ( 0001) 2
1 bit
0
4 bits
0 0 01
11 bits
1010 0000 0 0 0
Exemple 2
- (15,01) 8 =(001101,000001) 2 = 1,101000001 * 2 3
• Signe mantisse : négatif ( 1)
• Mantisse normalisée : 1,101000001
• Exposant réel = + 3
• Calculer le biais : b= 2 4-1 -1= 7
• Exposant Biaisé = 3 + 7 = +10 = ( 1010) 2
1
1 bit
1010
4 bits
1 0 1 0 0 0 0 0 1 00
11 bits
La norme IEEE 754
La norme IEEE 754 (Standard for Binary Floating-Point Arithmetic) définit
plusieurs représentations de nombres réels (appelés flottants en informatique) :
• simple précision (32 bits)
• double précision (64 bits)
Les nombres sont décomposés en :
• signe
• mantisse (tronquée)
• exposant (décalé)
La norme IEEE 754
Représentation
Simple
précision
Double
précision
taille (bits)
32
64
signe
1
1
Exposant
8
11
Mantisse
23
52
Encodage en IEEE754 (décimal-> IEEE754)
Essayons d’encoder le nombre +16,5 en simple précision.
1) Encoder en binaire le nombre à virgule
+16,5 = (10000,1) 2
2) Transformer en notation scientifique (souvenez-vous que décaler la virgule revient
à multiplier/diviser par 2)
(10000,1) 2 = (1,00001*24) 2
3) Identifier les champs
signe = 0 (positif)
exposant = 4
mantisse = 00001 (on ne prend pas le 1,)
4) Encoder l’exposant
4 doit être codé sur 8 bits par excès de 127 => on encode 131 = (1000
0011) 2
5) Résultat final (En contrôle, écrire tous les 0 à la fin pour faire 32 bits)
0 1000 0011 00001000…
Regroupage des bits par 4
0100 0001 1000 0100 0000 0000 …
En Héxa (ne pas oublier les 0 à la fin pour faire 32 bits) ----- > 41 84 00
00
La norme IEEE 754
Dans la norme IEEE754 il y a des valeurs spéciales
• Le zéro : MANTISSE =0 EXPOSANT = 0
1/0 0 0 0 0 0 0 0 0
00 0000 0000 0000 0000 0000 0000
Infini : MANTISSE = 0 EXPOSANT = 1 PARTOUT
Une valeur infinie est utilisée pour indiquer par exemple un débordement ou une division par zéro.
Il y a deux valeurs infinies possibles, positive et négative
1/0 1 1 1 1 1 1 1 1
00 0000 0000 0000 0000 0000 0000
NaN (Not a Number) MANTISSE ≠ 0 EXPOSANT = 1 PARTOUT
NAN est le résultat d'une opération arithmétique erronée. Par exemple le calcul de la racine carrée des
nombres négatifs
1/0 1 1 1 1 1 1 1 1
00 0000 0001 0000 0000 0000 0000
La norme IEEE 754
Remarque
• L’avantage de la virgule flottante par rapport à la virgule fixe est que
l’intervalle des valeurs possibles est plus étendu (elle est la plus
utilisée par les ordinateurs)
Décodage du IEEE754 (IEEE754 ->décimal)
Essayons de décoder le nombre réel (4024000000000000) 16 qui est en double précision (puisqu’il utilise 64 bits).
1) Analyser le nombre en binaire
0100 0000 0010 0100 0000000…
2) Identifier les champs
signe : 0 (positif)
exposant : 100 0000 0010 (11 bits en double précision)
mantisse : 010000…
3) Décoder l’exposant
On trouve un exposant affiché de (100 0000 0010) 2 = (1026) 10
Mais il faut se rappeler que pour coder cet exposant, on lui avait ajouté 1023 (sur 11 bits,
codage par excès de 1023).
L’exposant réel vaut donc 3.
4) Ecrire le nombre en binaire en notation scientifique (1,01*23) 2
5) En déduire le résultat final :
(1,01*23) 2 = (1010) 2 = (10) 10
(multiplier par 23 revient à décaler la virgule de 3 chiffres à droite en binaire).
Téléchargement