begin process at 2012 02 14 12:35:55
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Algorithme

 > 

Maths

 > 

convertsseur binaire/decimal aide svp


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

convertsseur binaire/decimal aide svp

mercredi 31 décembre 2008 à 11:32:03 | convertsseur binaire/decimal aide svp

steph064

J'ai un problème avec mon convertisseur binaire/décimal et je ne trouve pas pourquoi, théoriquement il devrait marcher:

Sub Bin_Dec() 'convertisseur decimal sur 8 bits
Dim TableauBin(9) As String, dec As Integer, bit As String, cpt As Integer, puiss2 As Integer, variable As Integer
cpt = 1
variable = 0
TableauBin(0) = "rien"
number = "11001011" '=203
bit = Mid(number, 1, 1)

While cpt <> 9 'met chaque 1 et 0 de "number" dans un tableau allant de 1 à 8 (normalement ça marche)
TableauBin(cpt) = Mid(number, cpt, 1)
cpt = cpt + 1
Wend

For cpt = 1 To 8
    If TableauBin(cpt) = "1" Then 'si la valeur dans la case du tableau est 1 alors je la fait correspondre à une puissance de 2 (marche)
    TableauBin(cpt) = 2 ^ (cpt - 1)
    End If
dec = dec + 1 * val(TableauBin(cpt)) 'calcul faisant la conversion qiui me donne: dec = 211 et non 203
Next

MsgBox "le nombre decimal est : " & dec
End Sub


Si vous trouvez pourquoi, faites le moi savoir ^^' merci.

mercredi 31 décembre 2008 à 12:12:09 | Re : convertsseur binaire/decimal aide svp

NHenry

Membre Club Administrateur CodeS-SourceS
Bonjour,

Quel est ton pb ?
Tu peux regardes dans la section VB6 de mon site et sur mon profil CS (sources VB6), j'ai fais un convertisseur Binaire (réfléchi et normal), BCD, Octal, Décimal et Hexadécimal.

Ma signature pour pointer sur mon site
mercredi 31 décembre 2008 à 12:18:00 | Re : convertsseur binaire/decimal aide svp

steph064

J'ai besoin de ce petit programme pour trouver un sous-réseau en fait.
Normalement il ne me reste plus qu'à convertir le binaire en décimal et j'ai mon sous-réseau. Mais mon convertisseur marche mal.
Le truc c'est qu'au lieu de trouver 203 pour 11001011 mon programme trouve 211, parfois il trouve + d'autrefois il trouve - que ce qu'il doit trouver. Je trouve ça bizarre.
mercredi 31 décembre 2008 à 12:29:44 | Re : convertsseur binaire/decimal aide svp

jmfmarques

Membre Club
Bonjour,

Juste pour ton information :
 la traduction en binaire de 203 est 1 1 1 0 1 0 0 1 et non 1 1 0 0 1  0 1 1 
mercredi 31 décembre 2008 à 12:36:48 | Re : convertsseur binaire/decimal aide svp

NHenry

Membre Club Administrateur CodeS-SourceS
Bonjour,

(au code, je suppose que tu es débutant)

Un conseil INDISPENSABLE, mets SYSTEMATIQUEMENT "Option Explicit" en première ligne de tes modules de code, cela t'évitera d'avoir certaines erreurs.

Préfère utiliser des Long à la place des Integer, cela améliorera les performances.

Evite le plus possible les déclaration Dim comme tu l'a fait, cela rend la lecture du code plus difficile.

Indente mieux ton code (tabulations).

Préfère utiliser Do..Loop à While..Wend, plus souple et plus lisible.

Tu dimensionnes ton tableau à 10 élément pour en utiliser 8, change ta déclaration en Dim TableauBin(1 to 8)

Essaye ce code :

Option Explicit

Sub Bin_Dec() 'convertisseur decimal sur 8 bits
Dim lNumber As String
Dim lResult As Long

lNumber = "11001011" '=203

lNumber = Right$(String(8, "0") & lNumber, 8)

lResult = 0
Do While Len(lNumber) > 0
    lResult = lResult * 2 + CInt(Left$(lNumber, 1))
    lNumber = Right$(lNumber, Len(lNumber) - 1)
Loop

MsgBox lResult
End Sub






Ma signature pour pointer sur mon site
mercredi 31 décembre 2008 à 12:38:03 | Re : convertsseur binaire/decimal aide svp

Mikaels35

Salut

Tu rentres les valeurs dans le tableau en commençant par le bit de poids fort et tu calcules en commençant par lui donc avec i=1 tu auras 2^0 cad 1 au lieu de 2^7 = 128 !

