Oppure

Loading
17/12/10 19:16
BustinGame
Ho appena sfornato uno script che converte da binario a intero ma ho un problema.

Intato, l'algoritmo che uso è uno riportato su questo sito:

Conversione da binario a decimale

Dato il numero binario 1001110, moltiplichiamo ogni cifra per il rispettivo peso:
1 * (2^6) = 64
0 * (2^5) = 0
0 * (2^4) = 0
1 * (2^3) = 8
1 * (2^2) = 4
1 * (2^1) = 2
0 * (2^0) = 0

Qundi sommiamo i risultati ottenuti e otteniamo il numero decimale:
64 + 0 + 0 + 8 + 4 + 2 + 0 = 78


Stando a questo, ho fatto lo script ma devo aver sbagliato qualcosa. Ecco il codice; se potete, provatelo e ditemi...

print("PROGRAMMA PER LA CONVERSIONE DA CODICE BINARIO A INTERO")
print

#DICHIARAZIONI
binario = input("Codice binario: ")
y = 1
x = 0
z = 0
tot = 0


for i in range(len(binario)):
    a = int(binario[x:y])
    b = (a * (pow(2, z)))
    z = z + 1
    x = x + 1
    y = y + 1
    tot = tot + b

print
print
print("Il numero reale è ", tot)
aaa
17/12/10 19:39
pierotofy
Prima di reinventare la ruota, cerca sempre di vedere se Python offre gia' una soluzione ai problemi:

binario = "101"
intero = int(binario, 2)
print intero # 5

Il mio blog: piero.dev
18/12/10 7:33
The Newbie
credo che lui voglia sapere come fare solo per uno scopo didattico.

prima di tutto c'è un errore di sintassi qui:
for i in range(len(binario))

stai cercando di trovare la lunghezza di un dato di tipo integer; la funzione len(x) è utilizzata per i tipi di dati composti (liste, stringhe, dizionari etc...). per fare in una maniera analoga e corretta, poichè noto che usi binario sempre come stringa avresti dovuto scrivere:
binario = raw_input("Inserire numero binario: ")

e solo poi avresti potuto usare la funzione len()

comunque l'errore risiede nel ciclo for per l'elevamento a potenza e soprattutto nel fatto che hai elevato le cifra meno significativa all'esponente più alto, quella più significativa allo 0::-| cioè hai fatto l'algoritmo al contrario:-|

comunque puoi vedere un mio vecchio programma caricato sul sito, l'ho commentato completamente ed è in python

pierotofy.it/pages/sorgenti/dettagli/18677-SIMPLEX_2dot0/
Ultima modifica effettuata da The Newbie 18/12/10 8:02
aaa
18/12/10 7:55
BustinGame
Ok grazie a tutti e due, ora mi funge!
aaa