Come convertire binario a un numero intero in C Programming

August 11

Come convertire binario a un numero intero in C Programming


Binaria e decimale sono due modi diversi per rappresentare i numeri interi. Nella programmazione C, i numeri binari sono in genere memorizzati in stringhe di caratteri o qualche altro tipo di matrice. Le stringhe di caratteri in C sono nominati da un puntatore a carattere che punta al basso bit di ordine della stringa binaria. La stringa termina con il carattere speciale C "\ 0" che segue il bit di ordine alto. La conversione di queste stringhe binarie nel valore intero equivalente è un semplice programma di scrivere - sia in modo iterativo o ricorsivo.

istruzione

1 Sviluppare un algoritmo chiaro per la conversione prima di iniziare a scrivere codice. Avrete bisogno di due variabili per l'algoritmo: un accumulatore per tenere traccia dei risultati e una variabile "potere" per tenere traccia della crescente potenza di 2 che descrive le diverse posizioni di bit del numero binario. Ad esempio, il numero intero 13 è memorizzato in binario come 1101. Questo numero è effettivamente (1 X 2 ^ 3) + (1 X 2 ^ 2) + (0 X 2 ^ 1) + (1 X 2 ^ 0) o 8 + 4 + 0 + 1 = 13. per il modo in cifre binarie sono memorizzati in C, inizieremo al bit di ordine basso e moltiplicando ciascun bit dai valori crescenti della variabile di potenza e aggiungendolo nell'accumulatore.

2 Descrivere la funzione in pseudocodice, testare il pseudocodice con alcuni esempi, regolare il pseudocodice, se necessario, e scrivere il codice C direttamente dal pseudocodice. Nome funzione: binary2integer. Ingresso: un puntatore a un tipo di carattere. Output un numero intero. Avviare la funzione definendo due variabili intere: ACC - un accumulatore e POW - un valore che raddoppia ad ogni passo nella conversione. Impostare secondo a 0 e pow a 1. Continuare a fare le tre dichiarazioni nel ciclo fino a quando il puntatore sta puntando il carattere "\ 0", per poi tornare al valore del secondo come valore della funzione. Le tre istruzioni di ciclo sono: Se il puntatore punta a un "1", aggiungere il valore di pow al secondo, raddoppiare il valore di pow e incrementare il puntatore per puntare al bit successivo.

3 Convertire il pseudocodice di codice C: int binary2integer (char p) {int secondo, pow; Acc = 0; pow = 1; mentre (p = '\ 0'!) {if (p == '1') secondo + = pow; pow = 2; p ++} return acc}. Questo codice deve essere testato con diversi esempi. Assicuratevi di controllare per i valori limite, come 0 e 1, nonché con una varietà di valori come 11111, 00000, 10101 e 01010.

Consigli e avvertenze

  • La versione ricorsiva utilizza pow come una delle variabili e eroga con acc complessivamente. Chiede che assomigliano a questo: RecursiveB2I (p 1) e la funzione appare come questo: int RecursiveB2I (char * p int pow) {if p * == '\ 0' per poi tornare 0; ? Ritorno (p * == '1') Pow: 0 + RecursiveB2I (p 2 * pow}
  • Se i numeri binari sono memorizzati in un formato diverso, la funzione sarà diverso, ma l'idea di base è la stessa.