Seleziona il capitolo della lezione

gli appunti a cura di Nosari Roberto

Le origini dell'informaticaPrincipi di funzionamentoIl computer le basiI componenti principaliIl cabinetMonitor e schede videoMultimedia e schede audioAltre perifericheLe memorie di massaLe interfacce di comunicazione

INFORMATICA DI BASE

Capitolo 2: Principi di funzionamento del calcolatore

Come abbiamo accennato precedentemente, gli attuali calcolatori, come quasi tutti i circuiti elettronici che trattano dati in forma numerica, si basano sul sistema digitale. Elaborano cioè ogni tipo di dato attraverso segnali che possono avere solo due stati logici: 0 e 1; vero o falso; c'è o non c'è tensione, ecc..

Si attribuisce allo stato logico 0 l'assenza di tensione (livello basso), mentre si attribuisce allo stato logico 1 la presenza di tensione (livello alto).

I circuiti che funzionano in questo modo (digitale) risultano notevolmente più semplici rispetto a quelli lineari (analogici) ed anche meno costosi. I circuiti digitali offrono anche una maggior affidabilità ed un livello molto alto di immunità al rumore, cioè dai disturbi provocati da scariche elettriche, dalla vicinanza di forti campi magnetici ecc..

La memorizzazione di segnali in questa forma, risulta molto più semplice e sicura. E' per questi motivi che il futuro si muove con l'elettronica digitale.

Come è intuibile, questo "modo di vedere" le cose si discosta notevolmente dalle nostre abitudini, in quanto si basa unicamente su due estremi e di conseguenza si dice che ogni rappresentazione viene espressa in binario.

I simboli numerici, o numeri, furono inventati per facilitare i calcoli. Vari sistemi numerici differiscono nel posizionamento e nel tipo di simboli numerici usati.

La razionalità, pur lenta ma in continuo miglioramento, dei sistemi di notazione numerica e le regole aritmetiche su esse costruite, sono da considerarsi in intimo contatto con il progresso della matematica e delle scienze in genere. I capitoli che seguono offrono una breve rassegna delle basi dei moderni sistemi di numerazione, della loro "manipolazione" aritmetica e della conversione dal sistema binario e di notazione esadecimale, entrambi i quali sono usati nella elaborazione dei dati.

L'algebra booleana (il cui nome deriva dal matematico inglese GEORGE BOOLE che sviluppò tale algebra verso la meta' dell'800), tratta le variabili binarie (dette anche variabili logiche). Le operazioni dell'algebra booleana, assieme alle regole che la governano, servono per trattare le variabili binarie nelle stesso modo in cui l'algebra "ordinaria" tratta i numeri reali ed i loro infiniti valori.

La connessione tra l'algebra di BOOLE ed i computers sta nel fatto che le informazioni manipolate e contenute nei circuiti dei calcolatori vengono rappresentate attraverso combinazioni di questi due valori (zero e uno).

Vediamo i principi che stanno alla base dell'algebra di Boole, richiamando e successivamente confrontando il sistema di numerazione decimale, con il sistema di numerazione binario.

 

NOTAZIONI POSIZIONALI:

Il SISTEMA DI NUMERAZIONE DECIMALE

Gli arabi inventarono i simboli numerici ed il sistema della notazione posizionale sui quali si basano l'attuale nostro sistema decimale ed altri sistemi numerici. Ciascuno dei simboli ha un valore fisso di un'unità superiore a quello che lo precede nella progressione dal più piccolo al più grande: 0,1,2,3,4,5,6,7,8,9. I valori maggiori di 9 si formano accostando tali simboli in diverse combinazioni. In questo modo il valore del numero dipende sia dalle relative posizioni di ogni singola cifra che dal valore della stessa (X Unità, X Decine, X Centinaia, ecc.).

In qualsiasi sistema di notazione posizionale, la posizione della cifra all'estrema destra è quella di valore più basso ed è chiamata "Least significant digit" (LSD) (cifra meno significativa), la cifra all'estrema sinistra è quella che esprime il valore maggiore ed è chiamata “Most significant digit" (MSD) (cifra più significativa o di massimo ordine).

L'incremento in valore della posizione di ogni digit dipende dalla base (o radice) del sistema di numerazione. Nel sistema di numerazione decimale, cioè a base 10 (perchè tanti sono i simboli usati; da 0 a 9), il valore delle posizioni dalla cifra a sinistra aumenta di una potenza di 10 per ciascuna posizione. Per chiarire meglio; alle potenze in base 10 si dà il nome di  pesi: Es. 5.10º significa 5 per dieci con peso 0, cioè 5 unita';

5.10¹ significa 5 per 10 con peso 1, cioè 5 decine; e cosi, via.

3      2      1       0       -1      -2      -3     
Potenze di 10 10 10    10    10    10    10    10   
Valore decimale 1.000 100 10 1 0,1 0,01 0,001
Conosciuti come migliaia centinaia decine unità decimi centesimi millesimi

Anche se non siamo abituati a rappresentare i numeri in questo modo, tale sistema    risulta molto più  comodo e semplifica notevolmente il calcolo delle operazioni. 

Per esempio, se volessimo calcolare (senza calcolatrice ovviamente)  7: 3.500=       dovremmo avere a disposizione un foglio di carta ed una biro e procedere nel modo   che tutti conosciamo. E' però possibile attraverso questo metodo, fare i calcoli         mentalmente o almeno renderli molto più semplici eseguendo questi passaggi:

7:3500 = si può anche scrivere 7:(3,5.10³)=   quindi il calcolo si riduce a 7:3,5 e non serve la calcolatrice per dire che il risultato è 2 mentre il 10³  in questo caso viene riportato ( sempre come moltiplicatore) al di là dell'uguale ma a causa di questo passaggio gli viene invertito il segno del peso, ottenendo così:

7/(3,5 . 10³)= 2 . 10-³ , oppure 0,002 decimale.

Moltiplicare ad esempio 150.000 x 200.000 nel metodo abituale diventa abbastanza laborioso, ma potremmo utilizzare le potenze di 10 e quindi ridimensionare tali numeri rendendoli tanto piccoli da poterne eseguire il calcolo mentalmente:

 

150.000 x 200.000 = potrebbe essere rappresentato anche come :

          

(15 . 10 alla 4 ) x (2 . 10 alla 5)=

 

Ora raggruppiamo i pesi (essendo una moltiplicazione, si sommano) e l'operazione diventa:

 

(15 x 2) .10 alla 9 = 30 .10 alla 9 = 30 con l'aggiunta di 9 zeri, cioè  30.000.000.000

 

IL SISTEMA DI NUMERAZIONE BINARIO

 

In modo simile (almeno intuitivamente) funziona la numerazione binaria, anche se in un primo momento può sembrare incomprensibile o almeno difficile (come tutte le cose nuove che si cerca di imparare) in realtà e' molto semplice una volta appreso il meccanismo. Siccome il computer e' una macchina e come tale e' quindi stupida, cioè non ragiona e non ha intelligenza, diventerebbe molto complesso farla lavorare col sistema decimale a causa della difficoltà  legata al controllo di diverse tensioni (una tensione per ogni numero rappresentabile,  in definitiva troppe). Si usa allora il sistema binario in quanto impedisce alla macchina di “confondere" dati, usando due soli segnali (1 e 0) denominati bit (abbreviazione di BINARY DIGIT, cioè cifra binaria), che indicano in pratica che c'è o non c'è tensione. La numerazione binaria (invece che base 10) ha base 2 e le cifre in forma binaria vengono posizionate dai relativi pesi, che naturalmente sono potenze in base due.

 

Decimale

Binario

0

0

1

1

2

10

3

11

4

100

5

101

6

110

7

111

8

1000

9

1001

10

1010
11 1011
12 1100
13 1101
14 1110
15

1111

 

In informatica si lavora a livello di byte, ossia gruppi di 8 bit in sequenza: con un byte si può rappresentare qualsiasi carattere del codice ASCII, sia esso una lettera, un numero o un carattere speciale.

Il codice ASCII (American Standard Code for Information Interchange) è un insieme di 256 caratteri, ciascuno dei quali è la "traduzione" nel sistema binario di tutti i caratteri alfanumerici e dei simboli utilizzati nei PC (256 è esattamente il numero delle combinazioni dei valori 0 e 1, presi 8 alla volta). Ad esempio, il carattere "C" maiuscolo ha codice ASCII 67, il numero "9" ha codice ASCII 57, e così via. Se premiamo il tasto ALT e, mantenendo la pressione, digitiamo uno qualsiasi dei numeri da 0 a 256, al rilascio del tasto ALT apparirà un carattere (ad eccezione dei codici da 1 a 31 che corrispondono a codici di controllo e non appaiono sullo schermo).

I byte vengono utilizzati, tra l'altro, per misurare la capacità di memoria dei dischi: si parla, a tal proposito, di Kilobyte, Megabyte, Gigabyte e Terabyte (si veda lo specchietto riassuntivo):

 

Unità

 simbolo

 equivale a:

 bit

 

 può assumere i valori 0 oppure 1

 Byte

 

 8 bit

 Kilobyte

 K, KB

 1024 Byte

 Megabyte

 MB

 1024 KB

 Gigabyte

 GB

 1024 MB

 Terabyte

 TB

 1024 GB

