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