Rechercher : dans
Par :

Conversion float-binaire

Dernière réponse le 3 déc 2007 à 16:33:54 misterbool, le 3 déc 2007 à 15:50:21 
 Signaler ce message aux modérateurs

Bonjour,j'aimerai avoir de l' aide pour convertir un float en binaire en langage C.Existe-t-il une fonction ki permet de le faire dirctement.

Configuration: Windows XP
Firefox 2.0.0.4

Meilleures réponses pour « Conversion float binaire » dans :
Le codage binaire VoirPrésentation du binaire Bit Poids des bits Conversions Octet KiloOctets, MégaOctets Opérations en binaire Addition binaire Multiplication binaire Présentation du binaire Vers la fin des années 30, Claude Shannon démontra qu'à l'aide...
Représentation des nombres entiers et réels VoirReprésentation d'un nombre dans un ordinateur On appelle représentation (ou codification) d'un nombre la façon selon laquelle il est décrit sous forme binaire. La représentation des nombres sur un ordinateur est indispensable pour que celui-ci...
Langage C - Les types de données VoirLes types de données Les données manipulées en langage C sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître l'occupation mémoire (le...

1

le père, le 3 déc 2007 à 15:58:23

Bonjour

Qu'entends-tu par convertir un float en binaire ? Un float, c'est du binaire.

Répondre à le père

2

 kilian, le 3 déc 2007 à 16:33:54
  • +1

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.

/* 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

Répondre à kilian