Algoritmo e Programma in C++ Conversione Binario Decimale

Introduzione

I computer utilizzano come sistema di calcolo i numeri binari sequenze di 0 e 1 che eseguite dal processore sono interpretate in istruzioni, comandi e dati.
L’aritmetica binaria è un’aritmetica posizionale ovvero il sistema di numerazione binario è un sistema composto da 2 sole cifre 0 e 1 ed espresso in potenze di 2.
L’operazione che permette di convertire un numero binario in decimale è la “decodifica” e avviene in modo analogo all’operazione che viene insegnata ai bambini alla scuola elementare quando viene chiesto dalla maestra o maestro di scomporre un numero decimale in migliaia, centinaia, decine e unità.
In pratica l’insegnante spiega come decomporre un numero decimale positivo in potenze di 10 ad esempio il numero:
1451 è scomposto in 1x10e3+4x10e2+5x10e1+1x10e0 il simbolo “e” indica l’esponente della base.
In modo del tutto analogo fermo restando che il numero binario è in base 2 il numero binario:
10111 =1x2e4+0x2e3+1x2e2+1x2e1+1x2e0 = 16+4+2+1=21.

L’algoritmo

Compreso il procedimento proviamo a descrivere in linguaggio naturale le operazioni che svolgiamo per ottenere dal numero binario il numero decimale.
Il procedimento lo testiamo per il numero binario 10111 in questo modo

Passo 0 leggi numero binario, risultato =0
Passo 1 la cifra 5 è 1 allora aggiungi 2e4 a risultato
Passo 2 la cifra 4 è 1 allora aggiungi 2e3 a risultato
Passo 3 la cifre 3 è 1 allora aggiungi 2e2 a risultato
Passo 4 la cifra 2 è 1 allora aggiungi 2e1 a risultato
Passo 5 la cifra 1 è 1 allora aggiungi 2e0 a risultato
Passo 6 Stampa risultato

L’esempio è possibile in quanto il numero di cifre è piccolo in generale possiamo pensare di lavorare in modo ripetitivo ovvero posto che il numero binario ha L cifre, posto K la cifra da esaminare possiamo scrivere:

inizio
Leggi binario
Decimale =0
L= Numero cifre Binario 
Ripeti con K che va da 0 a L-1
   Se cifra di posizione k è 1 allora
      aggiungi a Decimale 2e(L-K-1)
Fine Ripeti
Stampa Risultato
Fine

Nel video sotto il problema è risolto con il software Flowgorithm dopo una breve spiegazione del procedimento risolutivo.

Video dell’Esercizio