01 ottobre 2015
INFORMATICA GENERALE
L’informatica studia l’informazione, che per essere elaborata da un computer ha bisogno di
essere codificata (trasformare un’informazione gestita da un uomo in una rappresentazione
digitale). codifica
1. Numeri
2. Caratteri 010011
3. Immagini
4. Video decodifica
5. Suoni
La decodifica è il processo inverso della codifica (quindi da una rappresentazione digitale
ad un’informazione gestibile da un uomo).
NB: tra la codifica e la decodifica di numeri e caratteri, non si perdono informazioni. Mentre
per immagini suoni e video si, perchè sono analogigi e non digitali.
Per la rappresentazione digitale si usa il codice binario (perchè il computer, per una scelta
economica, solitamente è bistabile: assume uno stato tra due possibili, acceso e spento).
0001100110
| |
spento acceso
ES1: l’hard disk è un bistabile di tipo magnetico (il magnete all’interno di esso punta o verso
l’alto o verso il basso, non esistono vie intermedie), il conduttore è un bistabile di tipo elettrico
(la corrente passa o non passa), e infine la fibra ottica è un bistabile di tipo ottico (la luce o
passa o non passa). Tutti questi bistabili sono rappresentabili con il codice binario.
La singola cifra, lo 0 o l’1, rappresenta un bit (Binary digIT). Combinando insieme i bit,
formando quindi delle sequenze, è possibile rappresentare oggetti diversi.
Il numero di oggetti rappresentabili (M) è uguale 2 dove n= numero di bit.
n
≥
M=2 (2 M)
n n
ES2: per rappresentare 20 amminoacidi, quanti bit devo utilizzare?
Log M=n
2
n= Log 20 = 4,3 (non potendo usare 4,3 bit si approssima al numero intero subito successivo
2
quindi 5 bit)
con 1 bit 2 2 oggetti
1
con 2 bit 2 4 oggetti
2
con 3 bit 2 8 oggetti
3
con 4 bit 2 16 oggetti
4
con 5 bit 2 32 oggetti -> devo usare 5 bit
5
8 bit = 1 byte
Con un byte codifico 2 oggetti: 256 entità diverse
8
Kilobyte KB 2 byte = 1024 byte (approssimabile a 1000 byte)
10
Megabyte MB 2 byte
20
Gigabyte GB 2 byte
30
Terabyte TB 2 byte
40
1. CODIFICA CARATTERI
Nelle tastiere del computer sono presenti: 52 lettere (26 maiuscole e 26 minuscole);
Segni di punteggiatura .,:; ≈ 220
Segni matematici + < % caratteri
Caratteri internazionali àèç
Altri segni @&
Ad ogni carattere corrisponde un byte.
Tra produttori esiste una convenzione stabilita arbitrariarmente per cui ad ogni carattere
corrisponde una determinata sequenza di bit.
Solitamente di usa ASCII (7 bit per ogni carattere), o ASCII esteso (8 bit per ogni carattere).
ES1: codifica “il Pò!” ☐
i l P ò !
01101001 00000000
per ogni carattere viene scelto arbitrariamente una sequenza di 8 bit, ed è sempre la stessa
per quel carattere in ogni computer.
Per decodificare divido l’intera stringa in pezzi da 8, e cerco per ogni sequenza di bit la sua
corrispondenza.
ES2: in ogni pagina di un libro vi sono 2000 caratteri, è codificata in ASCII esteso. Se ho un
hard disk da 400 GB, quanti volumi di 1000 pagine posso caricarci?
In una pagina ci sono 2000 caratteri => 2000 byte
In un volume ci sono mille pagine quindi 2000 x 1000 = 2 x 10 byte
6
In un hard disk da 400 GB ci sono 400 x 10 byte,
9
400 x 10 byte
9
Quindi il numero di libri caricabili è --------------------- = 2 x 10 libri
5
2 x 10 byte
6
ES3: ho 623 caratteri, quanti bit mi servono per codificarli?
≈
Log 623 10 bit
2
2. CODIFICA NUMERI
Quando compare un numero in un testo, esso viene tradotto usando ASCII esteso, ma con
ASCII non è possibile effettuare operazioni aritmetiche quindi è necessario un altro metodo:
la notazione posizionale
ES1: 365
3x100+6x10+5x1
3x10 +6x10 +5x10
2 1 0
La notazione posizionale può usare anche un’altra base che non sia 10:
Binaria (base 2) 0,1
Ottale (base 8) 0,1,2,3,4,5,6,7
Esadecimale (base 16) 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
Decimale (base 10) 0,1,2,3,4,5,6,7,8,9
La binaria è la più conveniente in quanto vengono usate solamente due cifre.
NB: 1001 (in base dieci) (in base due)
≠1001
10 2
Come passare da base 2 a base 10?
101001 = 1x2 +0x2 +1x2 +0x2 +0x2 +1x2 = 32+8+1 = 41
5 4 3 2 1 0
2
Come passare da base 8 a base 10?
2007 = 2x8 +0x8 +0x8 +7x8 = 1031
3 2 1 0
8
Come passare da base 16 a base 10?
B7FC = 11x16 +7x16 +15x16 +12x16
3 2 2 0
16
La conversione invece da base 2 a 10 avviene secondo un procedimento diverso
210 10
Divido il numero per due, tenendo conto del resto (dividendo per 2 può essere solo 1 o 0)
210 : 2 = 105 R=1
105 : 2 = 105 R=0
52 : 2 = 26 R=1
26 : 2 = 13 R=0
13 : 2 = 6 R=0
6 : 2 = 3 R=0
3 : 2 = 1 R=1
1 : 2 = 0 R=1
Leggendo il resto da sotto in su ottengo il codice binario quindi 210 = 11000101
10 2
Il numero di numeri rappresentabili è finito. Con n cifre a disposizione con base b, il più
grande numero rappresentabile è b -1.
n
Se vado oltre a ciò che posso rappresentare, si ha un tipo di errore detto overflow (andare
oltre ciò che posso rappresentare).
ES2: ho 4 cifre
base10: oggetti rappresentabili 10 -1 = 9999 (se vado oltre a questo numero: owerflow)
4
base 2: oggetti rappresentabili 2 -1 = 1111
4
base 16: oggetti rappresentabili 16 -1 = FFFF
4
base 8: oggetti rappresentabili 8 -1 = 7777
4
3. CODIFICA IMMAGINI
Le immagini sono analogiche e quindi non è possibile approssimarle con un numero finito di
numeri, di conseguenza si approssimerà.
Dalla codifica alla decodifica si perdono delle informazioni.
ES1: se ho triangolo nero su sfondo bianco, per codificarlo, si divide l’immagine in quadrati
(ogni quadratino rappresenta un pixel), e scrivo 0 nei quadrati dove prevale il bianco e 1
dove prevale il nero.
codifica
0 0 0 0 1 0 0 0 0 0 0 0
0 0 0 0 1 1 0 0 0 0 0 0
0 0 0 0 1 1 1 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
decodifica
Per diminuire l’errore è necessario aumentare la risoluzione dell’immagine e di conseguenza
la qualità (tanto è più alta la qualità tante meno informazioni si perdono).
Un’immagine viene compressa quando in due punti vicino ho lo stesso colore, e quindi ne
viene memorizzato solamente uno.
I formati di compressione più conosciuti sono jpeg e gif.
Con le immagini a colori invece funzioni in modo diverso: si fa sempre una griglia, ma invece
di mettere 0 per lo spento e 1 per l’acceso, si mette il colore tra Rosso Green Blu che prevale
(metodo RGB). Usando 8 bit/1 byte per ogni colore, si ottengo 256 rossi, 256 verdi e 256 blu,
quindi 2563 colori in tutto (nella natura esistono infiniti colori,ma quelli visibili all’occhio umano
sono circa 2563).
Più è fitta la griglia più la qualità è alta.
R 255 - G 0 - B 0 (rosso)
R 0 - G 255 - B 0 (verde)
R 255 - G 0 - B 255 (magenta)
Queste rappresentazioni, sia quella in bianco e nero che quella RGB sono dette BITMAP, ma
le immagini BITMAP occupano molto spazio, quindi solitamente si utilizzano altri sistemi.
ES2: la bandiera giapponese
200 pixels
100 Rosso 255-0-0
Bianco 255-255-255 (massima intensità di luce per
pixels tutti i canali)
20’000 pixels
Non è una maniera economica perché 2x10 pixels, per ogni pixels ho 3 byte => 6x10 byte =
4 4
60 KB (troppo).
Quindi si usa una rappresentazione geo