Il faut faire : TableauBin(cpt) = 2 ^ (8 - cpt)

Sinon est-tu obligé de passer par un tableau et de faire des tas de calculs inutiles ?

Car il y a plus rapîde

Private Function  Bin2Dec(c As String) As Integer  ' ou Long pour des valeurs plus grandes éventuellement
Dim  i%
For i = 1 To Len(c)
    If Mid$(c, i, 1) = "1" Then Bin2Dec =  Bin2Dec + 2 ^ (Len(c) - i)
Next i
End Function

MsgBox Bin2Dec ( "11001011") par exemple -> 203

-> Jmfmarques  203 est bien  1 1 0 0 1  0 1 1  et pas 11101001= 233

@+

mercredi 31 décembre 2008 à 12:38:58 | Re : convertsseur binaire/decimal aide svp

NHenry

Membre Club Administrateur CodeS-SourceS
Bonjour,

jmfmarques
ça me donne (calculatrice Windows) : 203 -> 11001011

Erreur de calcul ?

Ma signature pour pointer sur mon site
mercredi 31 décembre 2008 à 12:40:53 | Re : convertsseur binaire/decimal aide svp

NHenry

Membre Club Administrateur CodeS-SourceS
Bonjour,

Mikaels35
Dim  i%
est moins évident que
Dim i as Integer

Et comme dit dans un post précédent, préfère les Long.

Ma signature pour pointer sur mon site
mercredi 31 décembre 2008 à 12:50:06 | Re : convertsseur binaire/decimal aide svp

jack

Administrateur CodeS-SourceS
Salut
Le binaire se lit de droite à gauche, voilà ton erreur.
Le bit de poids faible (2^0) est à droite
mercredi 31 décembre 2008 à 12:55:03 | Re : convertsseur binaire/decimal aide svp

steph064

1_Oui je suis débutant
2_J'ai pas tout compris:

"lNumber = Right$(String(8, "0") & lNumber, 8)"

à quoi correspond le $ après le Right (je connais la fonction right) ?
Pourquoi mettre 8 "0" devant la valeur de 1Number ? (j'ai supprimé "lNumber = Right$(String(8, "0") & lNumber, 8)", le résultat est le même)

Expliquez moi votre calcul svp:
"    lResult = lResult * 2 + CInt(Left$(lNumber, 1))
     lNumber = Right$(lNumber, Len(lNumber) - 1)  "

3_Je retiendrai vos précieux conseils ^^, mais à quoi correspond: "Option Explicit"
lapin compris ???
Merci
(Je sais je suis lourd mais j'aime comprendre ce que j'écris ^^)

1 2

Cette discussion est classée dans : number, decimal, cpt, dec, tableaubin


Répondre à ce message

Sujets en rapport avec ce message

comment convertir des valeurs en HEXA en DECIMAL SVP ? [ par zeeti ] Comment puis-je convertir des valeurs en HEXA, en DECIMAL (BASE 16 > BASE 10)Car le contraire est facile avec la fonctin Hex mais pas la réciproque... Enlever une texture. [ par 10/4 ] J'ai récupéré ce code sur ce site pour appliquer une texture. Il marche très bien & je félicite son auteur dont le nom m'echappe. Mais comment on fait Comment effectuer la lecture de chaque élément d'un tableau [ par emarck ] Bonsoir, J'ai déclarer un tableau sans spécifier sa longeur et je fais un Redim preserve afin de le réajuster à chaque fois que j'ajoute un élémen Conversion hexadecimal-decimal [ par zarf ] J'aimerais savoir si il existe une fonction inverse à la fonction Hex(). Si non, qu'elle serait la méthode. Merci. convertion decimal en hexadecimal [ par taz ] je cherche le source de la conversion decimal en hexadecimal .merci d'avance recherche une fonction de conversion HEX--> DEC [ par laurent ] bonjour à toutes et tousje recherche sous VB une fonction qui convertit de l'héxadécimal en décimal. Simple comme fonction mais introuvable !!!Si vous URGENT : changement d'imprimante depuis VB :°-( [ par I need your help ! ] Bonjour à tous,Voici ma question : comment changer l'imprimante par défaut depuis un programme VB ? :-)En créant manuellement une imprimante "Virtua changement du symbol decimal sous windows [ par jj ] Comment peut on changer de symbol decimal sous windows, en utilisant une fonction faisant appel à une DLL ?en effet, windows propose par defaut la "," Format decimal [ par anspauldou ] SalutJ'ai des probleme de format pour mes decimales. Je veux pouvoir utiliser le point a la place de la virgule pour effectuer des calculs exemple 0,4


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,608 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales