Virgule flottante et virgule fixe (calcule binaire)
Résolu/Fermé
chimou-gaga
Messages postés
24
Date d'inscription
samedi 10 novembre 2012
Statut
Membre
Dernière intervention
27 février 2015
-
28 déc. 2012 à 14:00
slt - 1 juin 2013 à 15:44
slt - 1 juin 2013 à 15:44
A voir également:
- Division avec virgule
- Convertir colonne en ligne avec point virgule - Forum Excel
- Division en c - Forum C
- Division euclidienne ti 83 - Forum calculatrices
- Microsoft skype division - Télécharger - Téléphonie & Visio
- Convertir fichier excel en txt avec séparateur point virgule ✓ - Forum Excel
4 réponses
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
28 déc. 2012 à 18:07
28 déc. 2012 à 18:07
"1-mon travaille est-il correcte ?"
Non, en particulier tes calculs sur les nombres à virgules.
"d'ou 0.125 en binaire est 100
18.125 => 10010.100"
Non, il faut prendre les bits dans l'autre sens, 0.125 → 001, donc 18.125 → 10010.001
"2- est ce que je doit ajouter l'exposant reel a 127 ou 128 ??"
Il est décalé de 127.
"3-est ce que la mantisse est les chiffres apres la virgule ou tous les chiffres y compris celui avant la virgule"
La mantisse c'est la succession de bits après le premier "1" qui est omis.
Dans ton exemple : 18.125=10010.001, la mantisse est 0010001.
"4- je dois laissé un chiffre avant la virgule pour chercher l'exposant reel ou mettre le nombre sous forme 0,.. ??"
Je ne comprends pas ce que tu veux dire par "exposant réel", l'exposant est un entier.
"5- si j'ai un nombre negatif, je travaille sur son complement a 2 ou lui meme convertit en binaire ? (en changeant juste le bit de signe a la fin)"
Si tu as nombre négatif, tu changes juste le bit de signe, il n'y a pas de complément à 2, ni sur la mantisse, ni sur l'exposant. Attention : le bit de signe n'est pas à la fin mais au début.
18.125 → 0 10000011 00100010000000000000000
Non, en particulier tes calculs sur les nombres à virgules.
"d'ou 0.125 en binaire est 100
18.125 => 10010.100"
Non, il faut prendre les bits dans l'autre sens, 0.125 → 001, donc 18.125 → 10010.001
"2- est ce que je doit ajouter l'exposant reel a 127 ou 128 ??"
Il est décalé de 127.
"3-est ce que la mantisse est les chiffres apres la virgule ou tous les chiffres y compris celui avant la virgule"
La mantisse c'est la succession de bits après le premier "1" qui est omis.
Dans ton exemple : 18.125=10010.001, la mantisse est 0010001.
"4- je dois laissé un chiffre avant la virgule pour chercher l'exposant reel ou mettre le nombre sous forme 0,.. ??"
Je ne comprends pas ce que tu veux dire par "exposant réel", l'exposant est un entier.
"5- si j'ai un nombre negatif, je travaille sur son complement a 2 ou lui meme convertit en binaire ? (en changeant juste le bit de signe a la fin)"
Si tu as nombre négatif, tu changes juste le bit de signe, il n'y a pas de complément à 2, ni sur la mantisse, ni sur l'exposant. Attention : le bit de signe n'est pas à la fin mais au début.
18.125 → 0 10000011 00100010000000000000000
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
29 déc. 2012 à 16:13
29 déc. 2012 à 16:13
Remarque, un pseudo-code pour le calcul d'IEEE 754 peut-être ceci :
Avec ton exemple cela donne :
// Initialisation x = valeur_a_convertir (sauf cas particuliers : 0, infini, NaN, etc.) e = 127 m = tableau de 23 bits // Calcul du signe Si x<0 x = -x s = 1 Sinon s = 0 FinSi // Calcul de l'exposant Si x<1 TantQue x<1 x = x*2 e = e-1 FinTantQue Sinon Si x>=2 TantQue x>=2 x = x/2 e = e+1 FinTantQue FinSi // Calcul de la mantisse x = x-1 Pour i allant de 1 à 23 m = m*2 Si x<1 m[i] = 0 Sinon m[i] = 1 x = x-1 FinSi FinPour
Avec ton exemple cela donne :
// initialisation x = 18.125 e = 127 m = [] // Calcul du signe x > 0 donc s = 0 // Calcul de l'exposant x >= 2 donc e = 128 et x = 9.0625 x >= 2 donc e = 129 et x = 4.53125 x >= 2 donc e = 130 et x = 2.265625 x >= 2 donc e = 131 et x = 1.1328125 // Calcul de la mantisse x = 0.1328125 i=1 et x = 0.265625 donc m=[0] i=2 et x = 0.53125 donc m=[00] i=3 et x = 1.0625 donc m=[001] et x=0.0625 i=4 et x = 0.125 donc m=[0010] i=5 et x = 0.25 donc m=[00100] i=6 et x = 0.5 donc m=[001000] i=7 et x = 1 donc m=[0010001] et x=0 i=8 et x = 0 donc m=[00100010] ... i=23 et x = 0 donc m=[00100010000000000000000]
chimou-gaga
Messages postés
24
Date d'inscription
samedi 10 novembre 2012
Statut
Membre
Dernière intervention
27 février 2015
3
29 déc. 2012 à 19:47
29 déc. 2012 à 19:47
Merci beaucoup KX ! Vous êtes le meilleur :)
29 déc. 2012 à 12:57
Dans mon cours , on appelle "exposant reel" le nombre qu'on ajoute a 127.
en tout cas, vous m'avez bien clarifier tous.
une dernière question. si j'obtiens la mantisse en moins de 8 chiffres, j'ajoute des zéros a droite ou a gauche ?
29 déc. 2012 à 14:58
Donc la mantisse est 00100000...