Exposant décalé (Norme IEEE-754)

Résolu
Psyco -  
 Psyco -
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

  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    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
    1. Psyco
       
      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
    2. KX Messages postés 19031 Statut Modérateur 3 020
       
      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
      1. Psyco > KX Messages postés 19031 Statut Modérateur
         
        D'accord ! Oui effectivement, ça me parait logique ...

        Merci beaucoup de l'aide !! :)

        Bonne soirée et bon week-end.
        0