Representation binaire float, double et decimal [Résolu]

Signaler
Messages postés
71
Date d'inscription
vendredi 9 mars 2007
Statut
Membre
Dernière intervention
12 avril 2010
-
Messages postés
71
Date d'inscription
vendredi 9 mars 2007
Statut
Membre
Dernière intervention
12 avril 2010
-
Salut!

Quelqu'un a une idée de comment on fait pour obtenir la représentation binaire d'un nombre de type float ou double ou decimal en binaire en c# ? :/

Merci de vos réponse

A+

10 réponses

Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
52
Salut,
en effet, j'ai zappé une partie de la question

Tu peux, utiliser la classe BitConverter, et plus particulierement la méthodeDoubleToInt64Bits() , Puis  il ne te reste plus qu'a utiliser la méthode spécifiée dans mon premier post, et le tour est joué
Mx
MVP C# 
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
52
Salut,

La méthode Convert.ToString() a une surcharge Convert.ToString(int, int); qui prend en entrée l'entier a convertir et la base.
Ainsi, Convert.ToString(tonEntier, 2) converti ton entier en base 2, donc en binaire.

Tu auras le resultat dans une chaine de caractere

Mx
MVP C# 
Messages postés
71
Date d'inscription
vendredi 9 mars 2007
Statut
Membre
Dernière intervention
12 avril 2010
3
Merci MorpionMx mais ca ne marche pas avec les ulong par exemple. Ca ne compile pas.

A+
Messages postés
71
Date d'inscription
vendredi 9 mars 2007
Statut
Membre
Dernière intervention
12 avril 2010
3
De meme que pour les float, double et decimal...
Messages postés
71
Date d'inscription
vendredi 9 mars 2007
Statut
Membre
Dernière intervention
12 avril 2010
3
Ok, je vais essayer ça alors et te tiens au courant si ça marche!
Merci.
Messages postés
71
Date d'inscription
vendredi 9 mars 2007
Statut
Membre
Dernière intervention
12 avril 2010
3
En fait, il me reste un petit problème.

Si je veux avoir la représentation de 5.0 par exemple. Je fais :

Int64 buffer = BitConverter.DoubleToInt64Bits((double) input);
binaryString = Convert.ToString(buffer, 2);

Et j'obtiens donc la chaine suivante:
100000000010100000000000000000000000000000000000000000000000000

soit 63 bits.

Je suppose donc que le bit manquant se rajoute à gauche et vaut 0 logiquement.

Ma question est: quels sont les bits pour la mantisse ? Ceux pour l'exposant? En effet il faut que je les redécode par par la suite...

Merci encore :)
Messages postés
71
Date d'inscription
vendredi 9 mars 2007
Statut
Membre
Dernière intervention
12 avril 2010
3
Je précise qu'il faut que je les redécode "à la main" dans un programme c++.

Re merci
Messages postés
71
Date d'inscription
vendredi 9 mars 2007
Statut
Membre
Dernière intervention
12 avril 2010
3
Un petit up :/
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
52
Salut,

Je crains de ne pas pouvoir t'aider sans me pencher plus sur la question, mais je manque un peu de temps
Peut-etre en regardant, via reflector, comment agissent les méthodes DoubleIntTo64Bits et In64BitsToDouble (qui fait la conversion inverse) ?

Mx
MVP C# 
Messages postés
71
Date d'inscription
vendredi 9 mars 2007
Statut
Membre
Dernière intervention
12 avril 2010
3
J'ai un peu oublié de revenir par ici.
Ta méthode marche effectivement bien. Je m'étais juste trompé dans le décodage de la chaine de bits. Les puissances pour le calcul de la mantisse sont... négatifs et non positifs comme je m'obstinais à le faire. :D
Merci