IEEE 754

8
22 décembre 2015
Bonjour,

J'ai un cours d'algorithmique et j'ai besoin d'aide.
L’IEEE 754 est une norme pour la représentation des nombres à virgule flottante en binaire.
avec le format simple précision (32 bits : 1 bit de signe, 8 bits d'exposant (−126 à 127), 23 bits de mantisse, avec bit 1 implicite)

Je ne comprends comment fait-on pour obtenir que l'exposant va de -126 à 127
pourquoi ne pourrait-il pas aller de 127 = 01111111 à -127 =10000001 ?

Et si l'on me demande de trouver le décalage pour un exposant étant codé sur un certain nombre de bits ( par exemple 3) comment fait-on pour trouver la valeur du décalage ?

8 commentaires

* ouvre le topic *

* ressors discrètement du topic *

Banni

Oh mon dieu, mes cours de L1 .

C'est simple en fait, tu fais une erreur toute bête ici regarde

Le premier signe est le bit de signe : Donc 01111111 : 1 + 2 + 4 + 8 + 16 + 32 + 64 = 127 avec le premier 0 qui signifie que tu as un nombre positif.
Ensuite tu fais 100000001 : 1 et le bit de signe 1 indique le négatif, cette valeur représente donc -1 et pas -127 ! ;). Tu peux allez jusqu'à 2^7 en fait (64) avec les valeurs binaires !

J'espère avoir été clair ! (Moi qui pensais que je ne me resservirai jamais de ce cours XD)

Posteur

désolé Maximilange je n'ai pas compris
j'ai codés sur 8 bits avec 1 bit de signe -127 , et tu as codé sur 9 bits dont 1 bit de signe

Posteur

Pour moi l'exposant s'il va jusqu'à 127 pourquoi ne pourrait-on pas également codé -127 ? il est écrit que c'est -126 à 127

j'y entrave que dale , j'ai fait du binaire y'a 30ans ...même pas sûr que cette norme faisait parti de mes cours , mais j'aime bien jouer. j'éditerais si je passe trop pour un ...

-127 n'existe pas parce que 11111111 représente l'infini

+

Banni

Ah non, je me souviens ! Il existe un 0 positif et un 0 négatif, qui sont donc représentés de deux façons pour un même nombre ! Il y a deux zéros : +0 et −0 (zéro positif et zéro négatif), selon la valeur du bit de signe.

En fait, tu dois toujours calculer en appliquant l'exposant +127. Par exemple ton exposant est toujours [valeurdonnée] + 127

Du coup pour l'exposant 2, il te faut donc avoir 129 : 1000 0001 = 129 - 127 = 2

Tu as cet ordre là des valeurs : -1 0- 0+ 1 (on compte le zéro deux fois !)

32 bits : (-1)s x 1,M x 2E+-127

Du coup, en toute logique, tu as 0 0000 0000 = +0 -127 (tu pars de 0+, donc le nombre suivant est 0-) = -126
Et à l'inverse : 1 0000 0000 = - (0+ -127) = tu pars ici du 0+, tu peux donc monter jusqu'à 127 puisque tu ne passes pas par un deuxième zéro ! (le bit de signe va donc inverser la soustraction de ton exposant)

Je crois que c'est quelque chose comme ça mais ça remonte un peu ahah, tu apprends ça dans quel université ?


PS : Il me semble que j'avais uploadé mes cours sur Monamphi si tu veux ( monamphi.com/ins…ion?parent=12432) si jamais ça peut t'aider, mais j'avoue que.. ces cours ne m'ont jamais interessé alors c'est vite sorti de ma tête ^^'

C'est assez flou donc bon, j'espere avoir pu t'aider mais je pense pas que ce ce soit 100% pertinent.. Désolé de pas pouvoir t'aider plus

Je crois qu'avec 8 bits tu peux aller de -127 à +128:

-127 = 1111 1111
-126 = 1111 1110
...
-1 = 1000 0001
0 = 0000 0000
1 = 0000 0001
...
127 = 0111 1111
128 = 1000 0000

Posteur

Merci pour vos réponses j'ai compris comment faire
si l'on me dit que l'exposant est codé sur N bits pour connaitre le décalage il suffit de calculer (2 à la puissance (N-1) ) - 1
et pour l'explication du -126 à 127 je vais juste me dire que c'est par convention pour garder le même nombre de nombre positifs et négatifs
Laisser un commentaire
Avatar
@
    Texte