L'informazione e la sua codifica Corso di Informatica CdL: Chimica Claudia d'amato claudia.damato@di.uniba.it
Informatica e telecomunicazione Cos è l informatica informatica? lo studio sistematico degli algoritmi che descrivono e trasformano l informazione: la loro teoria, analisi, progetto, efficienza, realizzazione e applicazione [ACM Association for Computing Machinery] la scienza della rappresentazione e dell elaborazione dell informazione Cos è la telecomunicazione? la trasmissione rapida a distanza dell informazione Attenzione: Non si parla di tecnologia dei calcolatori! Si attribuisce ruolo centrale al concetto di informazione! Informatica - Claudia d'amato 2
Informazione e supporto L informazione è portata da, o trasmessa su, o memorizzata in, o contenuta in qualcosa; questo qualcosa qualcosa però non è l informazione stessa. Ogni supporto ha le sue caratteristiche in quanto mezzo su cui può essere scritta dell informazione. Informatica - Claudia d'amato 3
Informazione e supporti /2 La stessa informazione può essere scritta su supporti differenti. 10 11 10 9 8 7 6 Informatica - Claudia d'amato 4
Informazione e supporto /4 Distinguere informazione e supporto fisico è distinguere tra entità logiche ed entità fisiche : l informazione richiede un supporto fisico, ma non coincide con esso; l informazione è un entità extra fisica, non interpretabile in termini di materia energia e sottoposta alle leggi della fisica solo perché basata su un supporto fisico. L informazione si può creare e distruggere. Informatica - Claudia d'amato 6
Caratteristiche di un sistema fisico per supportare informazioni CODIFICA: l'operazione formalizzazione e scrittura dell'infomazione su supporto fisico DECODIFICA: l'operazione di interpretazione e lettura dell'informazione da supporto fisico Condizione necessaria perché un supporto possa portare informazione è che possa assumere configurazioni differenti,, a ognuna delle quali venga associata una differente entità di informazione. Informatica - Claudia d'amato 7
Supporto fisico: 1 a condizione Deve consentire di potere identificare delle differenze Es: voglio rappresentare 2 alternative Cosa rappresenta ciascuna configurazione? Informatica - Claudia d'amato 8
Configurazioni e codici Per interpretare le differenti configurazioni del supporto è necessario conoscere il codice (cioè la regola) che a ogni configurazione ammessa associa un entità di informazione. La definizione di un codice comporta che siano identificati in modo non ambiguo l insieme delle possibili configurazioni del supporto e l insieme delle possibili entità di informazione a cui ci si vuole riferire. Variando il codice è possibile riferirsi a entità di informazione differenti utilizzando uno stesso supporto fisico. Informatica - Claudia d'amato 9
Supporto fisico: 2a condizione Deve essere condivisa una regola per attribuire un significato a ciascuna configurazione Configurazione 1 Configurazione 2 CODICE Entità di informazione 1 Entità di informazione 2 Informatica - Claudia d'amato 10
Definire un codice Identificare { Configurazioni } { Entità informazione } Associare gli elementi dei 2 insiemi Informatica - Claudia d'amato 11
Il telegrafo... Supporto fisico: : conduttore in cui transita corrente continua Entità di informazione: : punti e linee, che rappresentano le lettere dell alfabeto Codice = regola che specifica la corrispondenza: passa corrente per 1 s punto passa corrente per 2 s linea non passa corrente per 1 s separazione tra punti e linee della stessa lettera non passa corrente per 2 s separazione tra due lettere passa corrente per 1 s, non passa per 1 s, passa per 2 s = punto linea. Informatica - Claudia d'amato 12
...Il telegrafo Codice Morse = relazione tra lettere e sequenze di punti linee: punto linea lettera A linea punto punto punto lettera B linea punto linea punto lettera C ecc. Abbiamo associato simboli ad altri simboli!! Informatica - Claudia d'amato 13
Messaggi vs configurazione Configurazione del supporto fisico (livello fisico, LF): passa corrente per 2s, non passa per 1s, passa per 1s, non passa per 2s, passa per 2s, non passa per 1s, passa per 2s, non passa per 1s, passa per 2s messaggio,, al livello logico 1 (LL1( LL1): linea punto, separazione di lettera, linea linea linea messaggio,, al livello Logico 2 (LL2( LL2): N O messaggio,, al livello Logico 3 (LL3( LL3): NO, con il significato (per esempio) di incontro non confermato Le relazioni tra questi livelli definiscono ognuna un codice per interpretare il significato delle entità che compaiono al livello precedente in termini delle entità del livello successivo: sono relazioni di significazione. Informatica - Claudia d'amato 14
Livelli di informazione Informazione sintattica Rappresentazione in simboli dell'informazione Informazione semantica Determinazione del significato della informazione rappresentata Informazione pragmatica Determinazione del valore da attribuire all'informazione, considerata la sua rappresentazione ed il suo significato Informatica - Claudia d'amato 15
La codifica dell informazione Informatica - Claudia d'amato 17
Algoritmo Codifica dati e istruzioni descrizione della soluzione di problema scritta in modo da poter essere eseguita da un esecutore (eventualmente diverso dall autore dell algoritmo) sequenza di istruzioni che operano su dati. Programma algoritmo scritto in modo da poter essere eseguito da un calcolatore (esecutore automatico) Per scrivere un programma è necessario rappresentare istruzioni e dati in un formato tale che l esecutore automatico sia capace di memorizzare e manipolare. Informatica - Claudia d'amato 18
Rappresentare dati e istruzioni per il processing di un esecutore automatico Alfabeto dei simboli cifre 0, 1,, 9, separatore decimale (, ), separatore delle migliaia (. ) e segni positivo ( + ) o negativo ( ). Regole di composizione (sintassi), che definiscono le successioni ben formate 1.234,5 è la rappresentazione di un numero; 1,23,45 non lo è. Codice (semantica) 1.234,5 = 1 10 3 + 2 10 2 + 3 10 1 + 4 10 0 + 5 10 1 1,23,45 =?? Lo stesso alfabeto può essere utilizzato con codici diversi: Lo stesso alfabeto può essere utilizzato con codici diversi: 123,456 = 1 10 2 + 2 10 1 + 3 10 0 + 4 10 1 + 5 10 2 + 6 10 3, [IT] 123,456 = 1 10 5 + 2 10 4 + 3 10 3 + 4 10 2 + 5 10 1 + 6 10 0, [UK] Informatica - Claudia d'amato 19
Codifica Binaria Alfabeto binario: : usiamo dispositivi con solo due stati Problema: assegnare un codice univoco a tutti gli oggetti compresi in un insieme predefinito Quanti oggetti posso codificare con k bit: 1 bit 2 stati (0, 1) 2 oggetti (e.g. Vero/Falso) 2 bit 4 stati (00, 01, 10, 11) 4 oggetti 3 bit 8 stati (000, 001,, 111) 8 oggetti k bit 2 k stati 2 k oggetti Quanti bit mi servono per codificare N oggetti: N 2 k k log 2 N k = log 2 N (intero superiore) Attenzione: ipotesi implicita che i codici abbiano tutti la stessa lunghezza Informatica - Claudia d'amato 20
Esempio di codifica binaria Problema: assegnare un codice binario univoco a tutti i giorni della settimana Giorni della settimana: N = 7 k log 2 7 k = 3 Con 3 bit possiamo ottenere 8 diverse configurazioni: Ne servono 7, quali utilizziamo? Quale configurazione associamo a quale giorno? Attenzione: ipotesi che i codici abbiano tutti la stessa lunghezza Informatica - Claudia d'amato 21
I giorni della settimana in binario /1 Lunedì Martedì Domenica Mercoledì Sabato Giovedì Venerdì Lunedì Giovedì Martedì Mercoledì Domenica Venerdì Sabato 0 1 Lunedì Martedì Giovedì Mercoledì Sabato Venerdì Domenica 00 01 10 11 Lunedì Martedì Mercoledì Giovedì Venerdì Sabato Domenica 000 001 010 011 100 101 110 111 1 bit 2 gruppi 2 bit 4 gruppi 3 bit 8 gruppi Informatica - Claudia d'amato 22
I giorni della settimana in binario /2 Lunedì Martedì Domenica Mercoledì Sabato Giovedì Venerdì Sabato Giovedì Martedì Domenica Lunedì Mercoledì Venerdì 0 1 Giovedì Martedì Sabato Mercoledì Domenica Lunedì Venerdì 00 01 10 11 Giovedì Sabato Martedì Domenica Mercoledì Venerdì Lunedì 000 001 010 011 100 101 110 111 1 bit 2 gruppi 2 bit 4 gruppi 3 bit 8 gruppi Informatica - Claudia d'amato 23
Codifica binaria dei caratteri Quanti sono gli oggetti compresi nell insieme? 26 lettere maiuscole + 26 minuscole 52 10 cifre Circa 30 segni d interpunzione Circa 30 caratteri di controllo (EOF, CR, LF, ) circa 120 oggetti complessivi k = log 2 120 = 7 Codice ASCII: utilizza 7 bit e quindi può rappresentare al massimo 2 7 =128 caratteri Con 8 bit (= byte) rappresento 256 caratteri (ASCII esteso) Si stanno diffondendo codici più estesi (e.g. UNICODE) per rappresentare anche i caratteri delle lingue orientali Informatica - Claudia d'amato 24
ASCII su 7 bit (alcune configurazioni) 1 1 1 1 1 1 1 0 1 1 0 1 1 1 0 0 1 0 1 1 1 0 1 0 1 0 0 1 1 0 0 0 0 1 1 1 0 1 1 0 0 1 0 1 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 0 010 sp! " # $ % & ' ( ) * +, -. / 011 0 1 2 3 4 5 6 7 8 9 : ; < = >? 100 @ A B C D E F G H I J K L M N O 101 P Q R S T U V W X Y Z [ \ ] ^ _ 110 ` a b c d e f g h I j k l m n o 111 p q r s t u v w x Y z { } ~ canc Informatica - Claudia d'amato 25
bit, Byte, KiloByte, MegaByte, bit = solo due stati, 0 oppure 1. Byte = 8 bit, quindi 2 8 = 256 stati KiloByte [KB] = 2 Byte = 1024 Byte ~ 10 3 Byte MegaByte [MB] = 2 Byte = 1'048'576 Byte ~ 10 6 Byte GigaByte [GB] = 2 Byte ~ 10 9 Byte TeraByte [TB] = 2 Byte ~ 10 Byte PetaByte [PB] = 2 Byte ~ 10 Byte ExaByte [EB] = 2 Byte ~ 10 Byte Informatica - Claudia d'amato 26
La codifica delle istruzioni Si segue lo schema presentato per i caratteri alfanumerici: quali e quante sono le istruzioni da codificare? qual è la lunghezza delle successioni di bit da utilizzare? qual è la corrispondenza tra istruzioni e successioni di bit? Istruzioni aritmetico-logiche Istruzioni per il trasferimento dati Istruzioni di controllo Codice Istruzione Codice Istruzione Codice Istruzione 0111 1100 ADD 1110 1000 LOAD 0100 1001 IF_EQ 0111 1101 SUB 1111 1000 STORE 0100 1000 GOTO 0111 1110 AND 0100 1100 RETURN Informatica - Claudia d'amato 27
Oltre al codice operativo è necessario far riferimento ai dati necessari per completare l esecuzione dell istruzione, e.g. addizione: è necessario che sia specificato (anche implicitamente) dove leggere i due operandi da sommare e dove scrivere il risultato; il numero dei dati da specificare è variabile, in funzione delle istruzioni. Informatica - Claudia d'amato 28
Numeri naturali Sistema di numerazione posizionale in base b c k c k 1 c 0 rappresenta c k b k + c k 1 b k 1 + + c 0 b 0 b=10 1101 dieci indica 1 10 3 + 1 10 2 + 0 10 + 1 10 0 Conversione binario decimale basta scrivere il numero secondo la notazione posizionale utilizzando già il sistema decimale b=2 1101 due indica 1 2 3 + 1 2 2 + 0 2 + 1 2 0 = 13 dieci Conversione decimale binario Metodo delle divisioni successive Informatica - Claudia d'amato 29
Conversione binario decimale 101100 due = 1 dieci 2 5 dieci+ 0 dieci 2 4 dieci+ 1 dieci 2 3 dieci+ 1 dieci 2 2 dieci+ 0 dieci 2 1 dieci+ + 0 dieci 2 0 dieci = = 1 dieci 32 dieci + 0 dieci 16 dieci + 1 dieci 8 dieci + 1 dieci 4 dieci + 0 dieci 2 dieci + 0 dieci 1 dieci = = 32 dieci + 8 dieci + 4 dieci = = 44 dieci 101110101 due = 1 dieci 2 8 dieci+ 0 dieci 2 7 dieci+ 1 dieci 2 6 dieci+ 1 dieci 2 5 dieci+ 1 dieci 2 4 dieci+ 0 dieci 2 3 dieci+ 1 dieci 2 2 dieci+ 0 dieci 2 1 dieci+ 1 dieci 2 0 dieci = = 1 dieci 256 dieci + 0 dieci 128 dieci + 1 dieci 64 dieci + 1 dieci 32 dieci + 1 dieci 16 dieci + 0 dieci 8 dieci + 1 dieci 4 dieci + 0 dieci 2 dieci + 1 dieci 1 dieci = = 256 dieci + 64 dieci + 32 dieci + 16 dieci + 4 dieci + 1 dieci = = 373 dieci Informatica - Claudia d'amato 30
Conversione decimale binario Sistema di numerazione posizionale in base B che, in questo contesto si può ipotizzare diversa da dieci c n 1 c n 2 c 1 c 0 = c n 1 B n 1 + c n 2 B n 2 + + c 1 B 1 + c 0 B 0 c n 1 c n 2 c 1 c 0 = c n 1 B n 1 + c n 2 B n 2 + + c 1 B B + c 0 (infatti B 1 = B e B 0 = 1) Dividendo il numero per il valore della base, il risultato che si ottiene è: (c n 1 B n 1 + c n 2 B n 2 + + c 1 B B + c 0 )/B = = c n 1 B n 2 + c n 2 B n 3 + + c 1 + c 0 /B che può essere scomposto in modo da evidenziare quoziente e resto: quoziente = c n 1 B n 2 + c n 2 B n 3 + + c 1 resto = c 0 Il resto della divisione corrisponde all ultima cifra della rappresentazione in base B del numero,, ma il suo valore è indipendente dalla base che si utilizza per effettuare i conti. Applicando lo stesso procedimento al quoziente si ottiene la penultima cifra della rappresentazione in base B Ripetendo la procedura è possibile ottenere tutte le altre cifre. Informatica - Claudia d'amato 32
Conversione decimale binario 573 dieci : 2 dieci quoziente 286 286 dieci : 2 dieci quoziente 143 143 dieci : 2 dieci quoziente 71 71 dieci : 2 dieci quoziente 35 35 dieci : 2 dieci quoziente 17 17 dieci : 2 dieci quoziente 8 dieci : 2 dieci quoziente 4 dieci : 2 dieci quoziente 2 dieci : 2 dieci quoziente 1 dieci : 2 dieci quoziente 286 dieci 143 dieci 71 dieci 35 dieci 17 dieci 8 dieci (cifra binaria meno significativa) 4 dieci 2 dieci 1 dieci 0 dieci resto 1 dieci resto 0 dieci resto 1 dieci resto 1 dieci resto 1 dieci resto 1 dieci resto 0 dieci resto 0 dieci resto 0 dieci resto 1 dieci 1 000 111 101 due = 573 dieci (cifra binaria più significativa) Informatica - Claudia d'amato 33
Conversione decimale binario Si calcolano i resti delle divisioni per due 18 : 2 = 9 resto 0 9 : 2 = 4 resto 1 4 : 2 = 2 resto 0 2 : 2 = 1 resto 0 1 : 2 = 0 resto 1 10010 137 : 2 = 68 resto 1 68 : 2 = 34 resto 0 34 : 2 = 17 resto 0 17 : 2 = 8 resto 1 8 : 2 = 4 resto 0 4 : 2 = 2 resto 0 2 : 2 = 1 resto 0 1 : 2 = 0 resto 1 10001001 Informatica - Claudia d'amato 34
Numeri binari: operazioni Operazioni di somma di numeri binari naturali. Con gli 8 bit utilizzati negli esempi qui riportati si possono rappresentare i numeri naturali fino a 255dieci. Operazioni che producono un risultato maggiore provocano il superamento della capacità di rappresentazione (indicato in gergo dal termine inglese overflow). 1 1 Informatica - Claudia d'amato 35
Ottali ed esadecimali Utili per rappresentare sinteticamente valori binari Ottali (base b = 8) Alfabeto ottale: cifre comprese tra 0 e 7 354 otto = 3 8 2 + 5 8 1 + 4 8 0 = 192+40+4 = 236 dieci 1461 otto = 1 8 3 + 4 8 2 + 6 8 1 + 1 8 0 = 512+256+48+1 = 817 dieci Ogni cifra ottale corrisponde a tre cifre binarie: 11101100 due = [11] [101] [100] = 354 otto 1100110001 due = [1] [100] [110] [001] = 1461 otto Esadecimali (base b = 16) Alfabeto esadecimale: cifre 0 9 + lettere A F EC sedici = 14 16 1 + 12 16 0 = 224 + 12 = 236 dieci 331 sedic = 3 16 2 + 3 16 1 + 1 16 0 = 768+48+1 = 817 dieci Ogni cifra esadecimale corrisponde a quattro cifre binarie: 11101100 due = [1110] [1100] = EC sedici 1100110001 due = [11] [0011] [0001] = 331 sedici Informatica - Claudia d'amato 36
Numeri naturali binari nei calcolatori Per la codifica dei numeri naturali (interi positivi) si utilizzano abitualmente successioni di 32 bit (4 byte) con cui si possono rappresentare i numeri compresi tra 0 e 2 32 1 = 4'294'967'295 4 10 9. Informatica - Claudia d'amato 37
Numeri interi relativi Alfabeto binario anche il segno è rappresentato da 0 o 1 è indispensabile indicare il numero k di bit utilizzati Modulo e segno 1 bit di segno (0 positivo, 1 negativo) k 1 bit di modulo Esempio: +6 dieci = 0110 ms 6 dieci = 1110 ms si rappresentano i valori da 2 k 1 +1 a 2 k 1 1 con 4 bit i valori vanno da 7 a +7 con 8 bit i valori vanno da 127 a +127 Attenzione: ci sono due rappresentazioni dello 0 con 4 bit sono +0 dieci = 0000 ms 0 dieci = 1000 ms Informatica - Claudia d'amato 39
Numeri interi in complemento a 2 Alfabeto binario anche il segno è rappresentato da 0 o 1 è indispensabile indicare il numero k di bit utilizzati Complemento a 2 X corrisponde al binario naturale di 2 k + X +6 dieci 2 4 +6 = 22 [1]0110 0110 C2 6 dieci 2 4 6 = 10 [0]1010 1010 C2 si rappresentano i valori da 2 k 1 a 2 k 1 1 con 4 bit i valori vanno da 8 a +7 con 8 bit i valori vanno da 128 a +127 Con 32 bit i valori vanno da 2'147'483'648 fino a +2'147'483'647 Attenzione: c è una sola rappresentazione dello 0 con 4 bit è +0 dieci = 0000 C2 mentre 1000 C2 = 8 dieci Informatica - Claudia d'amato 40
Il complemento a 2 Metodi alternativi per calcolare la rappresentazione di X a partire da quella di X Effettuare il complemento 1 di ogni bit di X, poi aggiungere 1 rappresentazione di +6 dieci = 0110 C2 (NB ci vogliono 4 bit!!) complemento di tutti i bit 1001 C2 (corrisponderebbe a -7 dieci ) aggiungere 1 1010 C2 (che corrisponde a -6 dieci ) Partendo da destra e andando verso sinistra, lasciare invariati tutti i bit fino al primo 1 compreso, complementare tutti gli altri bit. rappresentazione di +6 dieci = 0110 C2 (NB ci vogliono 4 bit!!) gli ultimi due bit ( 1 0) rimangono invariati gli altri due bit vengono complementati (1 0 1 0 C2 ) Informatica - Claudia d'amato 41
Complemento a 2: alcune osservazioni I valori positivi iniziano con 0,, quelli negativi con 1 Data la rappresentazione di un numero su k bit, la rappresentazione dello stesso numero su k+1 bit si ottiene aggiungendo (a sinistra) un bit uguale al primo (estensione( del segno ) Rappresentazione di 6 su 4 bit = 1010 Rappresentazione di 6 su 5 bit = 11010 Rappresentazione di 6 su 8 bit = 11111010 la sottrazione si effettua come somma algebrica la sottrazione si effettua come somma algebrica 4 6 = +4 + ( 6) = 0100 + 1010 = 1110 = 2 9 6 = +9 + ( 6) = 01001 + 11010 = [1]00011 = +3 Informatica - Claudia d'amato 43
C2: operazioni Operazioni di somma di numeri binari in complemento a due. Con gli 8 bit utilizzati negli esempi qui riportati si possono rappresentare i numeri interi da 128 dieci fino a +127 dieci Informatica - Claudia d'amato 44
C2: operazioni ATTENZIONE Se due operandi dello stesso segno danno un risultato di segno opposto vuol dire che è stata superata la capacità di calcolo (overflow). Informatica - Claudia d'amato 45
Numeri razionali Cifre più significative: sono le cifre associate ai pesi maggiori numeri > 1: le cifre più significative sono quelle poste più a sinistra es.: 723'456 cifra più significativa: 7, associata al peso 10 5, seguita da 2, con peso 10 4, e così via; numeri < 1: le cifre più significative sono le prime diverse da 0 che si incontrano, a partire dalla virgola, da sinistra verso destra es.: 0.0072345 --> cifra più significativa: 7, con peso 10 3, seguita da 2, con peso 10 4, e così via. Se i numeri hanno un valore molto grande o piccolo, si considerano solo le cifre più significative --> rappresentazione in notazione scientifica: un numero in base B viene rappresentato come: ±0.m B e, segno (+ oppure ), coefficiente m, detto mantissa, che è la parte frazionaria compresa tra 0 e 1 esponente e a cui elevare la base della numerazione, che è un intero ( 0) Esempi: -123'450'000'000 diventa 0.12345 10 12, con segno negativo, mantissa 12345, ed esponente 12; +0.000012345, corrisponde a 0.12345 10-5, con segno positivo, mantissa 12345 ed esponente 5. Informatica - Claudia d'amato 46
Rappresentazione binaria Per esempio +101010000 diventa +0.10101 10 01001, segno positivo; mantissa 10101 (si noti che la mantissa inizia sempre con 1); esponente è 01001 C2 (si noti come l esponente sia un numero intero e per questo sia necessario adottare una rappresentazione che permetta la codifica anche di valori negativi, come, per esempio, quella in complemento a due). Standard IEEE-754 (Institute of Electrical and Electronic Engineers): precisione doppia: 64 bit precisione singola: 32 bit Informatica - Claudia d'amato 47