Ma come fa un computer ad "elaborare" i dati?
Noi, esseri umani, siamo abituati, per cultura, ad utilizzare il sistema decimale; 10 numeri, da 0 a 9, che identificano 10 precise grandezze. Quando il valore da esprimere è superiore, passiamo alla grandezza successiva (il 10, per esempio, significa 1 decina e 0 unità; il 179 significa 1 centinaio, 7 decine e nove unità; il 2134 significa 2 migliaia, 1 centinaio, 3 decine e 4 unità; e così via).
Sviluppando, per esempio, lo schema matematico del numero 2134 avremo:
2 migliaia (1000=103) = 2000
1 centinaio (100=102) = 100
3 decine (10=101) = 30
4 unità (1=100) = 4
Da notare che il termine "decimale" deriva dalla base usata (il 10, appunto) come moltiplicatore. Ogni grandezza successiva consiste nella base elevata alla potenza corrispondente la posizione del valore stesso. La posizione iniziale (unità) corrisponde alla base (10) elevata alla potenza di 0; la seconda posizione (decina) corrisponde alla base (10) elevata alla potenza di 1; la terza posizione (centinaia) corrisponde alla base (10) elevata alla potenza di 2
e così via.
In realtà, questo metodo di calcolo, più complicato da spiegare che da usare, è solo una nostra scelta per una nostra precisa comodità (forse perché dotati di 10 dita), ma nessuno vieta di usare altri sistemi di calcolo basati su un numero differente di valori.
Abbiamo visto, per esempio, che il calcolatore riesce a distinguere "solo" due numeri, lo 0 e l'1; in questo caso useremo un sistema a lui congeniale: il sistema binario (numerazione a base 2).
Questo sistema, apparentemente complesso, in realtà è estremamente semplice e concettualmente identico al nostro, più familiare, sistema decimale.
Contiamo le unità, le "duine" e così via. Il numero 0 significa 0 unità, il numero 1 significa 1 unità, il numero 10 significa 1 "duina" e zero unità, il numero 11 significa 1 "duina" e 1 unità e così via.
Il numero 1101 per esempio significa:
1* 23 + (1*8=8)
1*22 + (1*4=4)
0*21 + (0*2=0)
1*20 (1*1=1)
Il corrispondente "decimale" darà 13, ma questa è solo una nostra "curiosità". L'importante è capire che il "valore assoluto" di un numero è direttamente collegato al sistema usato per rappresentarlo. Altri sistemi di numerazione, per esempio, sono il sessagesimale (a base 60, utilizzato dagli antichi Sumeri e attualmente adoperato per esprimere la misura dell'ampiezza di un angolo) il sistema vigesimale degli antichi Maya che come base dei loro calcoli avevano preso il numero 20, cioè la somma delle dita dei mani e dei piedi; oppure i più familiari sistemi usati dai calcolatori: il sistema ottale (numeri da 0 a 7 a base 8) e il sistema esadecimale (numeri da 0 a F a base 16); da notare che, terminati i simboli numerici normalmente usati, in questo sistema si utilizzano le prime lettere dell'alfabeto.
Nella calcolatrice scientifica di Windows si trovano direttamente le conversioni dei quattro sistemi più usati: il decimale, il binario, l'ottale, l'esadecimale.
Appare chiaro che operare "normalmente" con questi sistemi è piuttosto ostico, ma per un calcolatore, la cui prerogativa è "caricare e scaricare dalla sua memoria" segnali di 0 e di 1, è il sistema più pratico.
Da notare che più è elevato il valore da rappresentare, più bit occorrono:
Con 1 bit possiamo indicare solo i numeri da 0 a 1; con 2 bit da 0 a 3; con 3 bit da 0 a 7 e così via.
L'unione di 8 bit (che nel sistema decimale rappresenta 256 numeri da 0 a 255) prende il nome di BYTE. Questo termine è l'unità di misura standard delle grandezze informatiche. I suoi multipli (Kilobyte, Megabyte, Gigabyte) sono oramai anch'essi diventati d'uso comune. A differenza però del sistema decimale, dove la desinenza Kilo=1000, nel sistema binario K=1024. Un "Mega" non sarà quindi corrispondente a un milione ma a 1024x1024=1.048.576; un "Giga" non è un miliardo ma un "Mega"x1024=1.073.741.824
Questo calcolo spiega perché c'è sempre una differenza nel conteggio dei "megabyte" di un file o della memoria di un calcolatore.
Abbiamo citato la RAM ovvero la memoria. Ma cos'è esattamente la memoria?
Immaginiamo una grande armadio, di quelli usati dai farmacisti per contenere le varie medicine, con tanti cassettini tutti uguali, ognuno in una precisa posizione ed ognuno con 8 suddivisioni interne. Ciascuno di loro avrà una collocazione univoca, identificabile nelle sue coordinate; avrà cioè un indirizzo. All'interno, dicevamo, ci sono 8 piccoli scomparti dove possiamo in ognuno metterci una pallina.
Avremo quindi un "armadio" suddiviso in cassetti identificabili da un indirizzo che potranno contenere un numero variabile di "palline". Se queste palline le chiamiamo BIT e ogni cassetto da 8 scomparti lo chiamiamo BYTE ecco che l'analogia è subito trovata. Il compito della CPU è di "mettere opportunamente delle palline nei cassetti" o "andare a vedere che palline sono contenute in determinati cassetti"; praticamente scrivere e leggere il contenuto della memoria.
Ovviamente, rifacendoci al sistema binario prima enunciato, ogni BYTE avrà un suo preciso significato nella globalità della programmazione; conterrà un "valore" che, accompagnato al "valore" delle altre migliaia di BYTE presenti, darà vita alle istruzioni che compongono il programma da eseguire o ai dati che il programma stesso dovrà elaborare.
Dobbiamo fare una distinzione importantissima, che crea spesso confusione, tra la memoria di lavoro (cioè la RAM) e i dischi fissi (impropriamente chiamati "memoria" dai non addetti al lavoro). La RAM è composta da microchip contenenti la varie locazioni che, opportunamente alimentata, contiene i dati che la CPU legge e scrive (l'armadio di cui sopra), mentre i dischi fissi non sono altro che dispositivi magnetici dove i dati sono memorizzati in modo permanente. La RAM, infatti, cessa di funzionare non appena il calcolatore si spegne, mentre il contenuto dei dischi magnetici, rimane inalterato.
Un altro "tipo" di memoria da considerare e la ROM (read only memory), memoria a sola lettura, dove il contenuto può essere unicamente letto e non viene perso allo spegnimento del computer. Generalmente viene usata per contenere istruzioni permanenti relative ad alcune funzionalità del calcolatore (alcuni sistemi operativi poco complessi, operazioni di base, tabelle di default).
Ezio Turus © 07/2001
Riproduzione Riservata