Partage
  • Partager sur Facebook
  • Partager sur Twitter

Conversion Décimal vers la norme IEEE 754

25 juillet 2011 à 19:50:31

Hello,

Je m'excuse d'avance si je ne suis pas dans la bonne section.

J'avais appris a faire la conversion d'un nombre décimale vers la norme IEEE 754 simple precision, il y a quelques années seulement, je ne me souviens plus de la méthode.

Je parles pas de programmation, mais plutôt la méthode "manuel"/"mathématiques" pour arriver au résultat binaire, hexa (peut importe la base)


exemple:

-0,5
137.84

Pouvez-vous expliquer, comment faire au moins la première étape ?
exemple, multiplie -0,5 par 16, ou prendre 137 en binaire puis 84 en binaire, faire un ET logique des deux...

Je donne des exemples qui doivent être complement faux...

Merci d'avance.

Keisuke
  • Partager sur Facebook
  • Partager sur Twitter
27 juillet 2011 à 16:04:05

Salut,

D'abord tu convertis en binaire. admettons alors que tu ais abcd,efgh (en binaire). tu vas décaler la virgule vers la gauche (multiplication par une puissance de deux) ce qui nous donne a,bcdefgh. et ton nombre est a,bcdefgh fois 2 puissance p. p est l'exposant.
Ensuite a est forcément un 1 (sinon il n'est pas significatif), donc tu le vires (c'est la technique du bit caché).

au final tu as donc ta mantisse qui est bcdefgh, ton exposant qui est p et tu retrouves ton nombre en faisant monNombre = 1,mantisse fois 2 puissance p.

on remarque qu'avec cette technique, ton exposant va de 0 a 255 (sur huit bits en simple précision), donc tu ne peut avoir que des grands nombres. Pour parer à cela, la moitié du domaine de l'exposant est soustrait a l'exposant. ici, l'exposant réel est p - partieEntière(255/2). Il faut s'en souvenir quand on code l'exposant, il faut ajouter partieEntière(255/2). cette quantité ajoutée est le biais.
Donc ton nom est en fait ton nombre est 1,mantisse fois 2 puissance p-biais.

pour savoir si ton est négatif, il faut regarder le bit de signe qui vaut soit un soit zéro.

il y a aussi des conventions pour NaN et infinie mais l'article de wiki l'explique. Il explique aussi le codage. Il y a aussi un tuto sur ce site il me semble, sur le binaire. Il y a aussi pas mal d'explication sur google.

Hedi
  • Partager sur Facebook
  • Partager sur Twitter
27 juillet 2011 à 18:33:58

Hi,

Merci de ta réponse.

Mon principale problème est de convertir par exemple: 147,83 en binaire pour pouvoir faire le décallage de virgule, trouvé la puissance....

Donc par exemple, pour 147,83, est-ce que je fais:
147 en binaire puis 83 en binaire, je les "concatene"
je fais 147,83 * 16 ?
autres ?

C'est surtout pour la première phase que je ne me souviens plus...

Merci encore,
@+
  • Partager sur Facebook
  • Partager sur Twitter
27 juillet 2011 à 21:28:17

bah dans tous les systèmes de numérations positionnelles la valeur d'un chiffre est donnée par ce chiffre fois la base puissance la position. c'est exactement pareil de l'autre coté de la virgule : 0,1 en binaire c'est 1 fois 2 puissance -1.

donc pour ton 0,83 (pour le 147 je pense que tu t'en sortira) ça donne 0.1 (en binaire = 0.5 déc) + 0.01 (= 2 puissance -2 = 0.25 déc) + ....

pour 0.83 il n'y a pas d'écriture "courte", un peu comme 1/3 en décimal.

regarde ce site (que tu aurais pu trouver seul) http://www.binaryconvert.com/result_fl [...] =048046056051

Hedi
  • Partager sur Facebook
  • Partager sur Twitter
13 décembre 2023 à 20:04:20 - Message modéré pour le motif suivant : Déterrage (2011)