Concetti Chiave

  • Il programma converte un numero binario, fornito come input, nel suo equivalente decimale tramite un ciclo di elaborazione.
  • Utilizza operatori di divisione e modulo per estrarre le cifre del numero binario da destra a sinistra.
  • Ogni cifra binaria è moltiplicata per il suo valore posizionale, che è una potenza di 2, per calcolare il valore decimale finale.
  • Il programma verifica se l'input è valido, assicurandosi che contenga solo cifre 0 e 1 prima di procedere con la conversione.
  • Il risultato finale viene stampato nel formato desiderato, mostrando sia il numero binario che il suo equivalente decimale.

Download sorgente

Indice

  1. Conversione di numeri binari
  2. Implementazione del programma

Conversione di numeri binari

/* Prendete in input un intero contenente soltanto degli 0 e degli 1, ovvero un intero "binario", e visualizzate il suo equivalente decimale. (Suggerimento: per prelevare le cifre del numero "binario" una per volta da destra a sinistra, utilizzate gli operatori di divisione e di modulo. Nel sistema numerico decimale, la cifra piu' a destra ha un valore posizionale di 1 e quelle che si susseguono a sinistra hanno un valore posizionale di 10, poi 100, poi 1000, ecc; allo stesso modo, nel sistema numerico binario, la cifra piu' a destra ha un valore posizionale di 1 e quelle che si susseguono a sinistra hanno un valore posizionale di 2, poi 4, poi 8, ecc. Di conseguenza il numero 234 potra essere interpretato come 4 * 1 + 3 * 10 + 2 * 100. L'equivalente decimale del binario 1101 sara' 1 * 1 + 0 * 2 + 1 * 4 + 1 * 8 ovvero 1 + 0 + 4 + 13 ovvero 13). */

Implementazione del programma

#include


#define BASE 2

int main(void) {

unsigned int base = BASE;

unsigned int n, nb;

unsigned int cifra;

unsigned int n10 = 0;

/* valore in base 10 */

unsigned int peso = 1;

/* peso della cifra */

printf("Inserire il numero in base %u: ", base); scanf("%u", &n); nb = n; while (nb > 0) { cifra = nb % 10;

/* LSB, cifra a destra */

/* controllo che la cifra appartenga alla base */

if (cifra > BASE - 1) {

printf("Numero non in base %u!", base);

return 1;

}

n10 = n10 + cifra * peso;

peso = peso * base;

/* scarta la cifra piu' a destra */

nb = nb / 10;

}

printf("(%u)_%u = (%u)_10", n, base, n10); return 0; }

Domande da interrogazione

  1. Come si converte un numero binario in decimale?
  2. Per convertire un numero binario in decimale, si sommano i valori posizionali delle cifre, partendo da destra a sinistra, dove ogni cifra ha un valore che raddoppia (1, 2, 4, 8, ecc.). Ad esempio, il binario 1101 si calcola come 1*1 + 0*2 + 1*4 + 1*8, risultando in 13.

  3. Qual è il ruolo degli operatori di divisione e modulo nella conversione?
  4. Gli operatori di divisione e modulo vengono utilizzati per estrarre le cifre del numero binario una alla volta, partendo dalla cifra più a destra. Il modulo serve a ottenere l'ultima cifra, mentre la divisione permette di scartare la cifra già elaborata.

  5. Cosa succede se si inserisce un numero non binario?
  6. Se viene inserito un numero che contiene cifre non valide per la base binaria (0 e 1), il programma restituisce un messaggio di errore e termina l'esecuzione, indicando che il numero non è in base 2.

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community