Oppure

Loading
09/01/13 17:38
tuttodiMC
Salve a tutti, qualcuno saprebbe dirmi che algoritmo devo usare per creare un programma che converta da decimale a binario e viceversa? Preciso che mi serve l'algoritmo solo delle conversioni e non di tutto il programma. Non so come fare, ho provato in vari modi. Il linguaggio che ho intenzione di usare è il Lua quindi se qualcuno lo conosce ancora meglio. Mi vanno benne gli algoritmi scritti in qualsiasi linguaggio tranne java o c++
aaa
09/01/13 17:46
Da decimale a binario

Dividi il valore per 2 e prendi il resto continuamente fino a che il valore diventa 0
Tutti i resti presi dall'ultimo verso il primo costituiscono il valore binario


Da binario a decimale

Esamina i bit dal primo a destra verso il primo a sinistra effettuando la sommatoria in cui gli elementi sono

bit x (2 elevato a n)

in cui n vale 0 per la prima cifra a destra e aumenta verso sinistra
09/01/13 17:46
Renny
aaa
11/01/13 19:04
tuttodiMC
Vi ringrazio per le risposte ma sono cose che già sapevo. Il problema sta nella struttura del programma, cosa che non ho molto chiara.
aaa
11/01/13 20:47
Se sono cose che sapevi, non dovevi chiedere l'algoritmo ma consigli sul codice.

Perché non ci proponi un inizio di codice in modo da capire dove sbagli?
13/01/13 17:26
tuttodiMC
function dec2bin(n)
io.write("Il numero ", n, "equivale a ")
while n > 0.5 or n == 0.5 do
y = n % 2
n = math.floor(n / 2)
io.write(y)
end
end
dec2bin(5)


Solo che in questo modo scrivo i resti al contrario e con il while non posso saltare delle ripetizioni come con il for, perché il contatore lì parte per forza da 1 e non può partire da 2 perciò mi esce il numero 6 in binario e messo in disordine. Come faccio? Per quanto riguarda da binario a decimale il codice lo devo ancora realizzare.
Ultima modifica effettuata da tuttodiMC 13/01/13 17:34
aaa
13/01/13 17:35
Ultimo

Carica un Array con i resti delle divisioni, e poi li stampi a video ciclando l'Array al contrario

non ci vuole la scienza ;)
If ok Then GOTO Avanza else GOTO Inizia

13/01/13 17:38
tuttodiMC
Ed è qui che tu ti sbagli. Io avevo già provato a farlo ma sapresti scrivermi il codice per farlo? Anche in un altro linguaggio.
aaa