Convertir 16,40 en binaire

ephores Messages postés 123 Date d'inscription lundi 30 juin 2003 Statut Membre Dernière intervention 5 juin 2007 - 18 mai 2004 à 18:54
 Sojojo - 30 mai 2005 à 13:55
bonjour,
j'ai un programme qui convertit la chaine en binaire pour faire une recherche sur des fichier excel, bref ça marche sauf pour les nombres à virgules. je sais on peut paq le faire mais surement qu'un pro a trouvé l'astuce sue ce forum !!
Pourriez vous m'aider ?

Merci par avance.

21 réponses

cs_LordBob Messages postés 2865 Date d'inscription samedi 2 novembre 2002 Statut Membre Dernière intervention 11 mai 2009 9
18 mai 2004 à 19:06
je crois qu'il est impossible de faire des convertion de chiffre decimaux et binaire... depuis le tps que j'en fait je n'ai jamais vu ca !!!
Bob...

"La chance accorde ses faveur aux esprits avertis..."
0
cs_LordBob Messages postés 2865 Date d'inscription samedi 2 novembre 2002 Statut Membre Dernière intervention 11 mai 2009 9
18 mai 2004 à 19:06
je crois qu'il est impossible de faire des convertion de chiffre decimaux et binaire... depuis le tps que j'en fait je n'ai jamais vu ca !!!
Bob...

"La chance accorde ses faveur aux esprits avertis..."
0
ephores Messages postés 123 Date d'inscription lundi 30 juin 2003 Statut Membre Dernière intervention 5 juin 2007
18 mai 2004 à 19:13
ça s'écrit bien d'une manière au niveau du programme ?
c'est le binaire de 16 & le binaire de 40 ?
question?
0
cs_LordBob Messages postés 2865 Date d'inscription samedi 2 novembre 2002 Statut Membre Dernière intervention 11 mai 2009 9
18 mai 2004 à 19:36
c'est impossible de convertir un chiffre decimal en binaire !!! mais je ne sais pas comment l'ordi (et le programme) fait pour s'y retrouver...
mais c'est une question interressante dont je voudrais bien connaitre la reponse...
Bob...

"La chance accorde ses faveur aux esprits avertis..."
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ephores Messages postés 123 Date d'inscription lundi 30 juin 2003 Statut Membre Dernière intervention 5 juin 2007
18 mai 2004 à 19:53
Merci quand meme bob,
j'ai esayé de trouver la chane 16 en Bin suivie de la chaine 40 (bin) mais il ne trouve rien....
donc c'est pas là la réponse....
Pitié je cherche un savant cette technique me permetrais de gagner en temps monstre !!
0
Vb Lover Messages postés 221 Date d'inscription vendredi 30 novembre 2001 Statut Membre Dernière intervention 13 février 2010 5
18 mai 2004 à 20:13
Je sais pas si je suis le savant que tu cherches, mais enfin voilà :

pour stocker des entiers, pas de problème pour l'ordi, il met tout en bits en basta.
pour les réels, c'est là qu'intervient la précision de ton type (single, double). Je ne sais plus exactement les détails, mais en gros ton nombre est décomposé en 2 parties, mais ce n'est pas la partie devant la virgule et celle derrière !
Ton nombre, c'est une mantisse et un exposant, avec une taille limitée et fixe. Bref, si tu veux 16.40 en binaire, c'est stocker comme 164 dans la mantisse et l'exposant peut-être -1, mais tout dépend de comment c'est mis en mémoire.

enfin, si tu veux mettre 16.4 en binaire, moi je mettrais :

10000.0110011001... :)

VB Lover
0
ephores Messages postés 123 Date d'inscription lundi 30 juin 2003 Statut Membre Dernière intervention 5 juin 2007
18 mai 2004 à 20:25
est - il possible de mettre une formule ? car c'est des montant que je cherche , jamais les même .
En tous cas ce dois être toi le savant car " la mantisse " j'avais jamais vu ça !!!!
Merci pour ton savoir !

voila mon bout de code desfois....

Private Sub Command2_Click()

Dim u As Boolean
u = False
Dim Ch As String * 1024
For i = 1 To NbOccurence
u = False
' Rtrim(chaine) enlève les espaces à droite
Open RTrim(ResultatRecherche.Chemin(i)) & ResultatRecherche.Fichiers(i).cFileName For Binary As #1
Get #1, , Ch
If InStr(LCase(Input(LOF(1), 1)), LCase(Text1)) Then u = TrueIf u True Then Text2 Text2 & vbCrLf & "trouvé dans " & ResultatRecherche.Fichiers(i).cFileName
Close #1
Next

ens sub
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
18 mai 2004 à 22:38
Salut,
G vu un truc ici :
http://www.vbfrance.com/code.aspx?ID=22122
Pas eu le temps de tester profondément mais sa calc a l'air de convertir des réels (donc avec virgule). A voir.

Cordialement

CanisLupus
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
18 mai 2004 à 22:49
Sinon,
Si tu es un peu matheux, tu peux visionner ce truc en pdf :
http://cui.unige.ch/isi/cours/std01/1t-Types-primitifs.pdf
C pas mal expliqué, reste plus qu'à le traduire en fonction.
Si g le temps un jour et si c utile, je me pencherai là-dessus.

