Fondamenti di Informatica
Linguaggi, Codifica e Rappresentazione dell’Informazione
Prof. Christian Esposito
Corso di Laurea in Ingegneria Meccanica e Gestionale (Classe I)
Cosa abbiamo visto la volta scorsa
• Gli elaboratori sono strumenti per risolvere (o aiutare a risolvere) problemi basati sulle informazioni
• Ma come ciò avviene?
1. Abbiamo bisogno di codificare e memorizzare opportunamente dati e informazioni
2. Abbiamo bisogno di impartire le giuste istruzioni per risolvere correttamente problemi
Linguaggi, Codifica e Rappresentazione dell’Informazione 01/109
Cosa vedremo oggi
• Gli elaboratori sono strumenti per risolvere (o aiutare a risolvere) problemi basati sulle informazioni
• Ma come ciò avviene?
1. Abbiamo bisogno di codificare e memorizzare opportunamente dati e informazioni
2. Abbiamo bisogno di impartire le giuste istruzioni per risolvere correttamente problemi
Quale Lingua parla l’Elaboratore?
• Come rendere dati e informazioni comprensibili ad un elaboratore?
• Informazioni e dati per essere trattati da un elaboratore devono essere opportunamente codificati
Linguaggi, Codifica e Rappresentazione dell’Informazione 03/109
Linguaggio
• Alfabeto
• Collezione di simboli grafici, aventi di solito un ordine ben preciso, che servono a rappresentare le parole di una lingua
• I simboli spesso (ma non sempre) sono lettere ovvero rappresentazione scritta di suoni linguistici
• Vocabolario (o lessico)
• Insieme delle parole ammissibili di una lingua
• Grammatica
• Insieme di regole utili alla corretta costruzione di frasi, sintagmi e parole
• Il termine si riferisce allo studio delle suddette regole
• Semantica
• Studia il significato delle parole (semantica lessicale), degli insiemi delle parole, delle frasi (semantica frasale) e dei testi
La Funzione dei Linguaggi
• I linguaggi (verbali, non verbali, orali, scritti, etc.) sono strumenti che contribuiscono a
• Rappresentare le informazioni
• Concetti, pensieri, emozioni, etc., vengono formalizzati attraverso i linguaggi per poter essere memorizzati, trasferiti ed elaborati
• Memorizzare le informazioni
• La scrittura
• Trasferire le informazioni
• La comunicazione
• Elaborare le informazioni
• Le deduzioni nella logica
Linguaggi, Codifica e Rappresentazione dell’Informazione 05/109
Problemi relativi ai Linguaggi
• Accordo sui simboli
• a b c d e f g …
• Accordo sul lessico
• casa, gatto, automobile, vado, …
• Accordo sulla grammatica
• <soggetto verbo complemento>
• Accordo sulla semantica
• La nonna chiude la porta (OK)
• La porta chiude la nonna (NO)
• Accordo sulla codifica
• Regole per trasformare simboli, parole e frasi di un linguaggio in una nuova rappresentazione con possibilità di effettuare in maniera corretta anche l’operazione inversa
• “a” in codice Morse (Samuel Morse, pittore e storico inglese) è “ . – ”
“b” in codice Morse è “ – . . . ”
Codice Braille
• Lettera “a”
• Lettera “b”
Linguaggi, Codifica e Rappresentazione dell’Informazione 07/109
Codifica dei Numeri
• Linguaggio di partenza
• I numeri
• Codifica 1
• Numerazione decimale
• 5, 45, 670
• Codifica 2
• Numerazione binaria
• 101, …
• Codifica 3
Quipo
• Quipo è un insieme di cordicelle annodate, distanziate in modo sistematico tra loro e legate a una corda più grossa e corta che le sorregge.
•I quipo servivano per i calcoli matematici. I nodi delle corde sono di diversi colori: rappresentavano numeri, e dalla loro reciproca posizione se ne potevano ricavare le unità, le decine, le centinaia e le migliaia.
Linguaggi, Codifica e Rappresentazione dell’Informazione 09/109
I Linguaggi Naturali: Ambiguità
• Per comunicare tra loro gli uomini hanno sviluppato i linguaggi naturali
• Italiano, inglese, francese, etc
• Una caratteristica negativa di tali linguaggi è la loro inerente ambiguità
• Una qualsiasi frase formulata è potenzialmente polisemica
• Il significato che viene dato alla frase da chi riceve il messaggio può essere diverso da quello datogli dal mittente
• Comprendere il significato di una frase in linguaggio naturale è più semplice se questa viene pronunciata in un dato contesto
I Linguaggi Naturali:
Disambiguazione
• Comprendere il significato di una frase in linguaggio naturale è più semplice se questa viene pronunciata in un dato contesto
• Concorso Ippico
• Circolo Scacchistico
• Sartoria
• Palestra
Linguaggi, Codifica e Rappresentazione dell’Informazione 11/109
I Linguaggi Naturali nella
Comunicazione con i Calcolatori
• Per comunicare con un elaboratore, l’ambiguità dei linguaggi naturali rappresenta un grosso problema
• Bisognerebbe fornire all’elaboratore anche il contesto e la conoscenza (le regole) per disambiguare le frasi
• La rappresentazione (comprensibile al calcolatore) di contesto e regole è molto complicata
• In alcuni casi la disambiguazione è difficile anche per gli uomini
• È necessario l’utilizzo dei cosiddetti Linguaggi Formali
I Linguaggi Formali
• Sviluppati ed impiegati in tutti gli ambiti in cui è necessario evitare l’ambiguità
• Informatica, matematica, logica, etc
• La definizione di un Linguaggio Formale prevede
• L’individuazione di un alfabeto, ovvero, di un elenco (finito) di simboli
• La definizione di una grammatica formale, ovvero un insieme di regole sintattiche che specificano come i simboli dell’alfabeto possono essere combinati tra loro per costituire le frasi ben formate all’interno del linguaggio stesso
• Inoltre, le semantiche formali consentono di attribuire un significato non ambiguo alle frasi in un linguaggio formale
Linguaggi, Codifica e Rappresentazione dell’Informazione 13/109
Usare e Programmare il computer
• I Programmi (o software) risolvono problemi specifici con approccio basato sulle informazioni e vengono eseguiti dai computer
Usare
programmi realizzati da altri
Programmare
scrivere su Facebook scrivere una relazione con
realizzare Programmi complessi come ad es.
Facebook realizzare
contenuti didattici interattivi
realizzare
Programmi con Matlab
Linguaggi naturali
Linguaggi formali (di programmazione)
Numeri binari, codifica binaria dei caratteri, etc.
Rappresentazione dell’Informazione:
Accordo sui Simboli
• L’informazione è rappresentata dai dati, che a loro volta sono espressi in forma di simboli
• La stessa informazione può essere codificata con simboli e modalità diverse
• 1963 -> simboli “0”, “1”, “2”, …
• MCMLXIII -> simboli della codifica romana
• Millenovecentosessantatre -> rappresentazione testuale
• …
Linguaggi, Codifica e Rappresentazione dell’Informazione 15/109
Rappresentazione dell’informazione nei calcolatori – 1/2
• Consideriamo un alfabeto ridotto che contiene solo i simboli “0” e “1”
• Un bit (contrazione di binary digit) è un simbolo scelto sull’alfabeto {0, 1}
• Nei calcolatori ogni elemento (numeri, testo, audio, video, istruzioni, etc) viene rappresentato esclusivamente con sequenze di bit
• I dati e le istruzioni vengono codificati con sequenze di bit
Rappresentazione dell’informazione nei calcolatori – 2/2
• Per trattare (memorizzare, elaborare, trasmettere, etc.) l’informazione, il calcolatore
• Codifica l’informazione disponibile scrivendo su un supporto fisico
• Manipola il supporto con opportune trasformazioni fisiche, ottenendo una versione modificata del supporto
• Decodifica l’informazione corrispondente al risultato dell’elaborazione leggendo dalla versione modificata del supporto
Linguaggi, Codifica e Rappresentazione dell’Informazione 17/109
Codifica Binaria
• Alfabeto binario: usiamo solo due cifre 0,1 (bit)
• Problema: assegnare una sequenza di bit univoca a tutti gli oggetti in un insieme predefinito
• Quanti oggetti posso rappresentare con k bit?
• 1 bit => 2 stati (0, 1) => 2 oggetti
• 2 bit => 4 stati (00, 01, 10, 11) => 4 oggetti
• 3 bit => 8 stati (000, 001, …, 111) => 8 oggetti
• …
• k bit => 2k stati => 2k oggetti
• Quanti bit mi servono per codificare N oggetti?
• N ≤ 2𝑘=> k ≥ 𝑙𝑜𝑔2𝑁 => k = 𝑙𝑜𝑔2𝑁 (intero superiore)
Combinazioni di Bit
Bit a
disposizione Lecombinazioni Il numero di
combinazioni
1 0, 1 2 =2
12 00, 01, 10, 11 4 =2
23 000, 001, 010, 011, 100, 101, 110, 111
8 =2
34 0000, 0001, 0010, 0011, 0100, 16 =2
40101, 0110, 0111,1000, 1001, 1010, 1011, 1100, 1101, 1110, 1111
5 00000, 00001, 00010, … 32 =2
5… … …
Linguaggi, Codifica e Rappresentazione dell’Informazione 19/109
Un Primo Esempio di Codifica:
Interruttore
• Due sole possibilità (stati)
• Spento
• Acceso
• L’informazione sullo stato dell’interruttore corrisponde dunque alla scelta fra due sole alternative
Un Primo Esempio di Codifica:
Interruttore
• 1 bit rappresenta lo stato dell’interruttore
• Interruttore acceso: 1
• Interruttore spento: 0
Linguaggi, Codifica e Rappresentazione dell’Informazione 21/109
Codifica di un’Informazione con
Più di Due Stati: Il Semaforo
Diverse Codifiche per le Stesse Informazioni
• Rappresentazione degli stati di un semaforo mediante bit
Stato Codifica
ROSSO 1 0 0
VERDE 0 0 1
GIALLO 0 1 0
Stato Codifica
ROSSO 0 0
VERDE 0 1
GIALLO 1 0
3 bit
2 bit
Linguaggi, Codifica e Rappresentazione dell’Informazione 23/109
Codifica di un’Informazione con Più di Due Stati: Giorni della Settimana
• Problema: assegnare un codice binario univoco a tutti i giorni della settimana
• Giorni della settimana: N = 7 => 𝑘 ≥ 𝑙𝑜𝑔2 7 => 𝑘 = 3
• Con 3 bit possiamo ottenere 8 diverse sequenze
• Ne servono 7, quali utilizziamo?
• Quale configurazione associamo a quale giorno?
• Osservazione: quanto detto fino ad ora vale sotto l’ipotesi che i codici abbiano tutti la stessa lunghezza
I Giorni della Settimana in Binario
Lunedì Martedì Mercoledì
Giovedì Venerdì Sabato Domenica
000 001 010 011 100 101 111 110
Lunedì Martedì
Giovedì Mercoledì
Sabato Venerdì
Domenica
00 01 10 11
Lunedì Giovedì Martedì
Mercoledì
Sabato Venerdì Domenica
0
1
Lunedì
Sabato
Giovedì Venerdì
Martedì Domenica
Mercoledì
1 bit
2 “gruppi”
2 bit
4 “gruppi”
3 bit
8 “gruppi”
Linguaggi, Codifica e Rappresentazione dell’Informazione 25/109
I Giorni della Settimana in Binario
Lunedì Martedì
Mercoledì Giovedì
Venerdì Sabato
Domenica
000 001 010 011 100 101 111 110
Giovedì
Lunedì Venerdì Martedì
Sabato Mercoledì
Domenica
00 01 10 11
Sabato Giovedì Martedì
Domenica Lunedì Mercoledì
Venerdì
0
1
Lunedì
Sabato
Giovedì Venerdì
Martedì Domenica
Mercoledì
1 bit
2 “gruppi”
2 bit
4 “gruppi”
3 bit
8 “gruppi”
Codifica dei Caratteri – 1/5
• Problema: è possibile applicare queste idee alla rappresentazione di informazione più complessa, ad esempio di un testo?
• Un testo è rappresentato attraverso una successione di caratteri
• Ogni carattere viene scelto all’interno di un insieme finito di simboli (alfabeto)
Linguaggi, Codifica e Rappresentazione dell’Informazione 27/109
Codifica dei Caratteri – 2/5
• Con 8 bit, è possibile rappresentare la scelta fra 256 alternative diverse (28=256)
• Da 00000000… a 11111111
• Passando per tutte le combinazioni intermedie (00000001, 00000010, …)
• Nel caso del testo, possiamo far corrispondere diverse combinazioni di 8 bit (otto cellette, ciascuna delle quali può contenere 0 o 1) a caratteri diversi
Ogni singolo CARATTERE viene
codificato con una combinazione di 8
bit
Codifica dei Caratteri – 3/5
• Ad esempio:
• 00000000 -> A
• 00000001 -> B
• 00000010 -> C
• 00000011 -> D
• 00000100 -> E
• …. e così via
Linguaggi, Codifica e Rappresentazione dell’Informazione 29/109
Codifica dei Caratteri – 4/5
• Sono stati proposti vari standard per la codifica dei caratteri, tra cui il più diffuso è quello ASCII (American Standard Code for Information Interchange) del 1968, che con 7 bit codifica un alfabeto di 128 caratteri.
•Lo standard che sta prendendo piede e che dovrebbe essere il successore di ASCII è UTF-8 del 1992, codifica principale di Unicode per Internet secondo il W3C.
Codifica dei Caratteri - 5/5
• Soluzione: una parola (o più parole) sarà rappresentata dal computer come una successione di gruppi di 8 bit
O G G I P I O V E
01001111 01000111 01000111 01001001 00100000 01010000 01001001 01001111 01010110 01000101
Linguaggi, Codifica e Rappresentazione dell’Informazione 31/109
La Codifica dei Numeri
• Obiettivo
• Codifica in binario dei numeri per favorire l’elaborazione da parte dei calcolatori
• Vincoli
• Codifica e decodifica devono essere definite in maniera tale da poter essere compiute in maniera automatica
• Problema
• Deve essere possibile codificare tutti i numeri
• 0, 1, 2, 3, …
• -1, -2, -3, …
• -12.4, -2.004, 0.56, 134.89, …
• …in sequenze
• 0000000, 000001, 000010, …
Notazione Posizionale
• Concetto di base di rappresentazione B
• Rappresentazione del numero come sequenza di simboli, detti cifre
• Appartenenti ad un alfabeto composto da B simboli distinti
• Ogni simbolo rappresenta un valore fra 0 e B-1
• Il valore di un numero v espresso in questa notazione è ricavabile
• A partire dal valore rappresentato da ogni simbolo
• Pesato in base alla posizione che occupa nella sequenza
Linguaggi, Codifica e Rappresentazione dell’Informazione 33/109
Valore di un Numero in Notazione Posizionale
• Formalmente, il valore di un numero v espresso in questa notazione è dato dalla formula
• Dove B è la base
• dk (0 ≤ 𝑘 ≤ 𝑛 − 1) sono le cifre (comprese tra 0 e 𝐁 − 1)
• Osservazione: una sequenza di cifre non è interpretabile se non si precisa la base in cui è espressa
Notazione Posizionale
• Un numero v può essere rappresentato come
v = d
n* B
n-1+ d
n-1* B
n-2+ ... + d
2* B
1+ d
1* B
0642 può essere scritto come 6
3* 10
2+ 4
2* 10
+2
1B è la base del numero
n è il numero
di cifre nel numero d è la cifra alla
i
esimaposizione nel numero
Linguaggi, Codifica e Rappresentazione dell’Informazione 35/109
Sistemi di Numerazione Posizionale
• Il nostro sistema di numerazione
• Utilizza una notazione posizionale ed è in base 10
• L’alfabeto utilizzato è l’insieme dei simboli {0, 1, 2, …, 9}
• Non è l’unico sistema possibile
• Essendo posizionale, il valore di una “sequenza” di simboli viene calcolata assegnando dei “pesi” ad ogni simbolo a seconda della sua posizione
4523
10=
4 * 10 3 + 5 * 10 2 +2 * 10 1 + 3 * 10 0
3 2 1 0
P o sizio n i
Stringa di simboli
Base
Sistemi di Numerazione Posizionale
• 3251
• 1 unità , 5 decine, 2 centinaia , 3 unità di migliaia
• 745814763
• 3 unità, 6 decine, 7 centinaia, 4 unità di migliaia, 1 decina di migliaia, 8 centinaia di migliaia, 5 unità di milioni, 4 decine di milioni, 7 centinaia di milioni
Linguaggi, Codifica e Rappresentazione dell’Informazione 37/109
Sistemi di Numerazione più Diffusi
Sistema Base Simboli
Usato dagli umani?
Usato dai computer?
Decimale
10 0, 1, … 9 Si No
Binario
2 0, 1 No Si
Ottale
8 0, 1, … 7 No No
Esadecimale
16 0, 1, … 9, A, B, … F
No No
Esempio
25 10 = 11001 2 = 31 8 = 19 16
Base
Linguaggi, Codifica e Rappresentazione dell’Informazione 39/109
Conversioni tra Basi (più Diffuse)
• Le possibilità
Esadecimale
Decimale Ottale
Binario
Da decimale a decimale
Esadecimale
Decimale Ottale
Binario
Linguaggi, Codifica e Rappresentazione dell’Informazione 41/109
Da Decimale a Decimale
12510 => 5 x 100 = 5 + 2 x 101 = 20 + 1 x 102 = 100
125
Base
Peso
Da Binario a Decimale
Esadecimale
Decimale Ottale
Binario
Linguaggi, Codifica e Rappresentazione dell’Informazione 43/109
Da Binario a Decimale: Tecnica
• Moltiplica ciascun bit per 2n, dove n è il “peso” del bit
• Il peso è dato dalla posizione del bit, a partire da 0 sulla destra
• Somma i risultati
Da Binario a Decimale:
Esempio
Linguaggi, Codifica e Rappresentazione dell’Informazione 45/109
101011
2=> 1 x 2
0= 1 + 1 x 2
1= 2 + 0 x 2
2= 0 + 1 x 2
3= 8 + 0 x 2
4= 0 + 1 x 2
5= 32
43
10Bit in posizione “0”
Da Binario a Decimale:
Esempio
N
2= 101010
N
10= 1 x 2
5+ 0 x 2
4+ 1 x + 0 x 2
2+ 1 x + 0 x 2
0= 32 + 8 + 2 = 42
N
2= 11011
N = 2
0+ 2
1+ 2
3+ 2
4= 1 + 2 + 8 + 16 = 27
2
32
1Da Binario a Decimale: Altri Esempi
• 10011010 = 1*2
7+ 0*2
6+ 0*2
5+ 1*2
4+ 1*2
3+ 0*2
2+ 1*2
1+ 0*2
0= 2
7+ 2
4+ 2
3+ 2
1= 128 + 16 + 8 + 2
= 154
• 00101001 = 0*2
7+ 0*2
6+ 1*2
5+ 0*2
4+ 1*2
3+ 0*2
2+ 0*2
1+ 1*2
0= 2
5+ 2
3+ 2
0= 32 + 8 + 1
= 41
Linguaggi, Codifica e Rappresentazione dell’Informazione 47/109
Da Decimale a Binario
Esadecimale
Decimale Ottale
Binario
Da Decimale a Binario: Tecnica
• Dividi per due e tieni traccia del resto
• Il primo resto è il bit in posizione 0 (LSB, least-significant bit)
• Il secondo resto è il bit in posizione 1
• E così via…
Linguaggi, Codifica e Rappresentazione dell’Informazione 49/109
Da Decimale a Binario:
Esempio
2
0 1 2
1 1 2
3 1 2
7 1 2
15 1 2
31 0 2 125
62 1
12510 = 11111012 12510 = ?2
Da Decimale a Binario:
Esempio
N
10= 51 (Da decimale a binario) N
2= ???
51 1 2
25 2
1 12 2
0 6
0 2
3 1 2
1 1 2 N
2= 110011 0
51 = 1*2
5+1*2
4+0*2
3+0*2
2+1*2
1+1*2
0Linguaggi, Codifica e Rappresentazione dell’Informazione 51/109
Da Ottale a Decimale
Esadecimale
Decimale Ottale
Binario
Da Ottale a Decimale: Tecnica
• Moltiplica ciascun bit per 8n, dove n è il “peso” del bit
• Il peso è dato dalla posizione del bit, a partire da 0 sulla destra
• Somma i risultati
Linguaggi, Codifica e Rappresentazione dell’Informazione 53/109
Da Ottale a Decimale: Esempio
7248 =>4 x 80 = 4 + 2 x 81 = 16 + 7 x 82 = 448
46810
Da Esadecimale a Decimale
Esadecimale
Decimale Ottale
Binario
Linguaggi, Codifica e Rappresentazione dell’Informazione 55/109
Da Esadecimale a Decimale:
Tecnica
• Moltiplica ciascun bit per 16n, dove n è il “peso” del bit
• Il peso è dato dalla posizione del bit, a partire da 0 sulla destra
• Somma i risultati
Da Esadecimale a Decimale:
Esempio
ABC16 => C x 160 = 12 x 1 = 12 + B x 161 = 11 x 16 = 176 + A x 162 = 10 x 256 = 2560
274810
Linguaggi, Codifica e Rappresentazione dell’Informazione 57/109
Da Ottale a Binario
Esadecimale
Decimale Ottale
Binario
Da Ottale a Binario: Tecnica
• Converti ogni cifra ottale in una rappresentazione binaria equivalente a 3-bit
Linguaggi, Codifica e Rappresentazione dell’Informazione 59/109
Da Ottale a Binario: Esempio
7058 = ?2
7 0 5
111 000 101
Da Esadecimale a Binario
Esadecimale
Decimale Ottale
Binario
Linguaggi, Codifica e Rappresentazione dell’Informazione 61/109
Da Esadecimale a Binario:
Tecnica
• Converti ogni cifra esadecimale in una rappresentazione binaria equivalente a 4 bit
Da Esadecimale a Binario:
Esempio
10AF16 = ?2
1 0 A F
0001 0000 1010 1111
10AF16 = 00010000101011112
Linguaggi, Codifica e Rappresentazione dell’Informazione 63/109
Da Decimale a Ottale
Esadecimale
Decimale Ottale
Binario
Da Decimale a Ottale: Tecnica
• Dividi per 8
• Tieni traccia del resto
Linguaggi, Codifica e Rappresentazione dell’Informazione 65/109
Da Decimale a Ottale: Esempio
8 1234
154 2 8
19 2 8
2 3 8
0 2
123410 = 23228 123410 = ?8
Da Decimale ad Esadecimale
Esadecimale
Decimale Ottale
Binario
Linguaggi, Codifica e Rappresentazione dell’Informazione 67/109
Da Decimale ad Esadecimale:
Tecnica
• Dividi per 16
• Tieni traccia del resto
Da Decimale ad Esadecimale:
Esempio
123410 = ?16
123410 = 4D216
16 1234
77 2 16
4 13 = D 16
0 4
Linguaggi, Codifica e Rappresentazione dell’Informazione 69/109
Da Binario ad Ottale
Esadecimale
Decimale Ottale
Binario
Da Binario ad Ottale
• Raggruppa i bit in gruppi di tre, partendo dalla destra
• Converti in cifre ottali
Linguaggi, Codifica e Rappresentazione dell’Informazione 71/109
Da Binario ad Ottale: Esempio
10110101112 = ?8
1 011 010 111
1 3 2 7
Da Binario ad Esadecimale
Esadecimale
Decimale Ottale
Binario
Linguaggi, Codifica e Rappresentazione dell’Informazione 73/109
Da Binario ad Esadecimale:
Tecnica
• Raggruppa i bit in gruppi di quattro, partendo dalla destra
• Converti in cifre esadecimali
Da Binario ad Esadecimale:
Esempio
10101110112 = ?16
10 1011 1011
2 B B
10101110112 = 2BB16
Linguaggi, Codifica e Rappresentazione dell’Informazione 75/109
Da Ottale ad Esadecimale
Esadecimale
Decimale Ottale
Binario
Da Ottale ad Esadecimale:
Tecnica
• Idea: usare la codifica binaria come rappresentazione intermedia
Linguaggi, Codifica e Rappresentazione dell’Informazione 77/109
Da Ottale ad Esadecimale:
Esempio
10768 = ?16
1 0 7 6
001 000 111 110
2 3 E
1076 = 23E
Da Esadecimale ad Ottale
Esadecimale
Decimale Ottale
Binario
Linguaggi, Codifica e Rappresentazione dell’Informazione 79/109
Da Esadecimale ad Ottale:
Tecnica
• Idea: usare la codifica binaria come rappresentazione intermedia
Da Esadecimale ad Ottale:
Esempio
1F0C16 = ?8
1 F 0 C
0001 1111 0000 1100
1 7 4 1 4
1F0C16 = 174148 Linguaggi, Codifica e Rappresentazione dell’Informazione 81/109
Più in generale…
• Per convertire un numero binario in un sistema che ha come base 2z
• Raggruppare le cifre in gruppi di z elementi
• Convertire separatamente ciascun gruppo
Rappresentazione degli Interi:
“Modulo e Segno”
• N = 0, +1, -1, +2, -2, +3, -3,…
• Come possiamo rappresentare il segno di un numero?
• Idea: Aggiungiamo un ulteriore bit che poniamo a
• 1 se il numero è negativo
• 0 altrimenti
N
10= +14 N
10= -14
N
ms= 01110 N
ms= 11110
Esempio
Linguaggi, Codifica e Rappresentazione dell’Informazione 83/109
Rappresentazione degli Interi:
“Modulo e Segno”
• 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: +610 = 0110ms -610 = 1110ms
• Si rappresentano i valori da -2k-1+1 a 2k-1-1
• Con 4 bit i valori vanno da -7 a +7
• Con 8 bit i valori vanno da -127 a +127
• Osservazione: due rappresentazioni dello 0
• Con 4 bit sono +010 = 0000ms -010 =1000ms
Rappresentazione degli Interi: “Modulo e Segno”: Limiti sui Numeri
Rappresentabili
• 4 bit a disposizione
• Possiamo rappresentare da 0000 a 0111 e da 1000 a 1111, in decimale da 0 a 7 e da 0 a -7
• 5 bit a disposizione
• Possiamo rappresentare da 00000 a 01111 e da 10000 a 11111, in decimale da 0 a 15 e da 0 a -15
•…
• Con k bit a disposizione possiamo rappresentare numeri da 0 a 2k-1 - 1 e da -(2k-1 - 1) a 0
Linguaggi, Codifica e Rappresentazione dell’Informazione 85/109
Numeri Interi in Complemento a Due – 1/5
• Idea: l’interpretazione posizionale viene mantenuta e si modifica soltanto il peso del bit più significativo, invertendolo
• Caratteristiche
• Lo zero ha una rappresentazione unica
• Tutti i numeri che hanno il bit più significativo uguale a 1 sono negativi (come prima)
• È sempre necessario specificare il numero di bit k che si vuole utilizzare per rappresentare un determinato numero
• Si rappresentano i valori da −2k−1 a +2k−1−1
• Con 4 bit i valori vanno da −8 a +7
• Con 8 bit i valori vanno da −128 a +127
Numeri Interi in Complemento a Due – 2/5
• Consideriamo un generico numero binario su 8 bit
• Per stabilire la codifica di un generico numero negativo n < 0, sapendo che necessariamente il bit più significativo va posto a 1, è sufficiente riportare nei restanti bit il numero positivo che, sommato a −27, da il valore n
• Per esempio, proviamo a codificare −37. Essendo un numero negativo, il bit più significativo vale 1:
• Nella parte restante della tabella dovremo inserire quel numero che sommato a −128 da −37
• −128 + x = −37 => x = 128 – 37 = 91
−27 26 25 24 23 22 21 20
1 ? ? ? ? ? ? ?
Linguaggi, Codifica e Rappresentazione dell’Informazione 87/109
Numeri Interi in Complemento a Due – 3/5
• La codifica binaria di 91 è 1011011, che riportato nella tabella precedente fornisce la codifica desiderata:
−27 26 25 24 23 22 21 20
1 1 0 1 1 0 1 1
Numeri Interi in Complemento a Due – 4/5
• Un metodo molto comodo per calcolare la
rappresentazione di −X a partire da quella di +X è il seguente
• Idea: effettuare il complemento di ogni bit di X, poi aggiungere 1
1. Codifica binaria di +610 => 01102 (N.B. ci vogliono 4 bit)
2. Complemento di tutti i bit => 1001C2 (corrisponderebbe a −710) 3. Aggiungere 1 => 1010C2 (che corrisponde a −610)
Linguaggi, Codifica e Rappresentazione dell’Informazione
1 + 1 = 0 col riporto di 1
−23 + 21 = −8 + 2 = −6
Il complemento di 1 è 0
Il complemento di 0 è 1 1001 +
10101 =
89/109
Numeri Interi in Complemento a Due – 5/5
• Estensione del “segno”
• 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
• Esempi
• Rappresentazione di -6 su 4 bit = 1010
• Rappresentazione di -6 su 5 bit = 11010
• Rappresentazione di -6 su 8 bit = 11111010
Codifica dei reali e dei frazionari (1/6)
• Rappresentazione mediante interi
• L’insieme degli interi X può essere adoperato per rappresentare i reali x compresi nel medesi intervallo, approssimando il reale all’intero più prossimo.
X=r(x)=x ± 𝜀 ∶ 0 ≤ 𝜀 ≤ 1 2
• Rappresentazione dei frazionari
• Un numero frazionario rappresenta una classe di reali in modulo minore di 1, e per essi non è significativa la rappresentazione mediante interi.
• Si applica un fattore di scala 𝑀 = 𝑏G, con n il numero di cifre e b la base di rappresentazione. Pertanto la rappresentazione di frazionari non negativi mediante interi diventa:
𝑋 = 𝑥 J 𝑀 ± 𝜀 ∶ 𝑥 𝜖 0,1 , |𝜀| ≤ NOP
Q
• Esempio: 0,500 con M = 103 viene rappresentato come 500, e 0,499 diventa 499.
Linguaggi, Codifica e Rappresentazione dell’Informazione 90/109
Codifica dei reali e dei frazionari (2/6)
• Conversione dei numeri frazionari
• MOLTIPLICHIAMO la parte frazionaria del numero dato per 2;
• continuiamo a moltiplicare il RISULTATO ottenuto per 2 tenendo presente che, se il numero ottenuto è maggiore di 1 sottraiamo 1;
• andiamo avanti fino a quando
• non otteniamo un RISULTATO uguale a UNO oppure
• fino a quando otteniamo un RISULTATO GIA' OTTENUTO IN PRECEDENZA.
Codifica dei reali e dei frazionari (3/6)
• Virgola fissa e mobile
• Dicesi in virgola fissa una rappresentazione dei numeri con n cifre, in cui la posizione della virgola è predeterminata e non va esplicitamente espressa.
• Esempio: il numero .789x10-1 è rappresentato come 078900 in una rappresentazione a 6 cifre.
• Dicesi in virgola mobile (o floating point) una rappresentazione in cui un numero reale è indicato dalla coppia (M,E), dove il primo termine prende il nome di mantissa e il secondo di esponente o caratteristica:
x = 𝑀 J 𝑏S ± 𝜀
• M ed E possono essere rappresentati in modi diversi.
• Se b|M|<1, allora esiste un’altra rappresentazione (bM, E-1) che consente di ottenere una migliore approssimazione. Tra le possibili coppie che rappresentano x bisogna scegliere quella con l’approssimazione più alta, detta normalizzata, ovvero quando 𝑏TU ≤ 𝑀 < 1.
Linguaggi, Codifica e Rappresentazione dell’Informazione 90/109
Codifica dei reali e dei frazionari (4/6)
• Aritmetica in virgola mobile
• Data una coppia (M,E) si può effettuare uno shift a destra della mantissa ed incremento dell’esponente, sempre che E+1 sia rappresentabile:
Float shift right: 𝑀W J 𝑏SX = 𝑀 J 𝑏S = Y
N J 𝑏SZU
• Uno shift a sinistra avviene come segue:
Float shift left: 𝑀W J 𝑏SX = 𝑀 J 𝑏S = (𝑀𝑏) J 𝑏STU
• L’aritmetica in virgola mobile effettua le operazioni operando separatamente su mantissa ed esponente ed effettuando ove necessario operazioni di shift.
• Addizione – Dati due numeri (A, Ea) e (B, Eb), se Ea è maggiore di Eb si effettua lo shift a destra fino ad ottenere Ea = Eb, altrimenti quello a sinistra. Successivamente, si sommano le mantisse.
Esempio: Sommiamo A = (123 ×100) e B = (456 ×10-2), effettuiamo due shift a destra su B fino ad ottenere B = (4,56 ×100), sommiamo le mantisse e il risultato è C = (127,56 ×100).
Codifica dei reali e dei frazionari (5/6)
• Standard IEEE 754
• Per la rappresentazione dei numeri reali in macchina si adopera quella della virgola mobile binaria, come specificato nello standard IEEE 754. Per b=2, tale rappresentazione è la seguente:
x = (−1)[J 𝑀 J 2S
• Essendo M normalizzata, ha il primo bit uguale a 1, ciò consente di ometterlo, così da avere un bit in più per la rappresentazione del numero. Questa tecnica prende il nome di bit nascosto:
se M = UZ]Q , si ha che x = (−1)[J (1 + 𝑓) J 2STU
• così che la rappresentazione è data dalla tripla (s, f, E).
• Per l’esponente si ha la rappresentazione polarizzata: dato il numero di bit Ne, e l’esponente da rappresentare, E quello rappresentato e bias la costante di polarizzazione si ha E = e + bias, con l’intervallo degli esponenti effettivi pari a 𝑒abG ≤ 𝑒 ≤ 𝑒acd.
Linguaggi, Codifica e Rappresentazione dell’Informazione 90/109
Codifica dei reali e dei frazionari (6/6)
• Lo standard presenta vari formati di rappresentazione, tra i quali abbiamo quello a singola precisione su 32 bit e quella a doppia precisione su 64 bit. Nel primo caso, dati gli 8 bit per la rappresentazione dell’esponente, si ha che il suo intervallo di rappresentazione è pari a 0 < e < 255. Pertanto la formula di rappresentazione diventa:
x = (−1)[J 2 eTUQf J (1 + 𝑓)
Y
con f pari alla parte frazionaria della mantissa, rappresentata con la tecnica del bit nascosto:
Esercizi 1
• Scrivere in binario semplice i seguenti numeri in base 10
• 5310
• 21110
• Scrivere in binario semplice su 7 bit il numero 1310
• Scrivere in modulo e segno su 7 bit il numero 1310
• Scrivere in modulo e segno su 7 bit il numero -1310
• Scrivere in modulo e segno su 5 bit il numero 1710
Linguaggi, Codifica e Rappresentazione dell’Informazione 97/109
Soluzione Esercizi
• Scrivere in binario semplice su 7 bit il numero 1310
• 0001101
• Scrivere in modulo e segno su 7 bit il numero 1310
• 0001101
• Scrivere in modulo e segno su 7 bit il numero -1310
• 1001101
• Scrivere in modulo e segno su 5 bit il numero 1710
• 10001, In modulo e segno è -110
• RISPOSTA: Non è possibile. Ho bisogno di almeno 6 bit (010001)
Esercizi svolti
• 53 = 32 + 16 + 4 + 1
= 2
5+ 2
4+ 2
2+ 2
0= 1*2
5+ 1*2
4+ 0*2
3+ 1*2
2+ 0*2
1+ 1*2
0= 110101 in binario
• 211 = 128 + 64 + 16 + 2 + 1
= 2
7+ 2
6+ 2
4+ 2
1+ 2
0= 1*2
7+ 1*2
6+ 0*2
5+ 1*2
4+ 0*2
3+ 0*2
2+ 1*2
1+ 1*2
0= 11010011 in binario
Linguaggi, Codifica e Rappresentazione dell’Informazione 99/109
Esercizi 2
• Scrivere in binario semplice su 7 bit il numero 1110
• Scrivere in modulo e segno su 8 bit il numero 2510
• Scrivere in modulo e segno su 7 bit il numero -1210
• Scrivere in modulo e segno su 5 bit il numero 2010
Esercizi 3
• Un numero reale è rappresentato in virgola mobile secondo lo standard IEEE 754 su 32 bit nel seguente modo:
s = 1
E = 10000111
f = 11011000000000000000000
•Ricavare il corrispondente valore decimale.
•Convertire i seguenti numeri decimali in virgola mobile in singola precisione secondo lo standard IEEE 754:
1. −23.37510 2. −127.2510 3. +131.510 4. −300.2510 5. −3.610
Linguaggi, Codifica e Rappresentazione dell’Informazione 101/109
Esercizi Svolti
• Dato che e = 100001112 = 13510.Si ha N=(−1)s·2(e−127)·1.f=
=−1·2135−127·1.11011 =−1·28·1.11011=−1110110002=−(28+27+26+24+ +23)10=−47210
Esercizi Svolti
• Dato che e = 100001112 = 13510.Si ha N=(−1)s·2(e−127)·1.f=
=−1·2135−127·1.11011 =−1·28·1.11011=−1110110002=−(28+27+26+24+ +23)10=−47210
• N10=−23.37510=−10111.0112=
Linguaggi, Codifica e Rappresentazione dell’Informazione 103/109
Esercizi Svolti
• Dato che e = 100001112 = 13510.Si ha N=(−1)s·2(e−127)·1.f=
=−1·2135−127·1.11011 =−1·28·1.11011=−1110110002=−(28+27+26+24+ +23)10=−47210
• N10=−23.37510=−10111.0112=-(24+22+21+20+2-2+2-3)10=
=-(16+4+2+1+0.25+0.125)10=-23.37510
20 21 22 23 24
2-12-22-3
Esercizi Svolti
• Dato che e = 100001112 = 13510.Si ha N=(−1)s·2(e−127)·1.f=
=−1·2135−127·1.11011 =−1·28·1.11011=−1110110002=−(28+27+26+24+ +23)10=−47210
• N10=−23.37510=−10111.0112=−1.01110112·24 s= − =1, e=4, er= 4 + 127 = 13110= 100000112 m=1.0111011 = 0111011 (con hidden bit).
• N10= 131.510= 10000011.12=1.000001112·27 s= + =0, e=7, er= 127 + 7 = 134 = 100001102 m=1.00000111 = 00000111 (com hidden bit).
Linguaggi, Codifica e Rappresentazione dell’Informazione 105/109
Indovinello: come conta ET?
• Un Extra-Terrestre viene sulla Terra e ci dice che i re di Roma sono 13.
Quante dita ha l’Extra-Terrestre?
• Il 13 deve essere interpretato come una stringa di simboli
• Non conosciamo la base della loro numerazione
• Sappiamo che il loro sistema di numerazione è POSIZIONALE
• Sappiamo che in decimale i re di Roma sono 7
• E se dicesse che i re di Roma sono 111?
Indovinello: come conta ET?
• Un Extra-Terrestre viene sulla Terra e ci dice che i re di Roma sono 13.
Quante dita ha l’Extra-Terrestre?
• Il 13 deve essere interpretato come una stringa di simboli
• Non conosciamo la base della loro numerazione
• Sappiamo che il loro sistema di numerazione è POSIZIONALE
• Sappiamo che in decimale i re di Roma sono 7
13x = 1 * X1 + 3 * X0 = X + 3 = 710 Þ X = 7 – 3 = 4
Þ L’Extra-Terrestre conta in base 4 per cui (sfruttando
l’esperienza del sistema decimale) possiamo dire che ha 4 dita (2 per mano)
Þ L’Extra-Terrestre usa l’alfabeto {0, 1, 2, 3}
Linguaggi, Codifica e Rappresentazione dell’Informazione 107/109