Conversion float-binaire
Fermé
misterbool
Messages postés
1
Date d'inscription
lundi 3 décembre 2007
Statut
Membre
Dernière intervention
3 décembre 2007
-
3 déc. 2007 à 15:50
maryem281 Messages postés 1 Date d'inscription mardi 8 août 2017 Statut Membre Dernière intervention 8 août 2017 - 8 août 2017 à 17:04
maryem281 Messages postés 1 Date d'inscription mardi 8 août 2017 Statut Membre Dernière intervention 8 août 2017 - 8 août 2017 à 17:04
A voir également:
- Convertir float en binaire
- Codage binaire - Guide
- Convertir youtube en mp3 avec audacity - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Convertir epub en kindle - Guide
- Convertir trimestre en année ✓ - Forum Excel
2 réponses
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
3 déc. 2007 à 16:33
3 déc. 2007 à 16:33
Salut,
Je pense qu'il veut afficher les 0 et 1 qui composent un float.
J'ai une fonction qui fait ça pour les float 32 bits, j'en avait besoin ya quelques temps, autant en faire profiter.
Exemple:
Affichera:
Je pense qu'il veut afficher les 0 et 1 qui composent un float.
J'ai une fonction qui fait ça pour les float 32 bits, j'en avait besoin ya quelques temps, autant en faire profiter.
/* Pour afficher en binaire la valeur de nom "name" ayant pour valeur "value" constituée de "taille" bits en partant des bits de poids faible */ void dump_bin(const char* name, unsigned int value, int taille) { int i; printf("%s: ", name); for(i = taille-1; i>=0; i--) { printf("%d", (value >> i) & 1); } printf("\n"); } void float2bin(float f) { unsigned int i, mantisse, signe, exposant; //On récupère f dans un entier sans le convertir en entier i = *(int *) &f; //Le signe est le bit de poids fort signe = i >> 31; //L'exposant c'est les huit bits suivants de poids fort exposant = (i >> 23) & 0xff; //Les 23 bits restants c'est la mantisse mantisse = i & 0x007fffff; dump_bin("signe", signe, 1); dump_bin("mantisse", mantisse, 23); dump_bin("exposant", exposant, 8); }
Exemple:
int main() { float f=1.0; float2bin(f); return 0; }
Affichera:
signe: 0 mantisse: 00000000000000000000000 exposant: 01111111
8 août 2017 à 17:04
je récupére toujous 0 dans i : //On récupère f dans un entier sans le convertir en entier
i = *(int *) &f;
Du coup j'arrive pas à calcuuler signer, mantisse et exposant d'un float
t'as une idée sur un tel probleme ? et comment le résoudre ?
MERCI