Convertir les nombres décimal en flottant 32 bits [Résolu]

Réponses à toutes vos questions après le Bac (Fac, Prépa, etc.)
Abuj
Membre Relatif
Messages: 129
Enregistré le: 17 Sep 2013, 15:15

Convertir les nombres décimal en flottant 32 bits [Résolu]

par Abuj » 11 Avr 2015, 00:33

Salut à tous,

Voilà, j'ai un problème au niveau des virgules flottant en 32 bits, je ne comprends pas trop l'exercice...

Je dois convertir 0X449F D911 en binaire ok pas de soucis:

cela nous donne ceci 0100 0100 1001 1111 1101 1001 0001 0001

Maintenant je ne comprends vraiment cette partie:

2E10 + 2E7 + 2E6 + 2E5 + 2E4 2E3 + 2E2 + 2E1 + 2E-1 + 2E-2 + 2E-5 + 2E-9 + 2E-13

Comment on fait pour trouver les exposants ??? Pourquoi on prend 2exposant10 et pas autre chose ??? etc... Je ne vois pas d'où il sort ce 2E10 ???

Merci pour vos explications



mathelot

par mathelot » 11 Avr 2015, 08:04

c'est curieux. Que représente X dans la donnée d'entrée ?
En hexadécimal, le chiffre le plus grand est F

Avatar de l’utilisateur
fatal_error
Membre Légendaire
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

par fatal_error » 11 Avr 2015, 08:12

salut,

ta ligne est incomplète, c'est juste la conversion en base 10:
0100 0100 1001 1111 1101 1001 0001 0001
tu pars de la droite :
2^-13
tu tu comptes les offsets vers la gauche
0100 0100 1001 1111 1101 1001 0001 0001
2^-9

0100 0100 1001 1111 1101 1001 0001 0001
2^-5

etc...
maintenant, pourquoi tu commences à -13
c'est lié au fait que la partie en orange est ta partie décimale : 0100 0100 1001 1111 1101 1001 0001 0001
mais pourquoi c'est ta partie décimale, j'en sais rien...

en tout cas compter les bits comme ça ne ressemble en rien à la représentation d'un nombre en virgule flottante selon IEEE754 32 bits
la vie est une fête :)

wserdx
Membre Rationnel
Messages: 654
Enregistré le: 03 Oct 2009, 13:44

par wserdx » 11 Avr 2015, 08:24

Abuj a écrit:Salut à tous,

Voilà, j'ai un problème au niveau des virgules flottant en 32 bits, je ne comprends pas trop l'exercice...

Je dois convertir 0X449F D911 en binaire ok pas de soucis:

cela nous donne ceci 0100 0100 1001 1111 1101 1001 0001 0001

Maintenant je ne comprends vraiment cette partie:

2E10 + 2E7 + 2E6 + 2E5 + 2E4 2E3 + 2E2 + 2E1 + 2E-1 + 2E-2 + 2E-5 + 2E-9 + 2E-13

Comment on fait pour trouver les exposants ??? Pourquoi on prend 2exposant10 et pas autre chose ??? etc... Je ne vois pas d'où il sort ce 2E10 ???

Merci pour vos explications

Je te conseille de regarder la convention de codage des flottants, par exemple ici:
Single
Dans ton cas, le bit de signe est s = 0
L'exposant e = 100 0100 1 = 128 + 8 + 1 = 137
la mantisse m = 001 1111 1101 1001 0001 0001
Le flottant vaut par convention :
soit

le rang du bit de poids le plus fort est bien 10 et le moins fort est -13

Abuj
Membre Relatif
Messages: 129
Enregistré le: 17 Sep 2013, 15:15

par Abuj » 11 Avr 2015, 19:43

Bonjour à tous,

Tout d'abord je tenais à vous remercier pour votre aide, c'est très gentil de vote part.

mathelot a écrit:c'est curieux. Que représente X dans la donnée d'entrée ?
En hexadécimal, le chiffre le plus grand est F


Le OX veut dire tout simplement que c'est de l’Hexadécimal, faut pas vraiment tenir compte. :lol3:

fatal_error a écrit:salut,

ta ligne est incomplète, c'est juste la conversion en base 10:
0100 0100 1001 1111 1101 1001 0001 0001
tu pars de la droite :
2^-13
tu tu comptes les offsets vers la gauche
0100 0100 1001 1111 1101 1001 0001 0001
2^-9

0100 0100 1001 1111 1101 1001 0001 0001
2^-5

etc...
maintenant, pourquoi tu commences à -13
c'est lié au fait que la partie en orange est ta partie décimale : 0100 0100 1001 1111 1101 1001 0001 0001
mais pourquoi c'est ta partie décimale, j'en sais rien...

en tout cas compter les bits comme ça ne ressemble en rien à la représentation d'un nombre en virgule flottante selon IEEE754 32 bits


