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

renyone 71 Messages postés vendredi 9 mars 2007Date d'inscription 12 avril 2010 Dernière intervention - 10 juil. 2008 à 11:16 - Dernière réponse : renyone 71 Messages postés vendredi 9 mars 2007Date d'inscription 12 avril 2010 Dernière intervention
- 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
MorpionMx 3489 Messages postés lundi 16 octobre 2000Date d'inscription 30 octobre 2008 Dernière intervention - 10 juil. 2008 à 20:50
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

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de MorpionMx
MorpionMx 3489 Messages postés lundi 16 octobre 2000Date d'inscription 30 octobre 2008 Dernière intervention - 10 juil. 2008 à 13:31
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
renyone 71 Messages postés vendredi 9 mars 2007Date d'inscription 12 avril 2010 Dernière intervention - 10 juil. 2008 à 14:36
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
renyone 71 Messages postés vendredi 9 mars 2007Date d'inscription 12 avril 2010 Dernière intervention - 10 juil. 2008 à 14:37
0
Merci
De meme que pour les float, double et decimal...
Commenter la réponse de renyone
renyone 71 Messages postés vendredi 9 mars 2007Date d'inscription 12 avril 2010 Dernière intervention - 11 juil. 2008 à 10:13
0
Merci
Ok, je vais essayer ça alors et te tiens au courant si ça marche!
Merci.
Commenter la réponse de renyone
renyone 71 Messages postés vendredi 9 mars 2007Date d'inscription 12 avril 2010 Dernière intervention - 11 juil. 2008 à 11:21
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
renyone 71 Messages postés vendredi 9 mars 2007Date d'inscription 12 avril 2010 Dernière intervention - 11 juil. 2008 à 11:23
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
renyone 71 Messages postés vendredi 9 mars 2007Date d'inscription 12 avril 2010 Dernière intervention - 16 juil. 2008 à 11:01
0
Merci
Un petit up :/
Commenter la réponse de renyone
MorpionMx 3489 Messages postés lundi 16 octobre 2000Date d'inscription 30 octobre 2008 Dernière intervention - 17 juil. 2008 à 20:11
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
renyone 71 Messages postés vendredi 9 mars 2007Date d'inscription 12 avril 2010 Dernière intervention - 22 juil. 2008 à 10:50
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.