informatica generale e basi di dati per archivi ... · notazione anglosassone. codifica dei numeri...

42
INFORMATICA GENERALE E BASI DI DATI PER ARCHIVI AUDIOVISIVI (PRIMO MODULO) Claudio Piciarelli A.A. 2013/2014

Upload: truongthuy

Post on 17-Feb-2019

222 views

Category:

Documents


0 download

TRANSCRIPT

INFORMATICA GENERALE E BASI DI DATI PER ARCHIVI AUDIOVISIVI (PRIMO MODULO)

Claudio Piciarelli

A.A. 2013/2014

La codifica dell’informazione

Lezione 1

Cos’è l’informatica?

� Dipende dai punti di vista…

� Per l’utente medio è l’uso quotidiano del computer

� Per l’ingegnere è una tecnologia

� Per l’informatico è una scienza

Cos’è l’informatica?

� Informatica = INFORmazione autoMATICA

� L’informatica è quella scienza che studia come rappresentare, organizzare, manipolare l’informazione

� Non a caso il corso di laurea in informatica una volta si chiamava «scienze dell’informazione»!

Dialogo realmente avvenuto:- In cosa ti sei laureato?

- In scienze dell’informazione

- Ah, allora fai il giornalista!

Dialogo realmente avvenuto:- In cosa ti sei laureato?

- In scienze dell’informazione

- Ah, allora fai il giornalista!

Cos’è l’informazione?

� L’informazione è uno scambio di conoscenza

� Nell’ambito della Teoria dell’Informazione se ne dà una definizione probabilistica: un evento porta tanta informazione se è poco probabile

«In questo momento al Polo Nord fa freddo»

Probabilità molto alta poca informazione

«In questo momento al Polo Nord ci sono esattamente -43,65 gradi»

Probabilità bassa molta informazione

«In questo momento al Polo Nord fa freddo»

Probabilità molto alta poca informazione

«In questo momento al Polo Nord ci sono esattamente -43,65 gradi»

Probabilità bassa molta informazione

Codifica dell’informazione

� Codificare l’informazione significa memorizzare un concetto astratto (l’informazione) su un supporto fisico (un pezzo di carta, la memoria di un computer…)

Il numero 8

8

Informazione

Supporto fisico

cod

ific

ad

eco

difica

Codifica dell’informazione

� Duplice interpretazione

� Due macchie di inchiostro nero di forma circolare su un pezzo di carta (supporto fisico)

� Il numero 8 (informazione codificata nel supporto fisico)

8

Codifica dell’informazione

� La stessa informazione può essere codificata in modi diversi

Il numero 8

8

Informazione

Supporto fisico

VIII

Codifica dell’informazione

� E a volte lo stesso supporto può essere decodificato in modi diversi

123,401

Informazione

Supporto fisico

Il numero centoventitre virgola quattro zero uno, nella

notazione italiana

Il numero centoventitre virgola quattro zero uno, nella

notazione italiana

Il numero centoventitremilaquattrocento uno, nella notazione anglosassone

Il numero centoventitremilaquattrocento uno, nella notazione anglosassone

Codifica dei numeri decimali

� Occorre innanzitutto un insieme di simboli. Questo insieme è genericamente detto alfabeto

A = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }

� Serve inoltre un’opportuna regola di codifica, nel nostro caso la notazione posizionale: l’ultima cifra a destra rappresenta le unità e pesa 1, la penultima rappresenta le decine e pesa 10, la terzultima pesa 10�, la quartultima 10�, ecc.

Notazione posizionale

427427

Quattro centinaia, due decine e sette unità. Ovvero:

4 ∗ 10� + 2 ∗ 10 + 7 ∗ 10�

Più in generale, dato un numero decimale di n cifre �� ��� … �il suo valore è

�� ∗ 10�� + ��� ∗ 10

��� +…+ ∗ 10 + � ∗ 10

(Nota: ricordatevi che qualsiasi numero diverso da 0, se elevato alla 0, dà 1)

