21/09/2007, 14h42
|
#1 |
Date d'inscription: janvier 2005 Localisation: 34-1=33 Âge: 21
Messages: 3 272
| [Numération] Représentation IEEE
Bonjour à tous !
J'ai un problème avec la représentation IEEE (la représentation IEEE est d'après ce que j'ai pu lire la norme internationale) des nombres sur ordinateur. Je vous le présente sur un exemple :
0,3 = 3.10 -1
3 est la mantisse et -1 est l'exposant
Dans  ) (32 octets, le premier bit (tout à gauche) sert à coder le signe), on code en binaire, l'exposant «*mesure*» 8 bits et la mantisse «*mesure*» 23 bits.
Je voudrais coder 0,3 dans
Bon, c'est pas compliqué : la mantisse, c'est 3 (en base 10) donc c'est 0...011 (on met plein de zéros pour utiliser les 23 bits) en binaire.
L'exposant, c'est -1, et c'est là que ça se complique...
que me dit-on ?
Les bits extrêmaux (de l'exposant) servent à coder des cas spéciaux (donc, j'imagine qu'il faut mettre un 0, de toute façon si on met un 1, ça donnera pas non plus ce qu'il faudrait...)
Dans les 8 bits utiles pour l'exposant, il en reste 6. Codage de l'exposant : 01111110
en effet, on élimine les deux extrêmes et :
- 2 7 – (2 6 + ... = 2 0 ) = - 1
D'où le codage : 0 01111110 0...011 (signe – exposant – mantisse)
Maintenant, le problème... J'ai une règle qui permet de passer de l'expression en flottant au «*vrai*» nombre en base 10, et bien, ça ne marche pas (et de beaucoup !)
Bref, je me plante à quelque part, et j'aimerais bien savoir où !
Merci de votre aide
Romain
|
| | Aujourd'hui
| | | | Liens sponsorisés | |
|
|
21/09/2007, 15h00
|
#3 |
Date d'inscription: janvier 2005 Localisation: 34-1=33 Âge: 21
Messages: 3 272
| Re : [Numération] Représentation IEEE
Salut !
Dans l'explication, il n'est pas dit qu'il faut enlever 127, mais quand je dé-code, j'enlève bien 127... et ça ne marche pas quand même
Je vais regarder ton lien ! Merci beaucoup
Romain
|
| |
21/09/2007, 15h12
|
#4 |
Date d'inscription: août 2005 Localisation: Paris Âge: 49
Messages: 1 447
| Re : [Numération] Représentation IEEE
Regarde également ici : http://babbage.cs.qc.edu/IEEE-754/Decimal.html
En fait tu ne peux avoir qu'une valeur approchée de 0.3
|
| |
21/09/2007, 15h14
|
#5 |
Date d'inscription: janvier 2005 Localisation: 34-1=33 Âge: 21
Messages: 3 272
| Re : [Numération] Représentation IEEE
Re !
J'avais trouvé le lien que tu viens de donner
Le lien vers "comment ça marche" est assez clair  Merci !
Romain
|
| |
21/09/2007, 15h17
|
#6 |
Date d'inscription: août 2006 Âge: 58
Messages: 2 914
| Re : [Numération] Représentation IEEE Citation:
Envoyé par Romain-des-Bois 0,3 = 3.10-1
3 est la mantisse et -1 est l'exposant | il faut passer 0,3 en binaire avant de calculer la mantisse.
__________________
J'affirme péremptoirement que toute affirmation péremptoire est fausse
|
| |
21/09/2007, 15h45
|
#7 |
Date d'inscription: janvier 2005 Localisation: 34-1=33 Âge: 21
Messages: 3 272
| Re : [Numération] Représentation IEEE
Oui, je sais bien qu'il faut coder en binaire 0,3
Enfin, moi, je faisais :
0,3 = 3.10 -1
et 3 = 11 en binaire
c'est peut-être pas comme ça qu'il faut faire...
Comment on code en binaire un nombre à virgule ? (j'ai vu des écritures du type 0,001100)
Romain
|
| |
21/09/2007, 15h49
|
#8 |
Date d'inscription: janvier 2005 Localisation: 34-1=33 Âge: 21
Messages: 3 272
| Re : [Numération] Représentation IEEE
Je complète :
trouvé dans "comment ça marche" :
525,5 est positif donc le 1er bit sera 0.
Sa représentation en base 2 est la suivante : 1000001101,1 |
| |
21/09/2007, 15h51
|
#9 |
Date d'inscription: janvier 2005 Localisation: 34-1=33 Âge: 21
Messages: 3 272
| Re : [Numération] Représentation IEEE
J'ai peut-être compris : 1 chiffre après la virgule pour l'écriture en décimal donc 1 chiffre après la virgule en binaire |
| |
21/09/2007, 17h20
|
#10 |
Date d'inscription: août 2006 Âge: 58
Messages: 2 914
| Re : [Numération] Représentation IEEE Citation:
Envoyé par Romain-des-Bois Oui, je sais bien qu'il faut coder en binaire 0,3
Enfin, moi, je faisais :
0,3 = 3.10 -1
et 3 = 11 en binaire | Prenons un exemple simple : 0,5.
Avec ta méthode tu trouves mantisse = 5 soit 101 en binaire, en codant en binaire d'abord on trouve 0,1 donc une mantisse de 1, et attention à l'exposant qui est égal au nombre de déplacements en binaire !
__________________
J'affirme péremptoirement que toute affirmation péremptoire est fausse
|
| |
22/09/2007, 12h03
|
#11 |
Date d'inscription: juin 2006 Localisation: Grenoble
Messages: 174
| Re : [Numération] Représentation IEEE
Il faut chercher la décomposition de x, unique, sous la forme :
x=m.2e, où 1/2 <= m < 1 et e entier relatif
Et puisque le premier bit de m vaut toujours 1 (m=0.1bbbbb...), celui-ci n'est
pas intégré dans l'encodage (il est implicite), ceci permettant d'augmenter la précision.
Disons que je ne suis pas sûr que la norme IEEE dise cela, mais je sais que certains systèmes font ainsi...
0.310 = 0.610 x 2–1 et
0.610 = 0.1001100110011001100110011001 1...2
Après, il faut arrondir au 24ème bit. Le 25ème étant 1, et les 23 et 24 étant 01, ces deux derniers bits sont changés en 10.
Donc 0.610 = 0.1001100110011001100110102
et donc m est encodé par 00110011001100110011010 sous l'hypoyhèse du premier bit implicite.
|
| |
24/09/2007, 15h59
|
#12 |
Date d'inscription: janvier 2005 Localisation: 34-1=33 Âge: 21
Messages: 3 272
| Re : [Numération] Représentation IEEE
Bonjour !
j'ai un accès internet intermitent...
Bon, j'ai compris ! Merci à tous les deux
Romain
|
| |
24/09/2007, 18h02
|
#13 |
Date d'inscription: juin 2006 Localisation: Grenoble
Messages: 174
| Re : [Numération] Représentation IEEE
Reste à encoder e.
En fait, selon la décomposition de x telle que j'ai donnée, e est entier relatif.
Pour l'encoder, on rajoute 126, qui doit nécessairement être compris entre 0 et 255, encodé naturellement sur 8 bits.
Si e+126 est négatif, le réel est trop petit, et je pense qu'il sera encodé 0.
Si e+126>255, le réel est trop grand (en valeur absolue), et je pense qu'il sera encodé comme la valeur maximale.
Pourquoi 126 et pas 127 ?
En fait, une autre manière de représenter est la suivante :
x= (–1)S.(1+M/223).2E-127 où M entier entre 0 et 223–1 inclus, représenté par les 23 bits, E entre 0 et 255 représenté par les 8 bits. Donc 1+M/223, compris entre 1 inclu et 2 exclu, correspond à 2m.
|
| |
25/09/2007, 11h10
|
#14 |
Date d'inscription: janvier 2005 Localisation: 34-1=33 Âge: 21
Messages: 3 272
| Re : [Numération] Représentation IEEE Citation:
Envoyé par breukin Reste à encoder e.
En fait, selon la décomposition de x telle que j'ai donnée, e est entier relatif.
Pour l'encoder, on rajoute 126, qui doit nécessairement être compris entre 0 et 255, encodé naturellement sur 8 bits.
Si e+126 est négatif, le réel est trop petit, et je pense qu'il sera encodé 0.
Si e+126>255, le réel est trop grand (en valeur absolue), et je pense qu'il sera encodé comme la valeur maximale.
Pourquoi 126 et pas 127 ?
En fait, une autre manière de représenter est la suivante :
x= (–1)S.(1+M/223).2E-127 où M entier entre 0 et 223–1 inclus, représenté par les 23 bits, E entre 0 et 255 représenté par les 8 bits. Donc 1+M/223, compris entre 1 inclu et 2 exclu, correspond à 2m. | OK merci, mais pour le codage de l'exposant, je n'avais pas de problème (tout était bien expliqué  )
Romain
|
| | |
|