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 :
Langage C++ - Les types de données VoirLes types de données Les données manipulées en langage C++, comme 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...
Java - Les types de données VoirLes primitives Java est un langage orienté objet, c'est-à-dire que les éléments manipulés sont des classes, ou plus exactement des objets, c'est-à-dire des instances de classes. Toutefois ces objets contiennent des données possèdant un type (et...
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...

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
Collection CommentÇaMarche.net