Numeri in base decimale

� Con queste regole è facile contare in decimale.

� 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

� 10, 11, 12, 13, 14, 15, 16, 17, 18, 19

� 20, 21, 22, 23, 24, 25, 26, 27, 28, 29

(nota: in questa lezione ci limitiamo a considerare i numeri naturali)

Numeri in altre basi

� Cosa succede se cambiamo l’alfabeto? Ad esempio se usassimo solo questi simboli:

A = { 0, 1, 2, 3, 4, 5, 6, 7 }

Si parla in questo caso di numeri in base ottale (la «base» è il numero di simboli nell’alfabeto).

Usando la solita notazione posizionale, possiamo contare in base ottale!

Numeri in base ottale

� 0, 1, 2, 3, 4, 5, 6, 7,

� 10, 11, 12, 13, 14, 15, 16, 17,

� 20, 21, 22, 23, 24, 25, 26, 27,

0 1 2 3 4 5 6 7

8 9 10 11 12 13 14 15

16 17 18 19 20 21 22 23

Quelli in nero sono i numeri in base ottale, quelli in rosso in base decimale. Per evitare confusione, conviene scrivere i numeri indicando esplicitamente la base, come ad es.

11 � = 9 �

(leggi: uno uno in base 8 equivale a nove in base 10)

numero

base

Conversione da ottale a decimale

� Si usa la solita regola della notazione posizionale, avendo cura di usare la base corretta!

� 147 � = 1 ∗ 8� + 4 ∗ 8 + 7

= 64 + 32 + 7

= 103 �

Formula aggiornata: dato un numero di n cifre in base B �� ��� … �il suo valore in base decimale è:

�� ∗ ��� + ��� ∗ �

��� +…+ ∗ � + � ∗ �

Formula aggiornata: dato un numero di n cifre in base B �� ��� … �il suo valore in base decimale è:

�� ∗ ��� + ��� ∗ �

��� +…+ ∗ � + � ∗ �

Base esadecimale

� A = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F }

� 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F

� 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 1A, 1B, 1C, 1D, 1E, 1F

� 20, 21, 22, 23, 24, 25, 26, 27, 28, 19, 2A, 2B, 2C, 2D, 2E, 2F

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47

Conversione da esadecimale a dec.

� Sappiamo già che � � = 10 �, � � =

11 �, … , � � = 15 �

� Si usa la solita regola della notazione posizionale

� �8�0 � = � ∗ 16� + 8 ∗ 16� + � ∗ 16 + 0

= 16 ∗ 4096 + 8 ∗ 256 + 11 ∗ 16

= 67760 �

Base boh

� A = { �, �, � }

� (in realtà è una banalissima base ternaria)

� Quanto vale il numero � � � �?

Soluzione: Se � = 0, � = 1, � = 2, allora

� � � � = 1 ∗ 3� + 0 ∗ 3� + 2 ∗ 3 + 2 ∗ 3� = 27 + 6 + 2 = 35 �

Soluzione: Se � = 0, � = 1, � = 2, allora

� � � � = 1 ∗ 3� + 0 ∗ 3� + 2 ∗ 3 + 2 ∗ 3� = 27 + 6 + 2 = 35 �

Conversioni dalla base decimale

� Abbiamo visto come si può convertire facilmente un numero da una base arbitraria B ad una decimale

� Come è possibile fare l’inverso? � Divido il numero decimale per B

� Il RESTO della divisione è l’ultima cifra

� Divido il QUOZIENTE per B

� Il RESTO della divisione è la penultima cifra

� Divido il QUOZIENTE per B

� Il RESTO della divisione è la terzultima cifra

� … (ripeto, finché il quoziente non è zero)

Conversioni dalla base decimale

� Esempio: convertire 570 in base ottale

� 570 / 8 = 71 col resto di 2

� 71 / 8 = 8 col resto di 7

� 8 / 8 = 1 col resto di 0

� 1 / 8 = 0 col resto di 1

� Per cui 570 � = 1072 �

Quanti numeri?

� Quanti numeri posso rappresentare in base B usando al massimo k cifre?

� Risposta: �� numeri (da 0 a �� − 1)

� Esempio: se B=10 e k=3, posso rappresentare 10� = 1000 numeri diversi, quelli da 0 a 999

� Altro esempio: B=16, k=2, posso rappresentare 16� = 256 numeri diversi, da 0 a �� �

La base binaria

� E’ la base più importante dell’informatica

� A = { 0, 1 }

� Contiamo in base binaria:

� 0, 1, 10, 11, 100, 101, 110, 111, 1000, 1001, …

� Conversioni:

� 11001 � = 1 ∗ 2 + 1 ∗ 2� + 1 = 25 �

Conversione binario - decimale

� Ogni cifra corrisponde ad una potenza di due, partendo da 2� per la cifra più a destra

� Basta sommare le potenze in corrispondenza di un 1 nel numero binario

… 2� = 256 2! = 128 2� = 64 2" = 32 2 = 16 2� = 8 2� = 4 2 = 2 2� = 1

1 0 1 1 0 1 0 0 1

256 + 64 + 32 + 8 + 1

Conversione decimale - binario

� Si usa il solito metodo

� Esempio: convertire 81 in base binaria

� 81 / 2 = 40 col resto di 1

� 40 / 2 = 20 col resto di 0

� 20 / 2 = 10 col resto di 0

� 10 / 2 = 5 col resto di 0

� 5 / 2 = 2 col resto di 1

� 2 / 2 = 1 col resto di 0

� 1 / 2 = 0 col resto di 1

Quindi81 � = 1010001 �

Quindi81 � = 1010001 �

La base binaria

� Ora potete finalmente capire questa battuta da informatici:

Al mondo ci sono solo 10 categorie di

persone: quelli che conoscono la notazione

binaria, e quelli che non la conoscono.

Al mondo ci sono solo 10 categorie di

persone: quelli che conoscono la notazione

binaria, e quelli che non la conoscono.

La base binaria

� Perché è così importante? L’unità minima di informazione in un computer è il bit, che può assumere solo due valori: 0 e 1.

� Quindi qualsiasi dato, qualsiasi programma, qualsiasi contenuto multimediale, ecc. memorizzato in un computer non è altro che una lunga sequenza di 0 e 1, ovvero un numero binario!

Bit e byte

� Un byte è un insieme di 8 bit. Quanti valori diversi può contenere?

� Risposta: 2� = 256

� Da 0 a 11111111 �

Ovvero 255 �

Multipli del bit

� 8 bit = 1 byte

� 2� byte = 1 KB (kilobyte) (1024 byte)

� 2�� byte = 1 MB (megabyte) (1024 KB)

� 2�� byte = 1 GB (gigabyte) (1024 MB)

� 2 � byte = 1 TB (terabyte) (1024 GB)

� 2"� byte = 1 PB (petabyte) (1024 TB)

� 2�� byte = 1 EB (exabyte) (1024 PB)

� 2!� byte = 1 ZB (zettabyte) (1024 EB)

� 2�� byte = 1 YB (yottabyte) (1024 ZB)

(non del tutto esatto, stando al sistema metrico internazionale. Ma si tratta di cavilli…)

Somme tra numeri binari

� Come per ogni altra base

� 0+0 = 0, 0+1 = 1, 1+0 = 1

� 1+1 = 0 col riporto di 1

001101010001101 +

010110100010011 =

100011110100000

1 1 1 1 1 1 1 1

Rappresentazione dei numeri negativi

� Come posso codificare anche i numeri negativi?

� Due possibili approcci:

� Modulo e segno

� Complemento a due

Modulo e segno

� Facciamo l’esempio di un byte (8 bit)

� Il bit più significativo (quello più a sinistra) codifica il segno: 0 significa +, 1 significa –