Merci pour tes explications, mais j'avoue que j'ai vraiment du mal à comprendre.
Le but de l'exercice est de convertir 0X449F D911 (20) et convertir en décimal...


wserdx a écrit:Je te conseille de regarder la convention de codage des flottants, par exemple ici:
Single
Dans ton cas, le bit de signe est s = 0
L'exposant e = 100 0100 1 = 128 + 8 + 1 = 137
la mantisse m = 001 1111 1101 1001 0001 0001
Le flottant vaut par convention :
soit

le rang du bit de poids le plus fort est bien 10 et le moins fort est -13


Merci pour les explications, sincèrement je comprends jusque la mantisse mais après je suis perdu.
Image

Que veux-tu dire par (1+(001111111011001000100001) ??? Comment on calcul ça ???

Merci

Abuj
Membre Relatif
Messages: 129
Enregistré le: 17 Sep 2013, 15:15

par Abuj » 11 Avr 2015, 22:12

Bonsoir les amis,

Après 5 heures de réflexions j'ai enfin compris !!!! Youpppiss je dormirais moins bête :ptdr:
Merci en tout cas pour le temps que vous avez consacré à mon problème !!

Avatar de l’utilisateur
chombier
Membre Irrationnel
Messages: 1324
Enregistré le: 19 Juil 2012, 18:35

par chombier » 12 Avr 2015, 08:27

Abuj a écrit:Bonsoir les amis,

Après 5 heures de réflexions j'ai enfin compris !!!! Youpppiss je dormirais moins bête :ptdr:
Merci en tout cas pour le temps que vous avez consacré à mon problème !!

Du coup tu peux nous expliquer comment 0100 0100 1001 1111 1101 1001 0001 0001 peut se convertir en décimal (comment le décimal a été, dans le cadre de l'exercice, codé en binaire)

Abuj
Membre Relatif
Messages: 129
Enregistré le: 17 Sep 2013, 15:15

par Abuj » 12 Avr 2015, 20:14

chombier a écrit:Du coup tu peux nous expliquer comment 0100 0100 1001 1111 1101 1001 0001 0001 peut se convertir en décimal (comment le décimal a été, dans le cadre de l'exercice, codé en binaire)


Salut Chombier,

Tu veux savoir comment on convertie du binaire (base 2) en hexadecimal (base 16) c'est bien ça t'as question ???

Avatar de l’utilisateur
chombier
Membre Irrationnel
Messages: 1324
Enregistré le: 19 Juil 2012, 18:35

par chombier » 12 Avr 2015, 20:40

Abuj a écrit:Salut Chombier,

Tu veux savoir comment on convertie du binaire (base 2) en hexadecimal (base 16) c'est bien ça t'as question ???

Non, ça je sais faire, je me demandais comment ton nombre décimal était encodé en base 16.

wserdx
Membre Rationnel
Messages: 654
Enregistré le: 03 Oct 2009, 13:44

par wserdx » 13 Avr 2015, 10:40

Abuj a écrit:Bonjour à tous,


Merci pour les explications, sincèrement je comprends jusque la mantisse mais après je suis perdu.
Image

Que veux-tu dire par (1+(001111111011001000100001) ??? Comment on calcul ça ???

Merci


Je n'ai pas bien compris si c'est un nombre en virgule flottante que tu cherches ?
Si oui, le nombre que tu veux est :

ou bien en déplaçant la virgule de 10 rangs vers la droite:

soit, comme tu l'as écrit:

Abuj
Membre Relatif
Messages: 129
Enregistré le: 17 Sep 2013, 15:15

par Abuj » 14 Avr 2015, 20:09

chombier a écrit:Du coup tu peux nous expliquer comment 0100 0100 1001 1111 1101 1001 0001 0001 peut se convertir en décimal (comment le décimal a été, dans le cadre de l'exercice, codé en binaire)

on a convertie 0x449f d911 en binaire puis on a cherché l'exposant (8 octets) qui faisait 137 !
En gros après lorsque tu arrives ici 0100 0100 1001 1111 1101 1001 0001


1) tu mets de côté les 8 premiers octets
0100 0100 1001 1111 1101 1001 0001 0001

2) on sait que l'exposant vaut 10 (car on avait fait 137-127)

3) maintenant la partie la plus facile tu comptes tout simplement tes exposants à partir de la gauche,
Image

A chaque fois qu'il y a 1 tu l'écrit c'est un exposant !

Donc, tu as 2exposant10, 2exposant7, 2exposant6,2exposant5,2exposant4,2exposant3,2exposant2,2exposant1,2exposant-1,2exposant-2,2exposant-5,2exposant-9,2exposant-13

puis, tu prends ta calculettes et tu calculs le tout ça doit faire 1278,7833 c'était ça l'exercice ! :happy2:
Voilà, c'était juste ça l'exercice... Et tu vois que j'ai la même réponse que wserdx.

 

Retourner vers ✯✎ Supérieur

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 41 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite