Exposant décalé (Norme IEEE-754)

Résolu/Fermé
Psyco - 8 oct. 2016 à 17:21
 Psyco - 8 oct. 2016 à 22:47
Bonjour à tous et toutes,

J'ai besoin de votre aide concernant la norme IEE 754 et particulièrement l'exposant décalé.

Je n'arrive pas à trouver pourquoi dans certains cas, sur 64bits (et réciproquement 32bits), parfois on ajoute 1023 (réciproquement 127) parfois on soustrait 2013 à l'exposant décalé afin de déterminer l'exposant.

En effet, dans mon cours, il y a marqué "[...] on utilise un décalage de 2013 : soit n + 1023"
Or l'exemple qui suit, on voit " Exposant décalé : 1094 => Exposant = 1094-1023=77"
Puis dans d'autres exercices on voit parfois une addition et parfois une soustraction.

Alors voici ma question : Dans quel cas AJOUTER 1023 (et réciproquement 127) et dans quel cas ENLEVER 2013 (réciproquement 127)

Merci de votre aide !


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
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
0
Tout d'abord, merci d'avoir pris le temps de répondre :)

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.
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
8 oct. 2016 à 22:44
Tout dépend dans quel sens tu fais la conversion...

Le bon calcul c'est :
Exposant Binaire = Exposant IEEE754 - Décalage

Ce qui donne à l'envers :
Exposant IEEE754 = Exposant Binaire + Décalage


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
0
Psyco > KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024
8 oct. 2016 à 22:47
D'accord ! Oui effectivement, ça me parait logique ...

Merci beaucoup de l'aide !! :)

Bonne soirée et bon week-end.
0