IEEE 754

Posté par darknain le 22/12/2015 à 17h40

IEEE 754

Le 22/12/2015 à 17h40

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

NOUVELLE REPONSE

Nombre de réponses par page

Ce paramètre s’applique automatiquement à l’ensemble des sujets.

Flux RSS des réponses

Kaeld

Le 22/12/2015 à 17h42

#1 Signaler
* ouvre le topic *

* ressors discrètement du topic *
Maximilange

Le 22/12/2015 à 17h46

#2 Signaler
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)
darknain

Le 22/12/2015 à 17h54

#3 Signaler
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
darknain

Le 22/12/2015 à 17h56

#4 Signaler
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
sha

Le 22/12/2015 à 18h13 (Modifié le 22/12/2015 à 18h17)

#5 Signaler
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 -_-'

+
Maximilange

Le 22/12/2015 à 18h18 (Modifié le 22/12/2015 à 18h21)

#6 Signaler
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 ( http://www.monamphi.com/inscription?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 :(
typhoon

Le 22/12/2015 à 18h43

#7 Signaler
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
darknain

Le 23/12/2015 à 11h37

#8 Signaler
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 une réponse

Des champs obligatoires n’ont pas été remplis, ou l’ont été incorrectement.