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

Messages postés
71
Date d'inscription
vendredi 9 mars 2007
Dernière intervention
12 avril 2010
- - Dernière réponse : renyone
Messages postés
71
Date d'inscription
vendredi 9 mars 2007
Dernière intervention
12 avril 2010
- 22 juil. 2008 à 10:50
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+
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
Messages postés
3489
Date d'inscription
lundi 16 octobre 2000
Dernière intervention
30 octobre 2008
3
Merci
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# 

Merci MorpionMx 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de MorpionMx
Messages postés
3489
Date d'inscription
lundi 16 octobre 2000
Dernière intervention
30 octobre 2008
0
Merci
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# 
Commenter la réponse de MorpionMx
Messages postés
71
Date d'inscription
vendredi 9 mars 2007
Dernière intervention
12 avril 2010
0
Merci
Merci MorpionMx mais ca ne marche pas avec les ulong par exemple. Ca ne compile pas.

A+
Commenter la réponse de renyone
Messages postés
71
Date d'inscription
vendredi 9 mars 2007
Dernière intervention
12 avril 2010
0
Merci
De meme que pour les float, double et decimal...
Commenter la réponse de renyone
Messages postés
71
Date d'inscription
vendredi 9 mars 2007
Dernière intervention
12 avril 2010
0
Merci
Ok, je vais essayer ça alors et te tiens au courant si ça marche!
Merci.
Commenter la réponse de renyone
Messages postés
71
Date d'inscription
vendredi 9 mars 2007
Dernière intervention
12 avril 2010
0
Merci
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 :)
Commenter la réponse de renyone
Messages postés
71
Date d'inscription
vendredi 9 mars 2007
Dernière intervention
12 avril 2010
0
Merci
Je précise qu'il faut que je les redécode "à la main" dans un programme c++.

Re merci
Commenter la réponse de renyone
Messages postés
71
Date d'inscription
vendredi 9 mars 2007
Dernière intervention
12 avril 2010
0
Merci
Un petit up :/
Commenter la réponse de renyone
Messages postés
3489
Date d'inscription
lundi 16 octobre 2000
Dernière intervention
30 octobre 2008
0
Merci
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# 
Commenter la réponse de MorpionMx
Messages postés
71
Date d'inscription
vendredi 9 mars 2007
Dernière intervention
12 avril 2010
0
Merci
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
Commenter la réponse de renyone

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.