Vediamo ad esempio come si può esprimere il numero binario 100111(si legge: uno, zero, zero, uno, uno, uno), nell'equivalente decimale.

1  0  0 1 1 1
5 4 3 2 1 0
(1x2)  +      (0x2 ) +      (0x2 ) +      (1x2 )  +       (1x2) +         (1x2)

 

ll valore decimale ad esso corrispondente e' dato dalla somma di tutti i prodotti dei bit 1 (cioè solo i più  significativi ), per i pesi relativi (corrispondenti) , cioè:  

 

5 2  1  0  
(1x2 ) +    (1x2 ) +      (1x2 ) +       (1x2)  =  

                                         ( 34 ) + ( 4 ) + ( 2 ) + (1 ) = 41 in decimale

In pratica, per calcolare l'equivalente valore decimale di un numero espresso in forma binaria, esiste un metodo molto semplice (ma non l'unico):

Si costruisce una tabella di numerazione a base 2, con il corrispondente valore decimale attribuito al bit 1, posto in quella determinata casella; in pratica:  

 

8 7 6 5 4 3 2 1 0
2   2   2   2   2   2   2   2   2  
ò ò ò ò ò ò ò ò ò
256 128 64 32 16 8 4 2 0

 

Se per esempio dovessimo calcolare il valore decimale del numero binario 10011, non dovremmo far altro che sommare tra loro i valori decimali delle caselle evidenziate dai bit significativi (i bit 1).  

 

5 4 3 2 1 0
2   2   2   2   2   2   ç Pesi in base 2
32 16 8 4 2 1 ç Corrispondenti decimali
1 0 0 1 1 ç Numero binario

 

Consideriamo valide solo le caselle occupate dal bit 1,  avremo quindi, iniziando a contare da destra verso sinistra:

 a)valore decimale 1 (vale perché occupato dal bit 1)

 b)sommato al valore decimale 2 (vale perché occupato dal bit 1)

 c)sommato al valore decimale 16 (vale perché occupato dal bit 1)

 

Il corrispondente valore decimale in questo caso vale 16 + 2 + 1 = 19

 

Anche i numeri binari frazionari vengono rappresentati con criteri analoghi a quelli osservati per i numeri frazionari del sistema decimale. Naturalmente lo spostamento della virgola di una posizione verso destra o verso sinistra, raddoppia a dimezza il valore (in decimale) degli stessi numeri. Se consideriamo per esempio il numero binario : 1,10010 il  suo equivalente decimale e':

 

            0                        -1                        -2                         -3                            -4                         -5

(1x2 )   +    (1x2 )    +    (Ox2)     +     (0x2)      +       (1x2)     +    (0x2) =

 

= (1) + (1/2)+ (1/16) = 16/16 + 8/16 + 1/16 = (16 + 8 + 1)/16 = 25/16

 

Spostando la virgola di un posto verso destra, il numero espresso in forma binaria diventa 11,0010; mentre il suo equivalente decimale diventerà  50/16 oppure 25/8.

L’algebra di BOOLE, per quanto possa sembrare complessa a noi, in effetti semplifica le cose nei riguardi della rappresentazione (e quindi della elaborazione) di valori decimali da parte della macchina, in quanto qualsiasi numero decimale si può scrivere usando combinazioni di due sole cifre (i bit  1  e  0).

 

Come e' facile intuire gli unici valori decimali che coincidono con quelli binari sono 1 e 0. Vale a dire, il bit 1 indipendentemente dalla posizione che occupa (nella rappresentazione del numero), vale 1 sia nell'uno che nell'altro sistema di numerazione; cosi' dicasi per il bit 0 che in entrambi i sistemi non ha "nessun significato" se non quello di evidenziare una “posizione" .

 

PASSAGGIO DAL SISTEMA DECIMALE A QUELLO BINARIO

Metodo della divisione per due

 

Per, rappresentare in forma binaria un qualsiasi numero decimale, si può usare la tabella e procedere in modo inverso a quello visto precedentemente cioè per sottrazioni successive (e' pero' laborioso se si deve lavorare con un numero alto di cifre) .

Oppure si può seguire il metodo della divisione per due che e' certamente il più comodo. Esso consiste nel dividere il numero decimale per due, il quoziente ottenuto lo si divide ancora per due e così via finché si ottiene un quoziente non più divisibile per tale numero (in pratica a lo 0 o l'1).

L'espressione del numero binario corrispondente è data dalla successione dei resti a partire dall'ultimo trovato . Proviamo ad esempio a convertire in binario il numero decimale 59.

