Corso di C con Linux

Rappresentazione delle informazioni

 

All’interno di un calcolatore digitale ogni informazione viene codificata in bit (acronimo per binary digit), ovvero in sequenze di numeri binari, costituiti dalle cifre 0 e 1.
Di per sé due sole cifre possono sembrare poche per memorizzare l’enorme quantità di dati (con i loro possibili significati) che un computer deve essere in grado di manipolare; infatti essi possono rappresentare stati di acceso/spento, vero/falso, bianco/nero e in genere solo coppie di valori di opposto significato.
In realtà utilizzare un insieme così ristretto di caratteri base semplifica enormemente il lavoro di chi progetta l’hardware del calcolatore, riducendo inoltre la possibilità di errori da parte della macchina (le cifre 0 e 1 vengono rappresentate dall’hardware per mezzo di due valori di tensione, ad es. 0V per il bit 0 e 5V per il bit 1, ma questi valori dipendono dal tipo di microchip utilizzati dal costruttore, nonché dall’ambiente di utilizzo cui il calcolatore è destinato).

Per permetterci di lavorare con informazioni più complesse, impossibili da rappresentare con una sola coppia di valori, i bit vengono raggruppati in modo da formare delle codifiche cui è possibile assegnare dei valori convenzionali.
Innanzitutto vediamo che i bit vengono raggruppati per potenze di 2 ed in genere in informatica si utilizzano le seguenti unità di misura:

Unita di misura

Numero bit

Numero byte

1 byte

8 bit

1 byte

1 KB (Kilo-byte)

(1024 * 8) bit

1024 byte

1 MB (Mega-Byte)

(1.048.576 * 8) bit

1024KB = 1.048.576 byte

1 GB (Giga-Byte)

(1.073.741.824 * 8) bit

1024MB = 1.073.741.824 byte

1 TB (Tera-Byte)

(1.099.511.628.000 * 8) bit

1024GB = 1.099.511.628.000 byte

Come vedremo, nei comuni PC i caratteri vengono rappresentati con un byte, mediante la codifica ASCII, che associa ad ogni byte un carattere dell’alfabeto o un particolare carattere di controllo del computer.
Ad es. in ASCII la stringa binaria 01000001 corrisponde al carattere ‘A’.
Supponiamo di voler scrivere dei caratteri su un quaderno di carta a quadretti, dove ciascun quadretto corrisponda ad un carattere: poiché generalmente in una pagina di quadernone vi sono 2500 quadretti in media, quanti fogli consumeremo per riempire 1440 KB, quantità genericamente contenuta in un floppy?
Bene, la risposta è circa 590 pagine di quadernone: questo solo per renderci conto della quantità di informazioni che le nostre periferiche si scambiano e memorizzano.
La rappresentazione delle informazioni è importante ai nostri fini per capire come vengono immagazzinate le variabili in memoria, ovvero il tipo di dato della variabile stessa.

Infatti, fin dai primi esempi tutte le volte che abbiamo usato delle variabili si è sempre indicato, nella loro dichiarazione, il tipo di dato.
Ogni funzione che usi al proprio interno delle variabili deve dichiararne il tipo:

int funzione (void)
{
    int ciao;
    float test;

    ciao = 0;
    test = 0.1;

    return (ciao);
}


All’inizio di questa semplice funzione troviamo indicati i tipi di due variabili alle quali sono poi effettuati degli assegnamenti; questa prima parte prende il nome di parte dichiarativa.
Come abbiamo già accennato nelle lezioni precedenti, la parte dichiarativa di un programma C comunica al compilatore i nomi di tutti gli identificatori definiti dagli utenti, nonché l'utilizzo di ciascun identificatore.

Inoltre dice anche il tipo di informazione che deve essere memorizzata nella locazione di memoria riservata ad ogni variabile.
In C esistono cinque tipi di dati primari che sono riassunti nella tabella seguente.

Tipo

Parola chiave

Carattere

char

Intero

int

Reale

float

Reale in doppia precisione

double

Void

void


I numeri interi, definiti in C dalla parola chiave int, possono essere rappresentati internamente con 2 metodi diversi:
i) rappresentazione in modulo e segno
ii) rappresentazione in complemento a 2
che vedremo nella prossima lezione.

 

Torna all'indice Generale del corso di Corso di C con Linux di Software Planet