� Gli altri 7 bit codificano il modulo del numero

� Esempio:

� 00011011 = 27

� 10011011 = -27

Modulo e segno

� Intervallo dei numeri rappresentabili con modulo e segno: da 11111111 a 01111111 (da -127 a +127)

� Problema: doppia rappresentazione

dello zero!

� 10000000 = - 0

� 00000000 = +0

� Problema: le somme non funzionano…

Binario Decimale

00000000 0

00000001 1

00000010 2

01111110 126

01111111 127

10000000 -0

10000001 -1

10000010 -2

11111101 -125

11111110 -126

11111111 -127

Complemento a due

� Per rappresentare il numero –n…

� Si parte dalla rappresentazione binaria di +n

� Si fa il complemento a uno (ogni zero diventa uno, e ogni uno diventa zero)

� Si somma 1. Esempio su un byte:

� 27 � = 000011011 �

complemento: 111100100

Sommo 1: 111100101 Questa è la rappresentazione di -27 in complemento a dueQuesta è la rappresentazione di -27 in complemento a due

Complemento a due

Binario Decimale

00000000 0

00000001 1

00000010 2

01111110 126

01111111 127

10000000 -128

10000001 -127

10000010 -126

11111101 -3

11111110 -2

11111111 -1

� Tutti i numeri negativi si riconoscono immediatamente perché iniziano con un 1

� Nessuna doppia rappresentazione dello 0

� Intervallo: da -128 a +127

� Grande vantaggio: le somme funzionano anche con i numeri negativi!

� Attenzione a non calcolare 127+1… otterreste un overflow

Somme in complemento a due

� -15 + 7

11110001 +

00000111 =

11111000

� -15 + 7

11110001 +

00000111 =

11111000

� Per trasformare un numero in complemento a due in decimale, si fa nuovamente il complemento a uno e si somma 1. Si converte il numero risultante in decimale e si cambia di segno.

� Quanto vale 11111000 ?

� 00000111 (complemento a uno)

� 00001000 (sommo 1)

� Il risultato è -8

Ambiguità

� Quanto vale in decimale il numero 11111111 �?

� Risposta: dipende

� Se è un numero senza segno, vale 255 �

� Se è un numero in complemento a due, vale −1 �

� Questa ambiguità è una delle principali cause di disastri informatici! (assieme agli overflow visti prima)

Codifica di dati non numerici

� Se per un computer tutto è un numero binario, come posso codificare dati non numerici?

� Divido i dati da codificare in due gruppi, che codifico rispettivamente con uno 0 e con un 1

� Ripeto finché non ho definito una codifica per ciascun elemento.

Esempio

� Codificare i giorni della settimana

Codifica dei dati non numerici

� Quante cifre binarie mi servono?

� Sappiamo già che con k cifre possiamo

rappresentare 2� numeri binari differenti

� Quindi, se il numero di oggetti da codificare è n, dobbiamo avere che

2� ≥ $

� Ovvero% ≥ log� $

Codifica alfanumerica

� Per codificare i singoli caratteri di un testo scritto occorrono almeno

� Tutte le lettere dell’alfabeto minuscole

� Tutte le lettere dell’alfabeto maiuscole

� Le 10 cifre decimali

� I segni di interpunzione

� In totale circa 100 elementi. Servono quindi almeno 7 bit per carattere (2! = 128)

Codifica alfanumerica

� Codifica ASCII – 7 bit (128 caratteri)

� Codifica ASCII estesa – 8 bit (256 caratteri)� Usata per rappresentare caratteri non presenti nella

codifica ASCII standard, come le lettere accentate. Purtroppo la codifica estesa differisce da Paese a Paese!

� Codifica UNICODE – 21 bit (circa 1 milione di caratteri). Sembra tanto, ma UNICODE punta a codificare tutti i simboli di tutte le lingue. Si pensi ad esempio al cinese…

Tabella ASCII