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 :
- 27 – (26 + ... = 20 ) = - 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
-----