Premessa: gran parte degli argomenti di questa unità sono già stati tratta l'anno scorso nel corso di Tecnologie Informatiche (vedi qui).
In questa pagina compaiono molte formule. Alcune di queste non vengono visualizzate correttamente con Internet Explorer (vedi pagina iniziale):
In elettronica possiamo rappresentare le informazioni con segnali:
I segnali digitali sono discreti (tra due valori successivi non ce n'è uno intermedio) mentre quelli analogici sono continui (tra due valori ce ne sono infiniti intermedi). Le grandezze fisiche con cui abbiamo a che fare in natura sono generalmente analogiche mentre l'elettronica utilizza prevalentemente segnali digitali, in particolare segnali binari (vedi paragrafo A2.3).
Un segnale binario è un segnale digitale che può assumere solo due valori - in genere un valore alto e uno basso di tensione - rappresentati con i simboli 0
e 1
. L'unità elementare di informazione in grado di memorizzare il valore 0
o 1
è chiamata bit (binary digit o cifra binaria) ma più spesso si fa riferimento al byte che è una sequenza di 8 bit.
I dispositivi elettronici digitali rappresentano tutte le informazioni con segnali binari. In alcuni casi è facile rappresentare le informazioni con solo due valori (ad esempio quando l'informazione è del tipo vero/falso
); in tutti gli altri casi (numeri, caratteri, immagini, ecc.) occorre codificare le informazioni, cioè tradurle in una sequenza di 0
e 1
. Per cominciare vediamo come è possibile rappresentare un numero nel sistema binario.
I sistemi di numerazione più comunemente usati sono i sistemi:
L'uomo, che da sempre conta utilizzando le dita delle mani, utilizza il sistema di numerazione decimale. I sistemi digitali invece, dove si opera coi segnali binari, utilizzano il sistema binario. Si tratta di due modi diversi di rappresentare lo stesso numero. Per esempio il numero decimale 4 nel sistema di numerazione binario vale 100
(attenzione, non è il numero decimale 100! Per distinguerlo infatti si legge uno-zero-zero).
I numeri binari sono lunghi, difficili da ricordare e da usare per l'uomo (ad es. il numero 95 è '1011111' in binario); inoltre non è facile convertire un numero decimale in binario e viceversa. Al contrario è semplice fare le conversioni tra numeri espressi nel sistema binario, ottale e esadecimale. Per questo motivo si usano il sistema ottale e quello esadecimale per rappresentare i numeri binari utilizzando meno cifre (ad es. il numero 95 è 5f
in esadecimale).
Quando si usa più di un sistema di numerazione, per capire quale si sta usando si indica la base come pedice (cioè la si indica in basso a destra del numero). La base di un sistema di numerazione è il numero di valori che ogni cifra può assumere. Allora:
Quindi il numero 24(10) indica il numero 24 in base 10, cioè espresso nel sistema decimale, mentre e il numero 35(8) è espresso nel sistema ottale. Possiamo fare alcune osservazioni:
I sistemi di numerazione decimale, binario, ottale e esadecimale funzionano più o meno allo stesso modo: ogni numero è composto da più cifre; più una cifra è a sinistra nel numero, più è importante (sistema di numerazione posizionale). Nei prossimi paragrafi vediamo nel dettaglio cosa significa.
E' un sistema di numerazione posizionale a base 10. A seconda della posizione occupata una cifra indica le unità, le decine, le centinaia, ecc.
Facciamo un esempio col numero decimale 1953:
`1953_{(10)}=1*1000+9*100+5*10+3*1=1*10^3+9*10^2+5*10^1+3*10^0`
dove ogni cifra, procedendo da destra a sinistra, è moltiplicata per una potenza crescente di 10 partendo dall'esponente 0 (ricordiamo dalla matematica che ogni numero elevato all'esponente 1 è il numero stesso e ogni numero elevato a 0 vale 1).
Naturalmente nessuno di noi fa questi calcoli quando ragiona con i numeri decimali; siamo abituati a questo sistema di numerazione e interpretiamo correttamente i numeri senza fatica. I sistemi di numerazione binario, ottale e esadecimale funzionano allo stesso modo, ma questa volta bisogna fare dei conti per interpretare i numeri, cioè capire a cosa corrispondono (cioè quanto valgono) nel sistema decimale.
E' un sistema di numerazione posizionale a base 2, quindi le cifre che compongono un numero possono valere 0 o 1.
Facciamo un esempio col numero binario 10110:
`10110_{(2)}=1*2^4+0*2^3+1*2^2+1*2^1+0*2^0=1*16+0*8+1*4+1*2+1*0=22_{(10)}`
dove ogni cifra, procedendo da destra a sinistra, è moltiplicata per una potenza crescente di 2 partendo dall'esponente 0 (nell'espressione sono stati volutamente indicati anche i termini che valgono zero per evidenziare il peso di ogni cifra). Il calcolo mostra che il numero 10110
in base due corrisponde al numero 22 in base dieci (cioè vale 22 nel sistema decimale) ma questa volta per interpretare il numero binario bisogna fare dei conti.
Ogni cifra di un numero binario è un bit; quello più a sinistra è chiamato MSB (most significant bit, bit più significativo) e a quello più a destra LSB (least significant bit, bit meno significativo).
Per interpretare i numeri espressi nel sistema ottale e esadecimale bisogna procedere allo stesso modo.
E' un sistema di numerazione posizionale a base 8, quindi le cifre che compongono un numero possono valere 0, 1, 2, 3, 4, 5, 6, 7.
Facciamo un esempio col numero ottale 264:
`264_{(8)}=2*8^2+6*8^1+4*8^0=2*64+6*8+4*1=180_{(10)}`
dove ogni cifra, procedendo da destra a sinistra, è moltiplicata per una potenza crescente di 8 partendo dall'esponente 0. Il calcolo mostra che il numero 264
in base otto corrisponde al numero decimale 180.
E' un sistema di numerazione posizionale a base 16, quindi le cifre che compongono un numero possono valere 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f dove le lettere a, b, c, d, e, f corrispondono ai numeri decimali 10, 11, 12, 13, 14, 15.
Facciamo un esempio col numero esadecimale 12e:
`12e_{(16)}=1*16^2+2*16^1+14*16^0=1*256+2*16+14*1=302_{(10)}`
dove ogni cifra, procedendo da destra a sinistra, è moltiplicata per una potenza crescente di 16 partendo dall'esponente 0. Il calcolo mostra che il numero 12e
in base sedici corrisponde al numero decimale 302.
Fino a qui abbiamo visto come interpretare i numeri nei vari sistemi di numerazione, cioè come convertire numeri binari, ottale e esadecimali in numeri decimali. Naturalmente è possibile anche fare l'inverso.
Per convertire un numero decimale in binario bisogna dividere il numero decimale per 2, segnare il risultato e il resto e continuare dividendo ogni volta il risultato per 2 fino ad ottenere 0. Il numero binario corrisponde alla sequenza formata dai resti partendo dall'ultima divisione. Ad esempio per convertire il numero decimale 13 si procede così:
13:2 = 6 resto 1 6:2 = 3 resto 0 3:2 = 1 resto 1 1:2 = 0 resto 1 il numero decimale 13 in binario è 1101 (verifica: 1101 = = 1x8 + 1x4 + 0x2 + 1x1 = 13)
Abbiamo visto che il sistema ottale e quello esadecimale si usano per rappresentare i numeri binari in maniera più compatta, cioè utilizzando meno cifre. Questo è possibile perché le conversioni tra binario, ottale e esadecimale sono semplici e rapide.
Per convertire un numero binario in ottale bisogna suddividerlo da destra in gruppi di tre cifre e sostituire a ogni gruppo la cifra corrispondente in ottale (riempiendo eventuali spazi vuoti con degli zero).
Esempio: convertire il numero binario `1101_{(2)}` in ottale.
Suddividiamo il numero binario in gruppi di tre (aggiungiamo due zero per formare due gruppi di tre cifre) e scriviamo le cifre corrispondenti in ottale.
binario 001 101 ottale 1 5
Allora il numero binario `1101_{(2)}` corrisponde al numero ottale `15_{(8)}` (`13_{(10)}` in decimale).
Il procedimento appena visto funziona anche al contrario: per convertire un numero ottale in binario si sostituisce ad ogni cifra ottale il numero binario corrispondente usando tre bit.
Esempio: convertire il numero ottale `23_{(8)}` in binario.
Sostituendo a ogni cifra ottale quella corrispondente in binario otteniamo:
ottale 2 3 binario 010 011
Allora il numero ottale `23_{(8)}` corrisponde al numero binario `1001_{(2)}` (`19_{(10)}` in decimale).
La conversione tra binario e esadecimale funziona come quella dell'ottale ma utilizzando gruppi di quattro cifre binarie (4 bit) invece che tre.
Esempio: convertire il numero binario `100101_{(2)}` in esadecimale.
Suddividiamo il numero binario in gruppi di quattro (aggiungiamo due zero per formare dei gruppi di quattro cifre) e scriviamo le cifre corrispondenti in esadecimale.
binario 0010 0101 esadecimale 2 5
Allora il numero binario `100101_{(2)}` corrisponde al numero esadecimale `25_{(16)}` (`37_{(10)}` in decimale).
Esempio: convertire il numero esadecimale `2d_{(16)}` in binario.
Sostituendo a ogni cifra ottale quella corrispondente in binario otteniamo:
esadecimale 2 d binario 0010 1101
Allora il numero esadecimale `2d_{(16)}` corrisponde al numero binario `101101_{(2)}` (`45_{(10)}` in decimale).
Nel sistema binario ci sono due modi per rappresentare i numeri negativi:
Il sistema più usato è quello del complemento a due perché più pratico da utilizzare nei circuiti elettronici digitali. Per capire come funziona diamo le definizioni di campo, complemento a uno e complemento a due.
Nei sistemi digitali il campo è il numero di bit utilizzati per rappresentare un numero binario. Il complemento a uno di un numero binario si ottiene scambiando gli 1 con gli 0. Ad esempio con campo 4 il complemento a uno del numero `0101_{(2)}` è `1010_{(2)}`. Il complemento a due di un numero binario si ottiene sommando 1 al complemento a uno del numero, cioè si scambiano gli 1 con gli 0 e poi si somma 1. Ad esempio il complemento a due del numero `0101_{(2)}` è `1011_{(2)}` (cioè `1010_{(2)} + 1_{(2)}`).
Ad esempio allora, usando il codice binario con campo 4, il numero decimale -2 vale:
Esistono altri sistemi di codifica dei numeri; quelli più usati in elettronica sono il codice BCD e il codice Gray.
Nel codice BCD (binary coded digit) ogni cifra di un numero decimale viene rappresentata col corrispondente numero binario espresso con quattro bit. Questo codice viene impiegato perlopiù nei display LCD o nei circuiti aritmetici. Non bisogna confondere il codice BCD con il sistema di numerazione binario; ad esempio il numero decimale 127(10) vale 1111111(2) in binario e 0001 0010 0111
nel codice BCD.
Il codice Gray è un codice binario che ha la particolarità che due numeri successivi differiscono per una sola cifra. Questo permette di evitare errori di lettura ad esempio nei sensori di posizione (ad esempio l'encoder). Nella tabella seguente è possibile confrontare il codice Gray con il sistema di numerazione binario con campo 3.
decimale | binario | codice Gray |
---|---|---|
0 | 000 | 000 |
1 | 001 | 001 |
2 | 010 | 011 |
3 | 011 | 010 |
4 | 100 | 110 |
5 | 101 | 111 |
6 | 110 | 101 |
7 | 111 | 100 |
I caratteri alfanumerici vengono codificati usando:
Nei dispositivi digitali le e immagini vengono rappresentate come un mosaico con tante tessere uguali tra loro che possono assumere un determinato colori. Queste tessere sono i pixel e più ce ne sono e maggiore sarà la risoluzione (cioè la definizione) dell'immagine. Solitamente ogni pixel può assumere un colore ottenuto miscelando diverse sfumature dei colori primari rosso, verde e blu. Se ognuna di queste sfumature è rappresentata con un codice a 8 bit è possibile ottenere 16 milioni di colori diversi per ogni pixel (3 x 8bit = 24 bit; 224=16,7 milioni).
La risoluzione di un'immagine è indicata specificando il prodotto tra il numero di pixel orizzontali e verticali. Ad esempio le immagini di una TV con un display HD hanno una risoluzione di 1920×1080 pixel mentre quelle prodotte dalle fotocamere digitali hanno risoluzioni ancora maggiori (oggi da 5 megapixel in su). E' facile capire che le immagini ad alta risoluzione occupano una grande quantità di memoria.
Esistono diverse tecniche di codifica digitale delle immagini ma a grandi linee possiamo distinguere tra:
Il suono è per sua natura una grandezza analogica. Per digitalizzare, cioè convertire in digitale, un suono occorre:
Ad esempio l'audio digitale di un CD è campionato a 44kHz e quantizzato a 16bit, cioè il suono originale è stato campionato memorizzando 44 mila volte al secondo un valore tra 0 e 65536 (216).
Anche nel caso dell'audio è possibile utilizzare codifiche lossless, come quella dei CD, o lossy, come l'MP3.
La codifica video è ancora più complicata di quelle viste fin qui. Esistono diversi formati e diverse tecniche di codifica ma in tutte i fattori più importanti da considerare sono:
Torna all'indice.