Exposant décalé (Norme IEEE-754)
Résolu/Fermé1 réponse
KX
Messages postés
16733
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 janvier 2024
3 015
Modifié par KX le 8/10/2016 à 22:07
Modifié par KX le 8/10/2016 à 22:07
Bonjour,
Le décalage est fait pour avoir toujours un entier positif pour l'exposant, mais pour représenter des puissances aussi bien positives que négatives.
Ainsi, si on a E bits d'exposants, un entier peut aller de 0 à 2^E-1, en soustrayant 2^(E-1)-1 cela permet d'aller de -2^(E-1)-1 à +2^(E-1)
En 32 bits, E=8, on soustrait 2^(8-1)-1=127, l'exposant va de -127 à +128
En 64 bits, E=11, on soustrait 2^(11-1)-1=1023, l'exposant va de -1023 à +1024
NB. les exposants -127 et +128 (resp. -1023 et +1024) sont utilisés pour gérer des cas particuliers : infinis, NaN et nombres dénormalisés, on ne pourra donc utiliser que les exposants -126 à +127 (resp. -1022 à +1023)La confiance n'exclut pas le contrôle
Le décalage est fait pour avoir toujours un entier positif pour l'exposant, mais pour représenter des puissances aussi bien positives que négatives.
Ainsi, si on a E bits d'exposants, un entier peut aller de 0 à 2^E-1, en soustrayant 2^(E-1)-1 cela permet d'aller de -2^(E-1)-1 à +2^(E-1)
En 32 bits, E=8, on soustrait 2^(8-1)-1=127, l'exposant va de -127 à +128
En 64 bits, E=11, on soustrait 2^(11-1)-1=1023, l'exposant va de -1023 à +1024
NB. les exposants -127 et +128 (resp. -1023 et +1024) sont utilisés pour gérer des cas particuliers : infinis, NaN et nombres dénormalisés, on ne pourra donc utiliser que les exposants -126 à +127 (resp. -1022 à +1023)La confiance n'exclut pas le contrôle
8 oct. 2016 à 22:24
J'avoue ne pas avoir compris le lien entre ce que vous avez expliqué et le pourquoi ajouter ou soustraire 1023/127
Prenons l'exemple de (10,50) base 10 qu'on voudrait mettre en binaire avec la double précision.
(10,50) = (1010,1) = (1,0101)*2^3
Le signe est positif car le bit de signe est égal à 0
Exposant n=3
Exposant décalé = 3+1023 = (1026) = (10000000010)
Pourquoi ne pas avoir fait 3-1023 ?
-----------------
Second exemple toujours sur 64 bits. Exposant décalé : (00100000011) = 256+2+1=259 Exposant := 259-1023 = -764 Pourquoi ne pas avoir fait 259+1023?
Merci de votre réponse.
8 oct. 2016 à 22:44
Le bon calcul c'est :
Ce qui donne à l'envers :
En 64 bits avec un décalage de 1023 :
Exposant Binaire = 3 → Exposant IEEE754 = 3 + 1023 = 1026
Exposant IEEE754 = 259 → Exposant Binaire = 259 - 1023 = -764
8 oct. 2016 à 22:47
Merci beaucoup de l'aide !! :)
Bonne soirée et bon week-end.