Rappresentazione delle informazioni

Tecnologie per il web e lo sviluppo multimediale
Rappresentazione delle informazioni
Luca Pulina
Corso di Laurea in Scienze della Comunicazione
Università degli Studi di Sassari
A.A. 2015/2016
Luca Pulina (UNISS)
I Dati
1 / 36
Informazione
Entità che può contribuire ad una riduzione dell’incertezza.
Le informazioni non sono entità fisiche; esse possono essere
I
I
I
create (ad esempio scrivendo qualcosa su un foglio di carta)
trasmesse (ad esempio inviando via fax il foglio)
distrutte (distruggendo il foglio)
La conservazione o la trasmissione delle informazioni implica
l’esistenza un supporto fisico adeguato (il foglio di carta)
I calcolatori forniscono supporti di memorizzazione che possono
assumere solo due stati: la quantità di informazione memorizzata su
un singolo dispositivo a due stati è chamata bit (binary digit).
Luca Pulina (UNISS)
I Dati
2 / 36
Bit
I bit sono gli elementi usati nei computer moderni per codificare le
informazioni.
I
I
I
Si presentano come configurazioni di zeri e uni.
Una configurazione di 8 bit è detta byte.
Un insieme di più byte è detto word.
I bit sono dei simboli (non solo valori numerici) il cui significato
dipende dall’applicazione in uso
I
I
I
I
I
Valori numerici
Caratteri alfabetici
Segni di punteggiatura
Immagini
...
Per essere manipolata da un calcolatore ogni tipo di informazione deve
essere codificata in forma binaria.
Luca Pulina (UNISS)
I Dati
3 / 36
Outline
1
Algebra Booleana
2
Rappresentazione delle informazioni
Luca Pulina (UNISS)
I Dati
4 / 36
Outline
1
Algebra Booleana
2
Rappresentazione delle informazioni
Luca Pulina (UNISS)
I Dati
5 / 36
Algebra booleana
Algebra booleana: base dei calcolatori moderni
I
I
George Boole (1815-1864): fondamenti dell’algebra booleana
Shannon (1938): prima idea di applicare l’algebra booleana ai
circuiti
Componenti:
I
I
Variabili logiche
Operatori
Le funzioni logiche, ottenute applicando gli operatori alle variabili,
possono essere descritte tramite tavole di verità
Luca Pulina (UNISS)
I Dati
6 / 36
Operazioni booleane
Variabili logiche
Una variabile logica x può avere solo due stati:
x = 0 ⇒ valore FALSO
x = 1 ⇒ valore VERO
Luca Pulina (UNISS)
I Dati
7 / 36
Operazioni booleane
Variabili logiche
Una variabile logica x può avere solo due stati:
x = 0 ⇒ valore FALSO
x = 1 ⇒ valore VERO
Operatori
Tre operatori fondamentali
AND
OR
NOT
Luca Pulina (UNISS)
I Dati
7 / 36
Operazioni booleane – AND
Riflettere la verità o la falsità di un’asserzione formata unendo tramite
la congiunzione “e” due asserzioni più semplici.
a
0
0
1
1
b
0
1
0
1
a AND b
0
0
0
1
Il sole è giallo AND il mare è blu.
Altri simboli: ∧, ·
Luca Pulina (UNISS)
I Dati
8 / 36
Operazioni booleane – OR
Le asserzioni di questo tipo sono vere quando almeno una delle due
componenti è vera.
a
0
0
1
1
b
0
1
0
1
a OR b
0
1
1
1
Il sole è giallo OR il mare è rosa.
Altri simboli: ∨, +
Luca Pulina (UNISS)
I Dati
9 / 36
Operazioni booleane – NOT
La sua uscita è l’opposto dell’ingresso.
A differenza delle altre operazioni, NOT ha un solo ingresso.
a
0
1
NOT a
1
0
Altri simboli: ¬,
Luca Pulina (UNISS)
I Dati
10 / 36
Proprietà
Proprietà dell’algebra booleana (valgono anche le relazioni duali)
Commutativa: A + B = B + A
Associativa: A · (B · C) = (A · B) · C
Assorbimento o inclusione: A · (A + B) = A
Luca Pulina (UNISS)
I Dati
11 / 36
Proprietà
Proprietà dell’algebra booleana (valgono anche le relazioni duali)
Commutativa: A + B = B + A
Associativa: A · (B · C) = (A · B) · C
Assorbimento o inclusione: A · (A + B) = A
Proprietà supplementari
Distributiva: A · (B + C) = A · B + A · C (vale la duale)
Elemento neutro: 0 + A = A, 1 · A = A (duale)
Complementare: A · A = 0, A + A = 1 (duale)
Luca Pulina (UNISS)
I Dati
11 / 36
Leggi di De Morgan
A+B =A·B
Luca Pulina (UNISS)
I Dati
12 / 36
Leggi di De Morgan
A+B =A·B
A·B =A+B
Luca Pulina (UNISS)
I Dati
12 / 36
Porte logiche
AND
OR
NOT
Porta logica (gate): dispositivo che, dati i valori di ingresso,
produce l’uscita di un’operazione booleana.
Nei computer odierni sono realizzate con circuiti elettronici in cui 0
e 1 sono rappresentati come livelli di tensione.
Le porte logiche rappresentano gli elementi base dei computer.
Luca Pulina (UNISS)
I Dati
13 / 36
Outline
1
Algebra Booleana
2
Rappresentazione delle informazioni
Luca Pulina (UNISS)
I Dati
14 / 36
Notazione binaria – I
Metodo per la rappresentazione dei valori numerici usando solo le cifre
0 e 1, anziché le cifre 0, . . . , 9 come nel sistema decimale.
Immaginiamo un contachilometri per auto in binario (a 4 bit):
0000
0001
0010
0011
0100
Luca Pulina (UNISS)
0101
0110
0111
1000
I Dati
15 / 36
Notazione binaria – II
Nel sistema decimale, ogni posizione è associata ad una quantità.
Ad esempio, considerando 375
I
I
I
I
il 5 è nella posizione delle unità
il 7 è nella posizione delle decine
il 3 è nella posizione delle centinaia
Si può esprimere 375 come (3 × 100) + (7 × 10) + (5 × 1)
Luca Pulina (UNISS)
I Dati
16 / 36
Notazione binaria – III
Anche nella notazione binaria la posizione di ciascuna cifra è
associata ad una quantità.
La cifra all’estrema destra è associata alla quantità uno (20 ).
La posizione successiva a sinistra è associata a due (21 ).
La posizione successiva a sinistra è associata a quattro (22 ).
La posizione successiva a sinistra è associata a otto (23 ).
...
Luca Pulina (UNISS)
I Dati
17 / 36
Conversione da rappresentazione binaria a decimale
Stessa procedura del sistema in base 10:
Moltiplicare il valore di ogni cifra per la quantità associata alla sua posizione.
Somma dei risultati.
Luca Pulina (UNISS)
I Dati
18 / 36
Conversione da rappresentazione decimale a binaria
Algoritmo per trovare la rappresentazione binaria di un intero
positivo
1
Dividere il valore per due e memorizzare il resto.
2
Finché il quoziente ottenuto non è zero, continuare a dividere
l’ultimo quoziente per due e memorizzare il resto.
3
Ottenuto un quoziente zero, la rappresentazione binaria del valore
originale consiste nei resti elencati da destra a sinistra, nell’ordine
in cui sono stati memorizzati.
Luca Pulina (UNISS)
I Dati
19 / 36
Conversione da rappresentazione decimale a binaria
– Esempio
Applicazione dell’algoritmo al valore 13.
Luca Pulina (UNISS)
I Dati
20 / 36
Somma di numeri binari
“Tabelline” dell’addizione binaria.
0+
0
0
1+
0
1
0+
1
1
1+
1
10
Esempio
00111010+
00011011
01010101
Luca Pulina (UNISS)
I Dati
(58)
(27)
(85)
21 / 36
Notazione in complemento a due – I
Sistema più diffuso per la rappresentazione dei numeri interi all’interno
dei computer.
Usa un numero fisso di bit per rappresentare ogni valore del sistema.
Nei sistemi moderni è tipicamente 32 bit.
Negli esempi successivi useremo configurazioni più brevi...
011
010
001
000
111
110
101
100
Luca Pulina (UNISS)
3
2
1
0
-1
-2
-3
-4
I Dati
22 / 36
Notazione in complemento a due – II
Codifica dei numeri positivi
I
I
Si parte da una stringa di 0 di lunghezza “opportuna”.
Si conta in binario fino a raggiungere la configurazione composta
da un singolo 0 seguito da tutti 1.
Codifica dei numeri negativi
I
I
Si inizia con una stringa di 1 di lunghezza opportuna.
Si conta in binario all’indietro fino alla configurazione composta da
un singolo 1 seguito da tutti 0.
Il bit all’estrema sinistra indica il segno
È chiamato anche bit di segno
I valori negativi hanno bit di segno pari a 1.
I valori positivi hanno bit di segno pari a 0.
Luca Pulina (UNISS)
I Dati
23 / 36
Conversione decimale di un numero in complemento a
due
Se la configurazione di bit rappresenta un numero
positivo: la stessa usata prima.
negativo:
I
I
Si esegue il complemento: si applica l’operatore NOT alla
configurazione.
Si somma il valore 1 al risultato convertito prima dell’aggiunta del
segno.
Esempio
Convertire la configurazione 1100
Il bit di segno è 1 → numero negativo.
Il complemento è 0011
Il valore decimale corrisponde a 3.
Si aggiunge uno, ottenendo il valore 4.
Era un numero negativo, quindi il risultato finale è -4.
Luca Pulina (UNISS)
I Dati
24 / 36
Somma in complemento a due
Si applica lo stesso algoritmo usato per la somma binaria con la
differenza che tutte le configurazioni di bit, compreso il risultato, hanno
la stessa lunghezza.
3+
2
-3+
-2
7+
-5
0011+
0010
0101
1101+
1110
1011
0111+
1011
0010
5
-5
2
L’eventuale bit extra generato sulla sinistra della risposta deve essere
troncato
Sommando 0111 e 1011 otteniamo 0010.
Luca Pulina (UNISS)
I Dati
25 / 36
Il problema dell’overflow – I
Si considerino configurazioni di 4 bit.
Si voglia eseguire l’operazione 5+4.
5+
4
0101+
0100
1001
-7
Il risultato corretto sarebbe 9.
Il risultato dell’operazione in complemento a due è -7!.
Non è possibile sperare di ottenere la risposta corretta
Luca Pulina (UNISS)
I Dati
26 / 36
Il problema dell’overflow – II
In qualunque sistema di complemento a due la dimensione dei
valori che può essere rappresentata ha un limite preciso.
Un tipo di errore come quello dell’esempio precedente è chiamato
overflow.
Il problema si presenta quando il valore che deve essere
rappresentato è esterno agli intervalli che possono essere
rappresentati.
Luca Pulina (UNISS)
I Dati
27 / 36
Rappresentazione del testo – Codice ASCII
Le informazioni testuali sono rappresentate tramite un codice
I
ad ogni simbolo è assegnata una configurazione univoca di bit.
Il testo viene presentato come una stringa di bit.
Codice ASCII (American Standard Code for Information
Interchange): usa 8 bit per rappresentare
I
I
I
I
Lettere maiuscole e minuscole dell’alfabeto inglese
Segni di interpunzione
Cifre da 0 a 9
Altri caratteri di controllo
Luca Pulina (UNISS)
I Dati
28 / 36
Caratteri ASCII
Luca Pulina (UNISS)
I Dati
29 / 36
Codice ASCII – Esempio
La seguente configurazione di bit
01000011 01101001 01100001 01101111
rappresenta la parola Ciao
C
01000011
Luca Pulina (UNISS)
i
01101001
a
01100001
I Dati
o
01101111
30 / 36
Rappresentazione del testo – Altri codici
ASCII fu pensato per la lingua inglese ⇒ applicazione limitata.
Codifica standard più generale: Unicode
I
I
Usa una configurazione a 16 bit.
Può rappresentare anche lingue quali il cinese, il giapponese e
l’ebraico.
Altra codifica standard: ISO (usa 32 bit).
Luca Pulina (UNISS)
I Dati
31 / 36
Codici e file
Un file costituito da una sequenza di simboli codificati in ASCII o
Unicode è detto file di testo.
È importante distinguere tra
I
File di testo semplici
I
File di testo elaborati
F
F
Vengono elaborati da editor di testo (ad esempio, notepad).
Vengono elaborati da word processor (ad esempio, Word).
Entrambi sono costituiti da testo.
Un file di testo semplice contiene una codifica standard carattere
per carattere.
Un file prodotto con un word processor può contenere codici
proprietari (diversi da ASCII o Unicode).
Luca Pulina (UNISS)
I Dati
32 / 36
Rappresentazione dei valori numerici
Per memorizzare valori esclusivamente numerici, i codici tipo
ASCII non sono una soluzione efficiente
I
I
I
Assumiamo di voler memorizzare il valore 25
In ASCII avremo bisogno di 16 bit (sono due simboli)
In più, il valore più grande memorizzabile sarebbe 99.
Usando la notazione binaria, usando 16 bit si può memorizzare
un numero da 0 a 65535!
I
I
Tale notazione (o sue varianti) viene usata per archiviare dati
numerici codificati.
La notazione binaria è un modo per rappresentare i valori numerici
utilizzando solo le cifre 0 e 1.
Luca Pulina (UNISS)
I Dati
33 / 36
Rappresentazione delle immagini
Tecniche bitmap (“mappa di bit”)
Immagine trattata come matrice di punti.
Ogni punto è chiamato picture element (pixel).
Un’immagine in bianco e nero è codificata come una stringa di bit
I
I
Rappresentano la riga di pixel nell’immagine.
Ogni bit sarà 1 o 0 a seconda che il pixel sia nero o bianco.
È l’approccio usato dagli apparecchi fax.
Luca Pulina (UNISS)
I Dati
34 / 36
Tecniche bitmap
Il termine bitmap è stato esteso fino a comprendere tutti i sistemi per
cui le immagini sono codificate pixel per pixel:
Fotografie in bianco e nero: ogni pixel è formato da 8 bit (per
rappresentare le sfumature di grigio).
Immagini a colori: ogni pixel è rappresentato da una
combinazione di bit che ne indica l’aspetto.
Luca Pulina (UNISS)
I Dati
35 / 36
Codifica RGB
Ogni pixel è rappresentato come combinazione di tre colori: Red
(rosso), Green (verde), Blue (blu), che corrispondono ai tre colori
primari.
Si usa un byte per rappresentare l’intensità di ciascun
componente.
3 byte di memoria per rappresentare un singolo pixel.
Luca Pulina (UNISS)
I Dati
36 / 36