Aller au contenu

[Résolu] [C] Ecrire un flottant en binaire.


kgabou

Messages recommandés

Hello,

J'ai un léger problême :

Dans un TP on me demande d'écrire une fonction prenant en paramètre un flottant, et l'écrivant en binaire dans un fichier. Intuitivement j'ai fait :

#include <stdio.h>
#include <stdlib.h>

void ecrireNombre(float *n);

int main()
{
float a=0;
printf("Quel nombre voulez-vous ecrire en binaire ?\n");
scanf("%f",&a);
printf("n=%f\n",a);
ecrireNombre(&a);
scanf("%d");
}

void ecrireNombre(float *a)
{
FILE *f;
f=fopen("tp6.dat","wb");								// J'ouvre le fichier "TP6.dat" en écriture, en binaire.
fprintf(f,"%f",*a);									 // J'y écris la valeur de a.
fclose(f);
}

Et évidement, ça marche pas :transpi: , il m'écrit le nombre en décimal.

J'ai regardé plusieurs tutos mais je ne trouve rien là dessus, quelqu'un aurait-il une idée ?

Lien vers le commentaire
Partager sur d’autres sites

Si le but est d'avoir la représentation binaire d'un float, un bon exemple ici : http://www.thescripts.com/forum/thread169864.html

Et il fonctionne a priori, ça me donne :

12.4 -> 01000001 01000110 01100110 01100110

-12.4 -> 11000001 01000110 01100110 01100110

Par contre pour l'algo, j'ai pas pris le temps de trop essayer de comprendre (en plus suis nul en maths pures), mais en gros on boucle 4 fois sur la méthode "char2Binary" (4 pour 4 octet dans un float) dans laquelle on décompose le paramètre passé en binaire.

Après quelques tests, il se peut que l'affichage des 4 octets soient dans le mauvais sens : -12.4 -> 66 66 46 c1 en hexa -> 01100110 01100110 01000110 11000001 en binaire plutot.

Maintenant je suis peut etre complètement à coté de la plaque et tu veux juste écrire un float dans un fichier binaire comme le dit Barroud :transpi:

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...