Cordialement

CanisLupus
0
ephores Messages postés 123 Date d'inscription lundi 30 juin 2003 Statut Membre Dernière intervention 5 juin 2007
18 mai 2004 à 23:39
Merci CanisLupus mais dans la calculette il remplace la virgule par un zero, si tu convertit un decimal à vigule et qu'ensuite tu reconvertit en decimal tu t'en appercevras.
Je vais essayer la deuxième soluce mais j'avoue partir perdant... c'est pas de mon niveau.
Merci CanisLupus de t'être donné autant de mal, si tu as d'autre info je suis preneur.
0
ephores Messages postés 123 Date d'inscription lundi 30 juin 2003 Statut Membre Dernière intervention 5 juin 2007
19 mai 2004 à 09:26
please/.........
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
19 mai 2004 à 19:03
Allez, g un peu de temps et il parait que la météo va pas être bonne pour ce long WE.
Je vais essayer d'appliquer les algos du PDF. G déjà un truc que je pourrais peut-être adapter.
A moins que quelqu'un me devance....

@++

CanisLupus
0
ephores Messages postés 123 Date d'inscription lundi 30 juin 2003 Statut Membre Dernière intervention 5 juin 2007
19 mai 2004 à 19:36
OH mille merci CanisLupus !!!
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
19 mai 2004 à 20:24
Attend avant de dire merci, car autant j'arrive facile à traduire une chaine de 0 et 1 en nombre à virgule, autant pour faire l'inverse...... c pas gagné.
Va falloir que je me transforme en Indiana jones pour aller explorer des coins de mémoire où je ne suis pas allé depuis longtemps !

Bah, ça va me nettoyer un peu le cerveau, ça ne fera pas de mal.

Cordialement

CanisLupus
0
ephores Messages postés 123 Date d'inscription lundi 30 juin 2003 Statut Membre Dernière intervention 5 juin 2007
19 mai 2004 à 21:19
Je sais que tu peux le faire !
Je sais que ça dois pas être évident, si tu y arrive tu seras vraiment le best of the best ;-)

Merci même si tu n'y arrive pas ;-((((
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
21 mai 2004 à 16:39
<ephores> Je viens de mettre un source sur le site, dis moi si ça te convient.

http://www.vbfrance.com/code.aspx?ID=23026

Cordialement

CanisLupus
0
ephores Messages postés 123 Date d'inscription lundi 30 juin 2003 Statut Membre Dernière intervention 5 juin 2007
21 mai 2004 à 19:27
T'es un pro CHIEN LOUP !

par contre il me reste à resoudre un problème, peut être pourrais tu m'aider ????

dans ce bout de code :
***********************************************

Open RTrim(ResultatRecherche.Chemin(i)) & ResultatRecherche.Fichiers(i).cFileName For Binary As #1
Get #1, , Ch
If InStr(LCase(Input(LOF(1), 1)), LCase(Text1)) Then u = True

***********************************************

Il ouvre le fichier en binaire , et est sencé comparer les chaines en binaire, chose qu'il fait bien sauf quand c'est une décimale à virgule ça ne marche pas. Ton code me permettrais de traiter le contenue de ma textbox1 en le convertissant en binaire, mais il va REconvertir si je laisse mon code ainsi.
En gros ma question : comment faire pour lui dire de chercher une chaine traité directement en binaire ( grace à ton code ) .

Merci encore, tu m'épates !
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
21 mai 2004 à 21:05
Ben, franchement, je ne sais pas.
Vu ton autre post, tu veux rechercher une chaine dans un fichier excel ? Je ne connais pas bien le format de codage excel mais je pense que c le même que partout ailleurs.
Ce que je t'ai indiqué, c une mainère normalisée de représenter un nombre (en virgule flottantee) en binaire. Maintenant, l'enregistrement dans un fichier ne se fait pas de la même façon. Il y a des histoires d'octet de poids faible et d'octet de poids fort. Par ex :

16.40 est représenté comme suit :
0100000000110000011001100110011001100110011001100110011001100111

mais dans un fichier, ça peut être :
0011000001000000011001100110011001100110011001100110011101100110

Explication, tu prends 16 bits et tu intervertis les 8 premiers bits avec les 8 suivants et ainsi de suite.

C une piste, je n'ai plus le temps de vérifier.

A toi de continuer....

Cordialement

CanisLupus
0
ephores Messages postés 123 Date d'inscription lundi 30 juin 2003 Statut Membre Dernière intervention 5 juin 2007
21 mai 2004 à 21:10
Merci CanisLupus,
tu as fait beaucoup c'est gentil à toi, si je trouve une issue je la posterais à la suite.
En tous cas c'est un plaisir de voir des gens comme toi, près a aider leur prochain.

Merci encore et peut être à bientôt !
0
MANDIN Claude Messages postés 12 Date d'inscription dimanche 23 janvier 2005 Statut Membre Dernière intervention 18 mai 2005
25 avril 2005 à 11:20
Pour le Binaire
L'entier est divisé par deux
la partie décimale est multipliée par 2

Ex: 43,375 = 101011,011
0
Rejoignez-nous