Quoziente Resto
59 1 ç 59 : 2 = 29 con resto di 1 e così via  
29 1
14  0
 7 1
3 1
 1 1 ç L’ultimo, non  più divisibile, lo riportiamo nei resti
Ø Ú

    

Si allineano quindi (da sinistra verso destra) i bit 1 e 0 corrispondenti ai resti, partendo dall'ultimo trovato: il numero decimale 59, in forma binaria si rappresenta quindi così: 111011.

 

Vediamo ora le due operazioni fondamentali (somma e sottrazione); fondamentali perché è in questo modo che il  calcolatore esegue tutte le operazioni (non conosce divisione, moltiplicazione, ecc.).

Per essere più chiari, il calcolatore esegue la divisione col metodo delle sottrazioni successive; in pratica se deve dividere un certo numero per x, sottrae tante volte x fino ad ottenere un valore tanto piccolo da essere ritenuto trascurabile ed ogni volta incrementa un particolare registro di memoria (contatore) ed al termine dell'operazione ci "renderà”  il valore contenuto in tal registro come risultato dell'operazione stessa. Il procedimento contrario avviene invece per la moltiplicazione (cioè per somme successive).

Per noi "comuni mortali" é comunque possibile procedere con gli stessi principi che regolano i calcoli nel sistema decimale, badando bene però di rispettare le regole che vedremo più avanti.

 

SOMMA TRA NUMERI BINARI

 

Se per esempio vogliamo sommare i numeri binari: 1010011 e 100101, incolonniamo le rispettive cifre (bit) di tali numeri facendo attenzione ad incolonnare in base alla virgola :Es.  

 

1 1 1   Ü riporto  
1 0 1 0 0 1 1 +   Ü primo numero              (83 decimale)  
1 0 0 1 0 1 =   Ü secondo numero        (37 decimale)  
1 1 1 1 0 0 0   Ü risultato                       (120 decimale)  

Infatti in base a particolari proprietà dell'algebra binaria, si ha che:

 

0 + 0 = 0

0 + 1 = 1

1 + 0 = 1

1 + 1 = 0   Ü col riporto di 1 alla cifra successiva ( quella immediatamente a  sinistra e che ha valore doppio)

 

              SOTTRAZIONE TRA NUMERI BINARI

 

Per la sottrazione si segue il metodo inverso a quello visto per la somma, cioè:

 

 Ú11

 Ú11

110101                    primo numero         (53 decimale)

  11001                    secondo numero    (25 decimale)

_______                

  11100                    risultato                     (28 decimale)

 

in pratica si richiama 1 dalla casella immediatamente a sinistra,  bit che e' più significativo e che vale il doppio (e' come se richiamassimo due bit contemporaneamente); useremo poi tali bit per calcolare il risultato. Ovviamente la casella che conteneva il bit richiamato ora "si sarà svuotata" e dovremo vederla come se contenesse 0. Infatti per le proprietà dell'algebra binaria abbiamo che:

 

1 – 1 = 0

0 – 0 = 0

1 – 0 = 1

0 – 1 = 1    col richiamo di 1 dalla casella precedente (da sinistra verso destra), bit che vale doppio

 

COMPARAZIONE FRA NUMERI BINARI

 

La comparazione (confronto) fra numeri binari è l'operazione che ci consente di stabilire se i numeri presi in esame sono uguali fra loro oppure uno e' maggiore o minore dell'altro. Quello che più interessa è poter fare un confronto senza dover calcolare a priori i valori decimali corrispondenti ai numeri espressi in forma binaria.

Allo scopo di formulare qualche criterio di comparazione,  consideriamo due numeri binari di quattro cifre (4 bit) ciascuno, ad esempio: 1110 e 110 1.

La loro somma è : 11011, ossia un numero che contiene una cifra in più rispetto a quella degli addendi. Poiché ovviamente la somma è maggiore di ciascun addendo si può dire che tra due numeri binari ha maggior valore quello che contiene più cifre (attenzione alla posizione della virgola).

 

I valori decimali corrispondenti a quelli binari considerati sono: 1110 = 14 e 1101 = 13.

Pertanto (sappiamo che 14 e' maggiore di 13), possiamo scrivere che 1110 > 1101. Per poter affermare che un numero e' maggiore o minore di un’altro, si procede nel seguente modo:

 

Si incolonnano i due numeri da confrontare (in binario) e partendo da sinistra verso destra, si guarda quale dei due presenta per primo lo zero ed in tal caso diremo che questo è il numero più piccolo.

 

1110     Ü   primo numero

1101     Ü  secondo numero

 

Diremo quindi che il secondo numero è il più piccolo perché presenta per primo lo zero (da sinistra verso destra).