PDA

View Full Version : [VB6] Convertitore Binario - Decimale


Karkatys
23-11-2011, 13:30
Salve, sto provando a creare un Convertitore da Binario a Decimale, ma c'è qualche problemino.. 111 per esempio mi viene 14 invece di 7.. :confused: Questo è il codice che ho usato:

Private Sub Command2_Click()
s = bin.Text
For I = Len(s) To 1 Step -1
If Mid(s, I, 1) = "1" Then
Risultato = Risultato + 2 ^ I
End If
Next I
dec.Text = Risultato
End Sub

Mi date una dritta? Grazie!

Mommolo
23-11-2011, 13:58
Salve, sto provando a creare un Convertitore da Binario a Decimale, ma c'è qualche problemino.. 111 per esempio mi viene 14 invece di 7.. :confused: Questo è il codice che ho usato:

Private Sub Command2_Click()
s = bin.Text
For I = Len(s) To 1 Step -1
If Mid(s, I, 1) = "1" Then
Risultato = Risultato + 2 ^ I
End If
Next I
dec.Text = Risultato
End Sub

Mi date una dritta? Grazie!

14 come risultato non mi torna.
comunque prendi questa stringa lunga 4:

0101

l'array s sarà fatto così:

s[1] = 0 = 0*2^3 (quindi l'esponente è 4, cioè len(s)-indiceArray
s[2] = 1 = 1*2^2 (quinidi l'esponente è 3, etc. etc)
s[3] = 0 = 0*2^1 (idem)
s[4] = 1 = 1*2^0 (idem)

Che non corrisponde al tuo calcolo.
:)

icecube_HU
24-11-2011, 08:39
Salve, sto provando a creare un Convertitore da Binario a Decimale, ma c'è qualche problemino.. 111 per esempio mi viene 14 invece di 7.. :confused: Questo è il codice che ho usato:

Private Sub Command2_Click()
s = bin.Text
For I = Len(s) To 1 Step -1
If Mid(s, I, 1) = "1" Then
Risultato = Risultato + 2 ^ I End If
Next I
dec.Text = Risultato
End Sub

Mi date una dritta? Grazie!
L'esponente deve essere (I-1).Ciao !

Mommolo
24-11-2011, 08:41
L'esponente deve essere (I-1).Ciao !

Ma de ghe? :muro:

icecube_HU
24-11-2011, 09:03
Ma de ghe? :muro:
Hai ragione, risposta frettolosa ! :D :cry:
Correggo:
risultato = risultato + 2 ^ (Len(s) - i)

Mommolo
24-11-2011, 09:23
Nemmeno :D

icecube_HU
24-11-2011, 10:24
Nemmeno :D

:sofico: Mommolo, pròvolo ! :D ...prima di dire nemmeno ! :cool:

Magari rivedi anche il tuo schema:

s[1] = 0 = 0*2^4 (quindi l'esponente è 4, cioè len(s)-indiceArray+1
s[2] = 1 = 1*2^3 (quinidi l'esponente è 3, etc. etc)
s[3] = 0 = 0*2^2 (idem)
s[4] = 1 = 1*2^1 (idem)

...visto che prevede che il bit meno significativo sia "pesato" per 2^1, mentre invece deve essere "pesato" per 2^0, per cui TUTTI i tuoi esponenti devono essere ridotti di 1, quindi il mio (Len(s)-i) é corretto, non così il tuo (len(s)-indiceArray+1) !:Prrr:

Ciao !

Mommolo
24-11-2011, 10:36
Provolonissimo :D

Hai ragione :rolleyes:

icecube_HU
24-11-2011, 10:50
;) Ok, ciao !