Da binario a decimale

di il
4 risposte

Da binario a decimale

Ciao ho questa sottofunzione che trasforma numeri binari in decimale :

void bin2dec(char b[],int& d){
    d=0;
    for (int j=0; b[j]!=0 ;j++)
        d=d*2+(b[j]-'0');
    return;
}

con la chiamata in main : bin2dec (bin,dec)
Io non ho proprio capito il funzionamento di quel void. Cosa fa quel ciclo for? Come fa a generare un decimale se è inizializzato sempre a 0? Sto impazzendo!

4 Risposte

  • Re: Da binario a decimale

    Ciao
    allora il void significa che la funzione non ritorna codici.
    il valore decimale viene restituito dalla variabile d.
    quel d=0 rappresenta il valore iniziale prima di eseguire il ciclo.
    il ciclo opera da 0 fino alla fine della stringa b[j]=0
    non fà niente altro che:
    convertire il carattere in un numero moltiplicarlo per 2 e aggiungerci il numero successivo.
    esempio
    vogliamo convertire il valore binario 1011 in decimale
    nella stringa iniziale avremo : 31303131 (codice ascii)
    d=0 (inizio)
    d=d*2+ (primo carattere trasformato in numero) = 0*2+(31-30)=1
    prossimo elemento
    d=d*2+(secondo carattere trasformato in numero) = 1*2+(30-30)=2
    prossimo elemento
    d=d*2+(terzo carattere trasformato in numero) = 2*2+(31-30)=5
    prossimo elemento
    d=d*2+ (quart carattere trasformato in numero) = 5*2+(31-30)=11
    fine ciclo
    spero che adesso ti sia chiaro
  • Re: Da binario a decimale

    @MarcoPierro ... ti sembrerà ovvio ma, se non studi le cose, non potrai mai capirle ... Forse ti manca un po' di "applicazione" ...

    Cerca "void" nel tuo libro e vedi cosa significa.

    Cosa fa il ciclo for? Come funziona un ciclo for? Spiegalo ...
  • Re: Da binario a decimale

    smalldragon ha scritto:


    Ciao
    allora il void significa che la funzione non ritorna codici.
    il valore decimale viene restituito dalla variabile d.
    quel d=0 rappresenta il valore iniziale prima di eseguire il ciclo.
    il ciclo opera da 0 fino alla fine della stringa b[j]=0
    non fà niente altro che:
    convertire il carattere in un numero moltiplicarlo per 2 e aggiungerci il numero successivo.
    esempio
    vogliamo convertire il valore binario 1011 in decimale
    nella stringa iniziale avremo : 31303131 (codice ascii)
    d=0 (inizio)
    d=d*2+ (primo carattere trasformato in numero) = 0*2+(31-30)=1
    prossimo elemento
    d=d*2+(secondo carattere trasformato in numero) = 1*2+(30-30)=2
    prossimo elemento
    d=d*2+(terzo carattere trasformato in numero) = 2*2+(31-30)=5
    prossimo elemento
    d=d*2+ (quart carattere trasformato in numero) = 5*2+(31-30)=11
    fine ciclo
    spero che adesso ti sia chiaro

    Molto probabilmente credo di aver capito. L'unica cosa non capisco quel 31303131..in codice ASCII lo '0' corrisponde a 48 mentre '1' corrisponde a 49

    oregon ha scritto:


    @MarcoPierro ... ti sembrerà ovvio ma, se non studi le cose, non potrai mai capirle ... Forse ti manca un po' di "applicazione" ...

    Cerca "void" nel tuo libro e vedi cosa significa.

    Cosa fa il ciclo for? Come funziona un ciclo for? Spiegalo ...
    Si è vero, il fatto è che le ho studiate ma devo ancora metterle bene in pratica
  • Re: Da binario a decimale

    Scusami per i 30 e i 31 ... sono i corrispettivi in esadecimale
    comunque il succo di quello che ti ho spiegato non cambia
Devi accedere o registrarti per scrivere nel forum
4 risposte