Lezione 2 – A.A. 2016/2017 Prof. Giovanni Acampora Informatica Informatica - A.A. 2016-2017 Lezione 2 – A.A. 2016/2017 Prof. Giovanni Acampora
Codifica binaria dell’informazione Rappresentazioni posizionali Codifica numeri interi Addizione e Overflow Informatica - A.A. 2016-2017
Cos’è l’informatica ? L’informatica è lo studio degli algoritmi: delle loro proprietà formali e matematiche delle loro realizzazioni hardware delle loro realizzazioni linguistiche delle loro applicazioni L’informatica è la scienza della rappresentazione e dell’elaborazione dell’informazione Informatica - A.A. 2016-2017
Che cos’è un algoritmo ? Un insieme ordinato e finito di operazioni non ambigue ed effettivamente calcolabili che, applicate ad un insieme di condizioni iniziali, produce un risultato e termina in una quantità di tempo finita. Informatica - A.A. 2016-2017
Formalizzazione del concetto di algoritmo: perché? L’obiettivo è la costruzione di uno o più mezzi di calcolo in grado di eseguire “operazioni primitive” (ovvero effettivamente calcolabili) . Un mezzo di calcolo che esegue operazioni primitive permette di automatizzare una soluzione di un problema espressa da un algoritmo La soluzione di un problema espressa da un algoritmo costituito da sequenze di operazioni primitive può essere automatizzata Programma: la realizzazione di uno o più algoritmi mediante sequenze di operazioni primitive comprensibili all’esecutore Informatica - A.A. 2016-2017
Informazione+Automatica Informazione: insieme di entità astratte, che raccolgono ‘conoscenza’ es.: un libro, una sinfonia, un quadro, un insieme di dati relativi agli studenti di un corso di laurea Automatica : implica la Rappresentazione dell’informazione..... es: la scrittura un CD che registra un melodia, un insieme di schede che mantengono le informazioni relative agli studenti ....secondo una opportuna codifica es: le convenzioni di rappresentazione dei caratteri, il formato del CD, la struttura dei campi di una scheda studente Informatica - A.A. 2016-2017
La rappresentazione dell’ Informazione Numerica La risoluzione di un problema da parte di una macchina automatica passa attraverso la trasformazione dell’algoritmo in un programma I dati e le istruzioni del programma devono essere codificati (trasformati) in un formato adatto alla memorizzazione e alla elaborazione L’ informazione numerica richiede un supporto fisico Informatica - A.A. 2016-2017
Esempi di Supporto Fisico L’ informazione non è legata al supporto fisico Un supporto fisico può immagazzinare o trasmettere informazione se può assumere diverse configurazioni in base alla combinazione di stati elementari. E’ allora necessario produrre una formalizzazione delle possibili configurazioni ed un codice di traduzione! Informatica - A.A. 2016-2017
Cos’è l’informazione? Finestra Aperta: “Si, stasera esco” Giulietta e Romeo si accordano per comunicare Finestra Aperta: “Si, stasera esco” Finestra Chiusa: “No, stasera non esco” Un dispositivo con 2 stati (aperta/chiusa), 2 messaggi distinguibili Informatica - A.A. 2016-2017
….oops…….e dove ci vediamo? Cos’è l’informazione ? ...mmmh…potrebbe non essere sufficiente Siiiii…esce stasera…. ….oops…….e dove ci vediamo? Informatica - A.A. 2016-2017
Cos’è l’informazione ? “Si, ci vediamo alla chiesa” “Si, ci vediamo al teatro” “No, non esco” “Esco con un altro!!” 2 dispositivi, 4 configurazioni, 4 messaggi distinguibili Informatica - A.A. 2016-2017
Cos’è l’informazione ? In generale, con : m dispositivi n stati diversi per dispositivo nm configurazioni diverse nm messaggi diversi m = 2 finestre m= 3 finestre n = 2 stati (aperta/chiusa) n = 2 stati nm = 4 messaggi nm = 8 messaggi Informatica - A.A. 2016-2017
basta poco per comunicare…. Simboli (Finestre) Codice (Finestre Aperte o Chiuse) Un mezzo di trasmissione (luce) Un trasmettitore che codifica il messaggio Un ricevitore che decodifica il messaggio Informatica - A.A. 2016-2017
Alfabeto e Codice Alfabeto Codice Codificare La formalizzazione puo’ essere esplicitata associando un simbolo predefinito ad ogni stato elementare del supporto fisico. Alfabeto Una successione arbitraria e finita di simboli Codice La relazione che associa al dato una successione finita di simboli Codificare Trasformare un dato in una successione di simboli cui è associato un codice Informatica - A.A. 2016-2017
La Codifica Binaria L’alfabeto piu’ semplice è quello costituito da soli due simboli. Un sistema automatico basato su un alfabeto binario è: Facilmente implementabile su un supporto fisico Sostanze magnetiche con due opposte polarizzazioni Passaggio o meno di corrente Passaggio o meno di luce . . . . Più economico Più affidabile Informatica - A.A. 2016-2017
Es. Codice binario di Morse: . - Codifica solo le lettere maiuscole Il numero di simboli in successione non è fisso per ogni lettera Informatica - A.A. 2016-2017
. . . la domanda sorge spontanea E’ possibile fare meglio del codice di Morse? In altre parole, è possibile con un alfabeto binario codificare numeri, testi, immagini, suoni, eseguire operazioni sui numeri? Codice Posizionale! La risposta è: La rappresentazione numerica dei calcolatori digitali ((digit)inglese = (cifra)italiano ) e’ cruciale !! Con una sola tecnologia è possibile rappresentare informazione numerica e non numerica. Ciò è rivoluzionario. Informatica - A.A. 2016-2017
Sistemi di Numerazione I sistemi di numerazione sono solitamente posizionali. Gli elementi costitutivi sono: Insieme di simboli o cifre base o radice ( = numero di simboli) Quando piu’ cifre sono combinate tra loro, il valore del numero dipende dalla posizione delle cifre (valore posizionale o peso) e dal valore intrinseco della cifra. Informatica - A.A. 2016-2017
Sistema di numerazione decimale È posizionale (unità, decine, centinaia) È costituito da 10 cifre (base = 10) peso 504.31 = 5 • 102 + 0 • 101 + 4 • 100 + 3 • 10-1 + 1 • 10-2 valore intrinseco della cifra Cifra più significativa Informatica - A.A. 2016-2017
Notazione posizionale La notazione posizionale consente di scrivere un numero N di una certa base generica b come una sequenza di cifre. 504.31 = 5 • 102 + 0 • 101 + 4 • 100 + 3 • 10-1 + 1 • 10-2 Generalizzando, data una base b ed un insieme di n+m cifre: an-1 a n-2 a n-3 . . .a 2 a 1 a 0 . a -1 a -2 …. . . a-m-2 a m-2 am-1 a-m Valore decimale del numero N Informatica - A.A. 2016-2017
Sistemi posizionali (208) 10= (11010000)2= (D0)16= (320)8 base Sistema Cifre binario 2 0 1 ottale 8 0 1 2 3 4 5 6 7 decimale 10 0 1 2 3 4 5 6 7 8 9 esadecimale 16 0 1 2 3 4 5 6 7 8 9 A B C D E F (208) 10= (11010000)2= (D0)16= (320)8 base Informatica - A.A. 2016-2017
Sistema non posizionale Il sistema di numerazione romano non e’ posizionale: il valore associato a ciascun simbolo non dipende dalla sua posizione. Es: nei due numeri XII e XIX la seconda cifra, pur avendo la stessa posizione, assume due pesi diversi: XII = 10 + 1 + 1 XIX = 10 + 10 - 1 Informatica - A.A. 2016-2017
Limiti della rappresentazione posizionale Data un sistema di numerazione di base b qual e’ il massimo numero intero positivo rappresentabile in una sequenza di n cifre? Esempio: in 4 cifre il sistema decimale puo’ rappresentare interi positivi da 0 a 9999, ovvero 104 valori diversi, ovvero b4 valori. Formalmente, il numero massimo Nmax rappresentabile con n cifre nella base b e’: Informatica - A.A. 2016-2017
Limiti della rappresentazione posizionale Quante cifre sono invece necessarie per rappresentare un dato numero in una base? Basta invertire la relazione precedente: Informatica - A.A. 2016-2017
Esempi 0 ≤ n ≤ 15 (1001)2 = Es. in una sequenza di 16 cifre il sistema binario può rappresentare 216 = 65536 interi positivi che vanno da 0 a 65535. Es. il numero minimo di cifre per rappresentare il numero 1000 è ceil(log2(1001)) = 10 Informatica - A.A. 2016-2017
Conversione da base 10 a base b Si effettuano divisioni successive del numero dato per la base b; I resti delle singole divisioni, presi alla rovescia, rappresentano le cifre del numero nella base b. Es.: convertire (109)10 in base 2. 7 6 5 4 3 2 1 109 : 2 = 54 + 1 54 : 2 = 27 + 0 27 : 2 = 13 + 1 13 : 2 = 6 + 1 6 : 2 = 3 + 0 3 : 2 = 1 + 1 1 : 2 = 0 + 1 1 (109)10 = (1 1 0 1 1 0 1)2 Informatica - A.A. 2016-2017
Conversione da base 10 a base b Es.: convertire (201)10 in base 2, 5 e 16. Informatica - A.A. 2016-2017
Es.: convertire (107)10 in base 2, 5 e 16. Informatica - A.A. 2016-2017
La conversione e’ semplice se N = 2 ed M = 8 o 16 poiche’: In generale conviene fare la conversione da base N a base 10 e successivamente la conversione da base 10 a base M. La conversione e’ semplice se N = 2 ed M = 8 o 16 poiche’: Ogni cifra ottale (0. . . 7) e’ esprimibile con 3 cifre binarie; Ogni cifra esadecimale (0. . .F) e’ esprimibile con 4 cifre binarie. Informatica - A.A. 2016-2017
Il computer e l’informazione Il sistema posizionale binario permette la codifica dell’informazione numerica attraverso l’uso di solo due cifre. Con opportune convenzioni si possono rappresentare anche i numeri relativi interi e frazionari, i caratteri, le immagini ed i suoni. A causa della maggiore semplicità implementativa ed affidabilità su un supporto fisico, i calcolatori digitali trattano solo informazione codificata in forma binaria. L’unità elementare d’informazione manipolata e memorizzata da un computer è detta bit (binary digit), e può assumere i valori 1 e 0. Informatica - A.A. 2016-2017
Byte sequenza di 8 bit (Es. 01001011) Word da 16 a 64 bit a seconda dell’architettura; convenzionalmente 16bit Longword convenzionalmente 32 bit 1018 260 = 10246 E Exa 1015 250 = 10245 P Peta 1012 240 = 10244 T Tera 109 230 = 10243 G Giga 106 220 = 10242 M Mega 103 210 = 1024 K Kilo Approssimazione Valore Sigla Multiplo Informatica - A.A. 2016-2017
Codifica dei numeri interi Nell’ aritmetica binaria vi sono 4 tecniche di organizzazione dei numeri interi con segno. Modulo e segno; Complemento alla base diminuita; Complemento alla base; Eccesso M (o bias); Informatica - A.A. 2016-2017
Rappresentazione in Modulo e Segno Si adotta la convenzione di usare il bit piu’ significativo come rappresentante del segno. S modulo 0 : segno + 1 : segno - L’intervallo di valori rappresentabili su n bit è: Su16 bit, i valori rappresentati vanno da -32767 a 32767. Informatica - A.A. 2016-2017
Rappresentazione in Modulo e Segno Ci sono due inconvenienti principali in questa rappresentazione. Lo 0 ha due diverse rappresentazioni La somma di numeri di segno diverso porta ad un risultato scorretto Informatica - A.A. 2016-2017
Rappresentazione in modulo e segno Per superare questi due inconvenienti sarebbe necessario realizzare sistemi distinti per le operazioni di somma e sottrazione. Esercizio: rappresentare in modulo e segno su 4 bit il massimo e il minimo valore, le due rappresentazioni dello zero, ed i numeri +5 e –3. È possibile trovare una rappresentazione che eviti questo problema? Ovvero, possiamo provare a trovare un algoritmo di codifica che permetta ad una unica macchina, il “sommatore”, di eseguire le somme algebriche? Informatica - A.A. 2016-2017
Per b = 2, il complemento e’ noto come complemento a 2. Complemento alla base Dato un numero Nb, il complemento alla base C(Nb) e’ dato da: n e’ il numero di cifre usato per rappresentare N. C(Nb) = bn - N Per b = 2, il complemento e’ noto come complemento a 2. Informatica - A.A. 2016-2017
Complemento alla base C(Nb) = bn - N N = bn - C(Nb) Esempio: b = 10, n = 4, N = 30 C(3010) = bn – N = 104 - 30 = 9970 Esempio: b = 10, n = 5, C(N10) = 68950 N10 = 105 - C(N10) = 105 – 68950 = 31050 Informatica - A.A. 2016-2017
Complemento alla base Esempio: b = 2, n = 4, N2 = 01112 = 710 C(710) = bn – N = 24 - 7 = 9 = 10012 Esempio: b = 2, n = 4, N10 = 310= 00112 C(310) = bn – N = 24 - 3 = 1310 = 11012 In pratica, il complemento a 2 si ottiene invertendo tutti i bit e aggiungendo 1. N2 = 01112 = 710 C(01112) = N + 1 = 1000 + 1 = 10012 Informatica - A.A. 2016-2017
Rappresentazione in complemento a 2 L’idea è di usare il complemento alla base di un numero positivo per rappresentare il suo opposto. Per rappresentare un numero negativo: si inizia con la rappresentazione binaria del suo valore assoluto; si invertono tutti i bit; si aggiunge 1. Esempio: N10 = -3510 3510 = 0010 00112 -3510 = 1101 11012 Questo metodo risolve il problema del doppio zero e delle somme algebriche. Informatica - A.A. 2016-2017
Rappresentazione in complemento a 2 Esempio: quanto vale 1101 11012 in decimale? 1. E’ un numero negativo poiche’ il bit piu’ significativo e’ 1 2. Per ottenere il modulo si invertono i bit e si somma 1 1101 1101 -> 0010 0010 +1 = 0010 0011 = 3510 (1101 11012)2 = -3510 Informatica - A.A. 2016-2017
Rappresentazione in complemento a 2 Esempio: quanto vale 10112 in decimale? 1. E’ un numero negativo 2. Per ottenere il modulo si invertono i bit e si somma 1 1011 -> 0100 +1 = 0101 = 510 (1011)2 = -510 Informatica - A.A. 2016-2017
Rappresentazione in complemento a 2 Qual’è il complemento a 2 dello zero? 0000 0000 1111 1111 + 1 0000 0000 L’intervallo dei valori rappresentabili su n bit in complemento a 2 è ora: in quanto viene recuperato il valore “sprecato” per il secondo zero. Ad esempio, i valori rappresentabili su 8 bit vanno da –128 a 127. Informatica - A.A. 2016-2017
Rappresentazione in complemento a 2 Solo i numeri negativi sono rappresentati in complemento alla base. Per gli interi positivi vale la codifica del solo modulo Notiamo che: i numeri negativi hanno sempre il bit di segno a 1 mentre nelle rappresentazioni in modulo e segno il bit più significativo è nella pratica sempre dedicato a rappresentare il segno, nel complemento a 2 esso può contribuire anche a determinare il valore assoluto del numero rappresentato. Es. -12810 = 1000 00002 Informatica - A.A. 2016-2017
Rappresentazione in complemento a 2 Per sommare numeri rappresentati in complemento a due si devono trattare i numeri come interi senza segno, ovvero si considera il bit di segno come qualunque altro bit del numero, e non si tiene conto dell’eventuale riporto della posizione piu’ a sinistra. -710 = 110012 +1010 = 010102 1 1 0 0 1 + 0 1 0 1 0 = Non viene considerato 310 1 0 0 0 1 1 Informatica - A.A. 2016-2017
Rappresentazione in complemento a 2 Per la sottrazione ci si riconduce al caso della somma trasformando la differenza nella somma. Es. Calcolare -710 -410. Operiamo come se l’operazione fosse -710 + ( -4)10 -410 = 00100 + 1 = 11011 + 1 = 11100 1 1 0 0 1 + 1 1 1 0 0 = Non considerato -1110 1 1 0 1 0 1 Informatica - A.A. 2016-2017
Rappresentazione in complemento a 2 Fissato il numero di bit, è fissato l’intervallo dei valori rappresentabili, ogni volta che il risultato di un’operazione esce da questo intervallo si verifica una condizione di overflow. Nella rappresentazione in complemento a 2 l’overflow può verificarsi se contemporaneamente: i due addendi hanno segno concorde e il segno del risultato è diverso dal segno dei due addendi Informatica - A.A. 2016-2017
Rappresentazione in complemento a 2 Es. Calcolare –1210 – 610. 1 0 1 0 0 + 1 1 0 1 0 = Non considerato 1 0 1 1 1 0 Il bit del segno e’ diverso da quello degli addendi, il che e’ impossibile (overflow). Informatica - A.A. 2016-2017
Metodo del bias Si sottintende di sottrarre sempre il numero 2(n-1) da ogni numero rappresentato in modulo e segno. A 8 bit il numero da sottrarre (bias) è 27 = 128. +(8)10 ( 1 0 0 0 1 0 0 0 )2 (8+128) 10 = (136)10 -(8)10 ( 0 1 1 1 1 0 0 0 )2 (-8+128) 10 = (120)10 Il metodo del bias preserva l’ordinamento. Per effettuare somme e sottrazioni occorre ogni volta sottrarre o aggiungere il bias Informatica - A.A. 2016-2017
Riassumendo Informatica - A.A. 2016-2017
Esercizi - conversione base 10 ->base b Convertire i seguenti numeri nelle basi specificate: 345 in base 2 [R. 101011001] 345 in base 8 [R. 531] 345 in base 16 [R.159] 595 in base 5 [R. 4340] 231 in base 2 [R. 11100111] Informatica - A.A. 2016-2017
Addizione e sottrazione Queste operazioni si effettuano secondo le regole del sistema decimale, ovvero si sommano (sottraggono) le cifre di pari peso. 1 1 1 1 0 + 1 0 1 0 0 1 0 1 1 0 1 1 0 1 1 0 0 1 0 0 1 0 1 + 1 0 carry = 1 1 1 borrow = 1 Informatica - A.A. 2016-2017
Carry e Borrow Come nelle operazioni su numeri decimali, si puo’ avere un riporto o un prestito sul bit di peso immediatamente superiore. Nella numerazione binaria questi sono detti rispettivamente carry e borrow. + 1 0 carry = 1 1 1 borrow = 1 Informatica - A.A. 2016-2017
Overflow Qualunque sia il numero di bit usati per rappresentare un numero in un calcolatore esso permetterà la rappresentazione di interi in un range FINITO. I calcolatori non operano sui numeri naturali ma su loro sottoinsiemi finiti ! Somma e differenza di interi non sono sempre definite in tali insiemi; ad esempio se ho: carry sul bit piu’ significativo (Most Significant Bit); borrow dal bit piu’ significativo (MSB); il numero di bit fissato non e’ sufficiente per rappresentare il risultato. Questa condizione si chiama di overflow. Informatica - A.A. 2016-2017
Esempi di overflow (9)10 = (1 0 0 1)2 (7)10 = (0 1 1 1)2 1 0 0 1 + 0 1 1 1 Il risultato non e’ rappresentabile su 4 bit in entrambi i casi. 1 0 0 0 0 (4)10 = (0 1 0 0)2 (7)10 = (0 1 1 1)2 (1) 0 1 0 0 0 1 1 1 1 1 0 1 Informatica - A.A. 2016-2017