Nessun titolo diapositiva - Dipartimento di Ingegneria dell
by user
Comments
Transcript
Nessun titolo diapositiva - Dipartimento di Ingegneria dell
Fondamenti di Informatica Monica Bianchini Dipartimento di Ingegneria dell’Informazione ENIAC (1946 ca.) E-mail: [email protected] 1 Anno accademico 2010-2011 Sommario • Introduzione il calcolo automatico dalla preistoria ai giorni nostri • L’algebra di Boole da Analisi Matematica della Logica (1847) al progetto degli elaboratori digitali • Sistemi di numerazione UNIVAC (1951) da additivi a posizionali, da decimale a binario, a esadecimale: l’alfabeto dell’elaboratore • La rappresentazione dei dati e l’aritmetica degli elaboratori dai bit ai numeri, ai testi, alle immagini, alla musica, ai video in digitale 2 Anno accademico 2010-2011 Introduzione 3 Anno accademico 2010-2011 Cenni storici 1 Wilhelm Schickard (1592-1635) • La presenza “invasiva” dell’informatica nella vita di tutti i giorni è un fenomeno relativamente recente; non recente è invece la necessità di avere a disposizione strumenti e metodi per contare rapidamente, elaborare dati, “calcolare” Le prime testimonianze di strumenti per contare risalgono a 30.000 anni fa I primi esempi di algoritmi procedure di calcolo “automatico” sono stati scoperti in Mesopotamia su tavolette babilonesi risalenti al 18001600 a.C. • Il sogno di costruire macchine capaci di effettuare calcoli automatici affonda le radici nel pensiero filosofico del ‘600: Macchina moltiplicatrice (1624) Wilhelm Schickard introdusse la prima macchina moltiplicatrice dotata di accumulatori cilindrici 4 Anno accademico 2010-2011 Cenni storici 2 Blaise Pascal (1623-1662) Gottfried Leibnitz (1646-1716) • Pascal e Leibnitz non solo affrontarono il problema, già studiato da Cartesio, di automatizzare il ragionamento logicomatematico, ma si cimentarono anche nella realizzazione di semplici macchine per calcolare (capaci di effettuare somme e sottrazioni) Macchina addizionatrice la Pascalina (B. Pascal) Macchina computazionale (G. Leibnitz) 5 Anno accademico 2010-2011 Cenni storici 3 Charles Babbage (1791-1871) • La macchina alle differenze, concepita da Babbage nel 1833, rappresenta il primo esempio di macchina programmabile di utilità generale • In seguito, lo stesso Babbage progetta la macchina analitica (mai realizzata, troppo complessa e critica la sua costruzione per le tecnologie meccaniche dell’epoca) La prima programmatrice nella storia dell’informatica è Ada Augusta Byron, contessa di Lovelace Macchina alle differenze: modello ricostruito presso il Museo della Scienza di Londra seguendo il progetto del 1849 6 Anno accademico 2010-2011 Cenni storici 4 Herman Hollerith (1860-1929) • Fu Herman Hollerith, nel 1890, a sviluppare la macchina a schede perforate, per compiere le statistiche del censimento decennale degli Stati Uniti I dati venivano immessi su schede di cartone opportunamente perforate, le stesse schede che sono state usate fino a due decenni or sono Le schede venivano successivamente “contate” da una sorta di pantografo che permetteva diversi tipi di elaborazioni (totali, medie, statistiche, etc.) Si impiegarono due anni e mezzo ad analizzare i dati (contro i sette anni del censimento del 1880), nonostante l’incremento di popolazione da 50 a 63 milioni Anno accademico 2010-2011 Census Tabulator (1890) 7 Cenni storici 5 • Successivamente la macchina a schede perforate venne utilizzata con successo per i censimenti in Austria, Norvegia e Russia, tanto che Hollerith decise di fondare una società: la Computing Tabulating Recording Company che, nel 1923, divenne l’International Business Machine, o IBM • Nel 1932, il tedesco Konrad Zuse realizza una macchina elettromeccanica in grado di eseguire calcoli con controllo programmato, ed introduce il sistema di numerazione binario (la cui algebra era stata definita da Leibnitz e da Boole) Anno accademico 2010-2011 Konrad Zuse (1910-1995) Il calcolatore Z1 (1939) 8 Cenni storici 6 Alan Turing (1912-1954) • Durante la seconda guerra mondiale, fioriscono i progetti di elaboratori da utilizzarsi per scopi bellici Enigma, realizzata dai tedeschi (A. Scherbius) per codificare le comunicazioni militari Red Purple, di costruzione giapponese Computer Colossus, costruito dagli inglesi per la decifrazione dei messaggi tedeschi, alla cui progettazione e realizzazione collaborò Alan Turing, permise la vittoria angloamericana sull’Atlantico La macchina Enigma 9 Anno accademico 2010-2011 Cenni storici 7 • Con l’invenzione del tubo a vuoto (1904), del transistor (1947) e, infine, dei circuiti integrati (1969), l’evoluzione dei computer divenne inarrestabile • Finora la potenza di calcolo degli elaboratori si è decuplicata ogni 56 anni (…ma non può durare, almeno con le tecnologie in uso) 10 Anno accademico 2010-2011 Cenni storici 8 John Von Neumann (1903-1957) • La costruzione dei primi calcolatori risale all’inizio degli anni ‘40, grazie alla tecnologia elettronica; i primi esemplari venivano programmati mediante connessioni elettriche e commutatori (ENIAC, Mark I) • Il nome di Von Neumann è legato invece ai primi calcolatori a programma memorizzato realizzati alla fine degli anni ‘40 (EDSAC, Whirlwind, IAS, UNIVAC) Per la prima volta, vige il principio di unitarietà di rappresentazione di dati e istruzioni, che vengono codificati, all’interno dell’elaboratore, in maniera indistinguibile • La diffusione dei calcolatori a livello mondiale è avvenuta nei decenni ‘60 e ‘70 11 Anno accademico 2010-2011 Cenni storici 9 ENIAC (1946) Whirlwind (1949) Mark I (1948) IAS (1952) EDSAC (1949) UNIVAC (1952) 12 Anno accademico 2010-2011 Cenni storici 10 • Tuttavia, l’esplosione dell’informatica come fenomeno di massa è datata 1981, anno in cui l’IBM introdusse un tipo particolare di elaboratore: il Personal Computer (PC) • La particolarità dei PC consisteva nell’essere “assemblati” con componenti facilmente reperibili sul mercato (e quindi a basso costo) Possibilità per qualsiasi casa produttrice di costruire “cloni” • Attualmente i PC, o meglio il loro componente fondamentale il microprocessore è utilizzato in tutti i settori applicativi (non solo per elaborare dati): Telefoni cellulari, ricevitori satellitari digitali, GPS Bancomat e carte di credito Lavatrici e forni a microonde Computer di bordo e ABS ... Anno accademico 2010-2011 13 Cenni storici 11 • L’esigenza di realizzare sistemi di elaborazione dotati di più processori operanti in parallelo è stata sentita fin dalla preistoria dell’informatica In una relazione dello scienziato, generale e uomo politico italiano Luigi Menabrea, datata 1842, sulla macchina analitica di Babbage, si fa riferimento alla possibilità di usare più macchine dello stesso tipo in parallelo, per accelerare calcoli lunghi e ripetitivi • Solo la riduzione dei costi dell’hardware ha consentito, verso la fine degli anni ‘60, l’effettiva costruzione dei primi supercalcolatori, come le macchine CDC6600 e Illiac e, successivamente, il Cray e le macchine vettoriali • A partire dagli anni ‘90, gli ulteriori sviluppi della microelettronica hanno permesso la realizzazione di calcolatori a parallelismo massiccio e a “grana fine”, caratterizzati dall’interconnessione di decine di migliaia di unità di elaborazione elementari: le reti neurali, capaci di “simulare” il comportamento del cervello umano, sulla base degli studi di McCulloch e Pitts (1943) Anno accademico 2010-2011 14 Cenni storici 12 Cray 1 (1976) Illiac (1955) Cray XE6 (2010) CDC 6600 (1963) Portatile e Palmare (oggi) PC IBM (1981) 15 Anno accademico 2010-2011 Frasi celebri ed altro… • • • • • • • • “Penso che ci sia mercato nel mondo per non più di cinque computer.” (Thomas Watson, Presidente di IBM, 1943) “Ho girato in lungo e in largo questo paese e ho parlato con le migliori menti e posso assicurarvi che questa moda dell’elaborazione automatica è un capriccio che non vedrà la fine dell’anno.” (Editor di libri scientifici di Prentice Hall, 1947) “Una unità di calcolo sull’ENIAC è dotata di 18.000 tubi elettronici a vuoto e pesa 30 tonnellate, ma è possibile che in futuro i computer abbiano soltanto 1000 tubi e pesino soltanto una tonnellata e mezzo.” (Popular Mechanics, 1949) “Abbiamo un computer qui a Cambridge, ce n’è uno a Manchester e uno al laboratorio nazionale di fisica. Immagino che sarebbe giusto averne uno anche in Scozia, ma non di più.” (Douglas Hartree, fisico inglese, 1951) “Ma... a che serve?” (Un ingegnere della Advanced Computing Systems, Divisione dell’IBM, commentando il microchip, 1965). Nel 1976, il New York Times pubblicò un libro dal titolo La scienza nel ventesimo secolo, nel quale il calcolatore veniva menzionato una sola volta e indirettamente, in relazione al calcolo delle orbite dei pianeti “Non c’è ragione perché qualcuno possa volere un computer a casa sua.” (Ken Olson, fondatore di Digital, 1977) “640 Kbytes should be enough for anybody.” (Bill Gates, 1981) Anno accademico 2010-2011 16 Che cos’è l’informatica 1 • Informatica fusione delle parole informazione e automatica l’insieme delle discipline che studiano gli strumenti per l’elaborazione automatica dell’informazione e i metodi per un loro uso corretto ed efficace • L’informatica è la scienza della dell’elaborazione dell’informazione rappresentazione e L’accento sull’ “informazione” fornisce una spiegazione del perché l’informatica sia ormai parte integrante di molte attività umane: laddove deve essere gestita dell’informazione, l’informatica è un valido strumento di supporto Il termine “scienza” sottolinea il fatto che, nell’informatica, l’elaborazione dell’informazione avviene in maniera sistematica e rigorosa, e pertanto può essere automatizzata Anno accademico 2010-2011 17 Che cos’è l’informatica 2 • L’informatica non è la scienza dei calcolatori elettronici: il calcolatore è lo strumento che la rende “operativa” • L’elaboratore (computer, calcolatore) è un’apparecchiatura digitale, elettronica ed automatica capace di effettuare trasformazioni sui dati: Digitale: i dati sono rappresentati mediante un alfabeto finito, costituito da cifre, digit, che ne permette il trattamento mediante regole matematiche Elettronica: realizzazione tramite tecnologie di tipo elettronico Automatica: capacità di eseguire operazioni senza interventi esterni una successione di • “La disumanità del computer sta nel fatto che, una volta programmato e messo in funzione, si comporta in maniera perfettamente onesta.” (Isaac Asimov) Anno accademico 2010-2011 18 L’architettura di Von Neumann • La capacità dell’elaboratore di eseguire successioni di operazioni in modo automatico è determinata dalla presenza di un dispositivo di memoria Nella memoria sono registrati i dati e... ...le operazioni da eseguire su di essi (nell’ordine secondo cui devono essere eseguite): il programma, la “ricetta” usata dall’elaboratore per svolgere il proprio compito • Il programma viene interpretato dall’unità di controllo Modello di Von Neumann 19 Anno accademico 2010-2011 La macchina universale • Programma: sequenza di operazioni atte a predisporre l’elaboratore alla soluzione di una determinata classe di problemi Il programma è la descrizione di un algoritmo in una forma comprensibile all’elaboratore • Algoritmo: sequenza finita di istruzioni attraverso le quali un operatore umano è capace di risolvere ogni problema di una data classe; non è direttamente eseguibile dall’elaboratore • L’elaboratore è una macchina universale: cambiando il programma residente in memoria, è in grado di risolvere problemi di natura diversa (una classe di problemi per ogni programma) 20 Anno accademico 2010-2011 Ancora sull’informatica… • L’informatica è lo studio sistematico degli algoritmi che descrivono e trasformano l’informazione: la loro teoria, analisi, progetto, efficienza, realizzazione (ACM, Association for Computing Machinery) • Nota È possibile svolgere concettualmente un’attività di tipo informatico senza l’ausilio del calcolatore, per esempio nel progettare ed applicare regole precise per svolgere operazioni aritmetiche con carta e penna; l’elaboratore, tuttavia, è uno strumento di calcolo potente, che permette la gestione di quantità di informazione altrimenti intrattabili 21 Anno accademico 2010-2011 L’algebra di Boole 22 Anno accademico 2010-2011 L’algebra di Boole 1 George Boole (1810-1864) • Contempla due costanti 0 e 1 (falso e vero) • Corrispondono a due stati che si escludono a vicenda • Possono descrivere lo stato di apertura o chiusura di un generico contatto o di un circuito a più contatti 0 • Sui valori booleani AND, OR, NOT 1 si definiscono le operazioni 23 Anno accademico 2010-2011 L’algebra di Boole 2 • Le operazioni AND e OR sono operazioni binarie, l’operazione NOT è unaria • Nella valutazione delle espressioni booleane esiste una relazione di precedenza fra gli operatori NOT, AND e OR, nell’ordine in cui sono stati elencati • Gli operatori dell’algebra booleana possono essere rappresentati in vari modi Spesso sono descritti semplicemente come AND, OR e NOT Nella descrizione dei circuiti appaiono sotto forma di porte logiche In matematica si usano per OR e per AND, mentre si rappresenta il NOT con una barra posta sopra l’espressione che viene negata 24 Anno accademico 2010-2011 L’operazione di OR • Si definisce l’operazione di somma logica (OR): il valore della somma logica è il simbolo 1 se il valore di almeno uno degli operandi è il simbolo 1 00 01 10 11 0 1 1 1 0 0 0 1 0+0 0+1 1 1 0 1 1+0 1+1 25 Anno accademico 2010-2011 L’operazione di AND • Si definisce l’operazione di prodotto logico (AND): il valore del prodotto logico è il simbolo 1 se il valore di tutti gli operandi è il simbolo 1 00 01 10 11 0 0 0 1 0 0 0 00 01 0 1 10 1 1 1 11 26 Anno accademico 2010-2011 La negazione NOT • Si definisce l’operatore di negazione (NOT): l’operatore inverte il valore della costante su cui opera 0 1 1 0 • Dalla definizione… 0 0 1 1 27 Anno accademico 2010-2011 Variabili binarie • Una variabile binaria indipendente può assumere uno dei due valori 0 e 1 0 x 1 • Date n variabili binarie indipendenti, la loro somma logica (OR) è 1 se almeno una xi vale 1 x 1 + x 2 + …+ x n = 0 se x1= x2= …= xn = 0 28 Anno accademico 2010-2011 AND e NOT con variabili binarie • Date n variabili binarie indipendenti, il loro prodotto logico (AND) è 0 se almeno una xi vale 0 x1 x2 … xn = 1 se x1= x2= …= xn = 1 • La negazione di una variabile x è x=0 x=1 se se x=1 x=0 • L’elemento x NOT(x) viene detto complemento di x; il complemento è unico Anno accademico 2010-2011 29 Alcune identità • Si verificano le seguenti identità: x + 1 1 x + 0 x x + x x x1x x00 xxx Legge dell’idempotenza 0 è l’elemento neutro per l’operazione di OR; 1 è l’elemento neutro per l’AND Gli elementi neutri sono unici x1 x • Ad esempio… x 1 x 0 01 0 Anno accademico 2010-2011 11 1 OK! 30 Altre proprietà • Per gli operatori AND e OR valgono le seguenti proprietà: commutativa x1+x2 x2+x1 x1x2 x2 x1 associativa x1+x2+x3 x1+(x2+x3) x1x2 x3 x1(x2x3) distributiva del prodotto rispetto alla somma x1 x2 + x1x3 x1(x2+x3) • Per l’operatore NOT si provano le seguenti identità: x + x 1 x x 0 x x 31 Anno accademico 2010-2011 Configurazione delle variabili • Date n variabili binarie indipendenti x1, x2,…, xn, queste possono assumere 2n configurazioni distinte Ad esempio per n=3 si hanno 8 configurazioni 000 001 010 011 100 101 110 111 x1x2x3 • Una configurazione specifica è individuata univocamente da un AND (a valore 1) di tutte le variabili, dove quelle corrispondenti ai valori 0 compaiono negate 010 x1x2x3 32 Anno accademico 2010-2011 Funzioni logiche • Una variabile y è una funzione delle n variabili indipendenti x1, x2,…, xn, se esiste un criterio che fa corrispondere in modo univoco ad ognuna delle 2n configurazioni delle xi un valore di y y = F(x1,x2,…,xn) • Una rappresentazione esplicita di una funzione è la tabella di verità, in cui si elencano tutte le possibili combinazioni di x1, x2, …, xn, con associato il valore di y x1 y = x1+x2 Anno accademico 2010-2011 0 0 1 1 x2 0 1 0 1 y 0 1 1 1 33 Una tabella di verità • Date tre variabili booleane (A,B,C), si scriva la funzione F che vale 1 quando solo due di esse hanno valore 1 A B C F 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 0 0 1 0 1 1 0 0 1 0 1 0 1 0 1 Si può scrivere la funzione come somma logica delle configurazioni corrispondenti agli 1 F(A,B,C) ABC ABC ABC Forma canonica: somma di prodotti (OR di AND) tutte le funzioni logiche si possono scrivere in questa forma Anno accademico 2010-2011 34 Un esempio: lo XOR 1 • La funzione XOR verifica la disuguaglianza di due variabili x1 0 0 1 1 x2 XOR 0 1 0 1 0 1 1 0 • L’espressione come somma di prodotti è quindi... XOR = x1x2 + x1x2 35 Anno accademico 2010-2011 Un esempio: lo XOR 2 Porta logica per XOR 36 Anno accademico 2010-2011 Esempi • Legge dell’assorbimento x1 x1x2 x1 • Leggi di De Morgan (x1x2) x1x2 (x1x2) x1x2 • Dalle leggi di De Morgan si evince che la scelta delle funzioni OR, AND e NOT, come funzioni primitive, è ridondante L’operazione logica AND può essere espressa in funzione delle operazioni OR e NOT; in modo analogo, l’operazione OR può essere espressa tramite AND e NOT • Le relazioni stabilite sono generalmente applicate nelle trasformazioni di funzioni booleane in altre equivalenti, ma di più facile realizzazione circuitale 37 Anno accademico 2010-2011 Un esempio di circuito logico y1 = F(B,C,D) = (BC)D 38 Anno accademico 2010-2011 Un circuito con due interruttori • I due interruttori corrispondono a due variabili (A,B) a valori booleani le variabili assumono i due valori 0 e 1 che corrispondono alle due posizioni dell’interruttore A A 0 0 1 1 B L A A B A=0 B=0 A A 0 0 1 1 B B A=1 B=0 Anno accademico 2010-2011 L A A 0 0 1 1 B L B A B L A=0 B=1 0 0 1 1 0 1 0 1 1 0 0 1 0 0 1 1 B B A=1 B=1 L L ABAB 39 Un esercizio • Progettare un circuito per accendere e spegnere una lampada da uno qualsiasi di tre interruttori indipendenti L = 0 Cambia lo stato di un interruttore qualsiasi Anno accademico 2010-2011 0 0 0 1 1 1 A 0 B 0 C 0 L = 1 0 0 0 1 1 1 A 0 B 1 C 0 40 Analisi delle combinazioni • Si considera cosa accade a partire dalla configurazione di partenza, cambiando lo stato di un interruttore per volta L = 0 L = 1 L = 0 A B C A B C 0 0 1 0 1 1 L = 1 L = 0 A B C A B C A B C 0 0 0 0 1 0 1 0 1 A B C 1 1 1 L = 0 L = 1 Anno accademico 2010-2011 L = 1 A B C A B C 1 0 0 1 1 0 41 Scrittura della funzione logica • Dalle otto combinazioni si ottiene la tabella di verità della funzione logica A 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 C 0 1 0 1 0 1 0 1 L 0 1 1 0 1 0 0 1 • Si può scrivere la funzione L come somma logica di prodotti logici L ABC ABC ABC ABC Anno accademico 2010-2011 42 Come collegare gli interruttori • Si può manipolare l’espressione di L usando la proprietà distributiva dell’AND rispetto all’OR L = ABC ABC ABC ABC L = A (BC BC) A (BC BC) B C A B C A B C B C 1 0 0 Anno accademico 2010-2011 B C A B C A B C B C 1 0 1 43 Esercizi • Esercizio 1 Siano a2, a1, b2, b1 i bit che rappresentano due numeri interi positivi (Aa2a1 e Bb2b1). Sia r una variabile booleana che vale 1 se e solo A è maggioreuguale a B (AB). Ad esempio, quando A11 e B10, allora a21, a11, b21, b10 e r1. Si scriva la forma canonica che definisce r come funzione di a2, a1, b2, b1. • Esercizio 2 I signori A, B, C e D fanno parte di un consiglio di amministrazione. Sapendo che hanno a disposizione le seguenti quote di possesso azionario A40%, B25%, C20%, D15%, formalizzare tramite tabella di verità (con successiva estrazione della forma canonica) la funzione booleana che decide quando il consiglio di amministrazione è in grado di approvare una mozione. 44 Anno accademico 2010-2011 Esercizi (continua) • Esercizio 3 Il direttore di una squadra di calcio vuol comprare 4 giocatori dal costo di 2, 5, 6 e 8 milioni di euro, ma ha a disposizione solo 8 milioni. Siano a2, a5, a6, a8 variabili booleane che valgono 1 se e solo se si acquistano, rispettivamente, i giocatori da 2, 5, 6, 8 milioni. Sia r una variabile che è vera se e solo se l’insieme di giocatori che si decide di comprare non supera la cifra disponibile. Ad esempio, se a21, a51, a60, a80, allora r1. Si scriva la forma canonica che definisce r come funzione delle variabili a2, a5, a 6 , a8 . 45 Anno accademico 2010-2011 Sistemi di numerazione 46 Anno accademico 2010-2011 Ancora un po’ di preistoria… 1 • I primi esempi di utilizzo di sistemi di numerazione risalgono al neolitico, ovvero a circa 50.000 anni fa • In epoca preistorica, le più utilizzate furono le basi 2, 5, 10, 20, 12, e 60 Mentre le basi 2, 5, 10 e 20 sono suggerite dalla fisiologia umana, 12 e 60 sembrano suggerite da scopi utilitaristici: 12 è divisibile per 1, 2, 3, 4, 6 e 12 mentre 60 per 1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30 e 60 La base 12 è ancora utilizzata in alcune misure di tempo, 60 nella misurazione di angoli e tempo 47 Anno accademico 2010-2011 Ancora un po’ di preistoria… 2 • Da notare che il 7 non compare mai nelle basi di numerazione e, in effetti, ebbe significati particolari, anche religiosi, presso i popoli antichi Il 7 esprime infatti la globalità, l’universalità, l’equilibrio perfetto Era legato al compiersi del ciclo lunare Presso i Babilonesi erano ritenuti festivi, e consacrati al culto, i giorni di ogni mese multipli di 7 48 Anno accademico 2010-2011 E di storia… 1 • Tra le prime testimonianze certe dell’utilizzo di concetti aritmetici avanzati vi sono le tavole numeriche babilonesi, elenchi di numeri utilizzati per calcoli astronomici e di agrimensura, risalenti al X secolo a.C. • Tuttavia, nelle culture dell’antica Mesopotamia, esistevano tabelle per le addizioni e le sottrazioni già durante il regno di Sargon I, intorno al 2350 a.C. 49 Anno accademico 2010-2011 E di storia… 2 • Il documento più significativo dell’antico Egitto è il papiro di Ahmes o Ahmose, dal nome dello scriba che lo compose nel 1650 a.C. • Lo stesso Ahmes sostiene inoltre che il suo materiale è tratto da un documento anteriore, e fa risalire l’originale ad Imhotep, medico e architetto del faraone Djoser della III dinastia, e quindi al 2650 a.C. circa Imhotep è ritenuto l’architetto della grande piramide a gradoni di Saqqara, la cui enorme base quadrata ha lati perfetti al centimetro! 50 Anno accademico 2010-2011 I numeri in Mesopotamia 1 • Un antichissimo strumento utilizzato un po’ ovunque per aiutarsi nei conteggi è costituito da semplici sassolini • Non a caso la parola “calcolo” deriva dal latino calculus, che significa appunto sassolino • Appartengono alla civiltà dei Sumeri varie tavolette che contengono i più antichi segni numerali usati dall’uomo e risalgono al 35003000 a.C. • Inizialmente, però, i Sumeri avevano semplicemente perfezionato il metodo dei sassolini, costruendone di particolari, in terracotta, di forme e dimensioni diverse, ciascuno con un proprio valore 51 Anno accademico 2010-2011 I numeri in Mesopotamia 2 • I simboli fondamentali usati nella numerazione sumera corrispondono ai numeri 1, 10, 60, 600, 3600, 36000 • I valori dei sassolini sono crescenti secondo una scala che procede per 10 e per 6 alternativamente 1 10 60 600 3600 36000 52 Anno accademico 2010-2011 I numeri in Mesopotamia 3 • Il sistema di rappresentazione dei valori attraverso i “calculi” è un sistema additivo • Come in ogni sistema di rappresentazione additivo, l’operazione di addizione risulta particolarmente semplice • Per addizionare due o più valori basterà infatti mettere insieme i simboli uguali di ciascuno degli addendi: l’addizione è compiuta nel gesto stesso dell’unione dei sassolini • L’insieme dei sassolini indicherà complessivamente il valore risultato dell’addizione 53 Anno accademico 2010-2011 I numeri in Mesopotamia 4 • Successivamente i Sumeri, per motivi di praticità, realizzarono gli stessi simboli su tavolette di argilla, utilizzando bastoncini di diverse dimensioni… • …cominciarono cioè a “scrivere” i numeri 54 Anno accademico 2010-2011 I numeri in Mesopotamia 5 Tavoletta pittografica con un conto di 33 misure d’olio (Godin Tepe, Iran, 3100 a.C.) 55 Anno accademico 2010-2011 I numeri in Mesopotamia 6 • Un ruolo speciale nell’aritmetica sumera spetta dunque ai numeri 10 e 60: caratteristica ereditata poi dal sistema babilonese • Vari secoli dopo, attorno al XIX secolo a.C., a partire dall’antica numerazione sumera, gli scienziati Babilonesi crearono infatti un sistema di scrittura basato sui soli due simboli: cuneo verticale 1 parentesi uncinata 10 56 Anno accademico 2010-2011 I numeri in Mesopotamia 7 • Si rappresentavano i numeri da 1 a 59 • Per i numeri successivi, si ha la prima testimonianza dell’uso di una notazione posizionale Non si introducevano infatti altri simboli, ma si affiancavano gruppi di cunei per indicare le successive potenze del 60 Si tratta dunque di un sistema di numerazione posizionale (come il nostro, ma) in base 60 57 Anno accademico 2010-2011 I numeri in Mesopotamia 8 58 Anno accademico 2010-2011 I numeri in Mesopotamia 9 Tavoletta di argilla (19001600 a.C.) contenente un elenco di terne pitagoriche (misure dei lati di un triangolo rettangolo) Anno accademico 2010-2011 59 I numeri in Mesopotamia 10 • Ad esempio: 7322 • Il sistema di spaziatura consentiva di risolvere le ambiguità di interpretazione dei raggruppamenti • Ai tempi di Alessandro Magno era però invalso anche l’uso di un simbolo (due cunei obliqui) per indicare un posto vuoto; questo simbolo svolgeva alcune funzioni del nostro zero, ma non tutte: veniva usato fra colonne e mai per indicare colonne vuote alla fine della sequenza 60 Anno accademico 2010-2011 I numeri nell’antico Egitto 1 • La civiltà degli Egizi ci ha lasciato alcune fra le più antiche tracce di matematica scritta • I primi numeri scritti si individuano infatti su monumenti e stele databili all’inizio del III millennio a.C. • Si tratta di iscrizioni che impiegano il sistema geroglifico, la scrittura pittografica egizia 61 Anno accademico 2010-2011 I numeri nell’antico Egitto 2 • Nel sistema geroglifico vengono riservati ai numeri sette simboli diversi per rappresentare le potenze del 10, da 1 a 106 • I geroglifici utilizzati erano: Pastoia per bestiame o giogo Rotolo di fune Bastoncino Ninfea o fiore di loto Uomo a braccia levate, simbolo del dio Heh 62 Dito Anno accademico 2010-2011 Girino o rana I numeri nell’antico Egitto 3 • I numeri venivano formati raggruppando i simboli, generalmente posti in ordine dal più piccolo al più grande, da sinistra a destra (o viceversa) • Il sistema di numerazione non è, tuttavia, posizionale L’ordine dei simboli che definiscono le potenze del 10 può venire alterato senza cambiare il valore del numero rappresentato L’ordine è una sorta di convenzione linguistica, senza significato matematico 63 Anno accademico 2010-2011 I numeri nell’antico Egitto 4 131.200 64 Anno accademico 2010-2011 I numeri nell’antico Egitto 5 • Esempi di operazioni Addizione: si effettua sommando i simboli uguali e, qualora si superi il valore 10, sostituendo i dieci simboli con il simbolo opportuno (quello subito “superiore” nella gerarchia) Moltiplicazione: utilizza un sistema che sottintende la base 2 si scompone il moltiplicatore in potenze di 2, poi si raddoppia il moltiplicando tante volte quante necessario, e infine si esegue la somma 65 Anno accademico 2010-2011 I numeri nell’antico Egitto 6 • Esempio: 713 13 91 66 Anno accademico 2010-2011 I numeri nell’antica Grecia 1 • Nella civiltà greca classica sono noti due principali sistemi di numerazione Il primo, più antico, è noto come attico ed è per molti aspetti simile a quello in uso presso i Romani; utilizzava infatti accanto ai simboli fondamentali per l’1 e le potenze di 10 fino a 10000, un simbolo speciale per il 5, che combinato con i precedenti, dava altri simboli anche per 50, 500, 5000, 50000 Compaiono testimonianze di questo sistema dal V al I secolo a.C. ma, a partire dal III secolo, si diffonde anche il sistema detto ionico o alfabetico 67 Anno accademico 2010-2011 I numeri nell’antica Grecia 2 • Il sistema ionico si serve di ventisette simboli alfabetici (alcuni dei quali arcaici e non più usati nella Grecia classica) per indicare le unità da 1 a 9, le decine da 10 a 90, le centinaia da 100 a 900 • Si usavano poi nuovamente le prime nove lettere precedute da un apice in basso per indicare i multipli di 1000, e per esprimere numeri ancora più grandi si ricorreva al simbolo M (iniziale di miriade) che indicava la moltiplicazione per 10000 del numero che seguiva Sistema di numerazione decimale additivo 68 Anno accademico 2010-2011 I numeri nell’antica Grecia 3 • Ad esempio: 67.766.776 69 Anno accademico 2010-2011 I numeri nell’antica Roma 1 • Nel sistema di numerazione romano, a base decimale, ci si serviva, come è noto, anche di simboli speciali per indicare 5, 50, 500 • Alcune antiche epigrafi inducono a ritenere che i segni usati fossero inizialmente segni speciali, forse di origine etrusca, che solo successivamente furono identificati con le lettere I, V, X, L, C, D, M I V X 1 L 5 10 50 C D M 100 500 1000 70 Anno accademico 2010-2011 I numeri nell’antica Roma 2 • La scrittura dei numeri additivamente i segni avveniva combinando • Per agevolare scrittura e lettura si diffuse più tardi un sistema sottrattivo già utilizzato, ad esempio, dagli Assiri (che ha traccia anche nelle forme verbali come ad esempio “undeviginti”, stessa cosa di “decem et novem”) Un simbolo posto alla sinistra di un simbolo di quantità maggiore viene sottratto, così IX e VIIII indicano entrambi il numero 9 • Ancora in epoca tarda, un segno che prese l’aspetto di una linea orizzontale posta sopra le lettere serviva per indicarne la moltiplicazione per 1000 Anno accademico 2010-2011 71 La storia continua… • Per molte centinaia di anni ancora (con l’unica eccezione dei Babilonesi) gli uomini hanno continuato ad utilizzare sistemi di numerazione additivi Più semplici da usare dato che la somma “si fa da sé” Poco adatti a rappresentare numeri grandi (che presuppongono l’uso di tanti simboli posti gli uni accanto agli altri) 72 Anno accademico 2010-2011 Dall’India… il sistema decimale 1 • La civiltà indiana, più antica delle civiltà classiche, è già documentata dal 3000 a.C. • Sebbene l’uso della matematica dovesse essere ben sviluppato già in epoca arcaica, i primi testi che ci sono giunti risalgono al V secolo d.C. • Non è però ancora chiaro dove e quando si sia sviluppato il sistema di notazione decimale posizionale che, in seguito, attraverso gli Arabi, si è diffuso in Europa 73 Anno accademico 2010-2011 Dall’India… il sistema decimale 2 • Tale sistema viene utilizzato nell’opera del matematico indiano vissuto attorno al 500 d.C. Aryabhata, la più antica che ci è pervenuta (se si eccettuano frammenti sparsi di matematici anteriori), dove però manca ancora l’uso di un simbolo zero • Testimonianze di scritture in forma posizionale si registrano anche prima del manuale di Aryabhata, mentre per avere datazioni sicure di forme complete in cui compare anche il simbolo zero occorre arrivare al IX secolo d.C. 74 Anno accademico 2010-2011 Dall’India… il sistema decimale 3 • L’idea di usare un numero limitato di simboli a cui dare valore diverso a seconda della posizione occupata può essere stata, secondo alcuni studiosi, sviluppata dagli Indiani per conoscenza diretta o ereditata dai Greci del sistema sessagesimale babilonese • Gli Indiani avrebbero allora iniziato ad utilizzare solamente i primi 9 simboli del loro sistema decimale in caratteri Brahmi, in uso dal III secolo a.C. 75 Anno accademico 2010-2011 Dall’India… il sistema decimale 4 • I simboli assumono forme diverse a seconda delle zone e dei periodi, ma sono comunque quelli che gli Arabi più tardi utilizzarono e che, dalla forma araba, sono passati in Europa, fino alla forma definitiva resa uniforme dalla stampa nel XV secolo 76 Anno accademico 2010-2011 Sistemi di numerazione posizionali • Sistemi di numerazione posizionali: La base del sistema di numerazione Le cifre del sistema di numerazione Il numero è scritto specificando le cifre in ordine ed il suo valore dipende dalla posizione relativa delle cifre Esempio: Il sistema decimale (Base 10) Cifre : 0 1 2 3 4 5 6 7 8 9 5641 = 5·103 + 6·102 + 4·101 + 1·100 Posizione: 3 2 1 0 77 Anno accademico 2010-2011 Sistemi in base B • La base definisce il numero di cifre diverse nel sistema di numerazione • La cifra di minor valore è sempre lo 0; le altre sono, nell’ordine, 1,2,…,B1; se B>10 occorre introdurre B10 simboli in aggiunta alle cifre decimali Un numero intero N si rappresenta con la scrittura (cncn1…c2c1c0)B N = cnBn+cn1Bn1+...+c2B2+c1B1+c0B0 cn è la cifra più significativa, c0 la meno significativa Un numero frazionario N’ si rappresenta come (0,c1c2…cn)B N’ = c1B1+c2B2+...+cnBn 78 Anno accademico 2010-2011 Numeri interi senza segno • Con n cifre in base B si rappresentano tutti i numeri interi positivi da 0 a Bn1 (Bn numeri distinti) Esempio: base 10 2 cifre: da 0 a 1021 = 99 Esempio: base 2 2 cifre: da 0 a 221 = 3 00 01 02 …. 98 99 102 = 100 valori 00 01 10 11 22 = 4 valori 79 Anno accademico 2010-2011 Il sistema binario (B2) • La base 2 è la più piccola per un sistema di numerazione Cifre: 0 1 bit (binary digit) Esempi: Forma polinomia (101101)2 = 125 + 024 + 123 + 122 + 021 + 120 = 32 + 0 + 8 + 4 + 0 + 1 = (45)10 (0,0101)2 = 021 + 122 + 023 + 124 = 0 + 0,25 + 0 + 0,0625 = (0,3125)10 (11,101)2 = 121 + 120 + 121 + 022 + 123 = 2 + 1 + 0,5 + 0 + 0,125 = (3,625)10 80 Anno accademico 2010-2011 Dal bit al byte • Un byte è un insieme di 8 bit (un numero binario ad 8 cifre) b7b6b5b4b3b2b1b0 • Con un byte si rappresentano i numeri interi fra 0 e 281 255 00000000 00000001 00000010 00000011 ……………. 11111110 11111111 28 = 256 valori distinti • È l’elemento base con cui si rappresentano i dati nei calcolatori • Si utilizzano sempre dimensioni multiple (di potenze del 2) del byte: 2 byte (16 bit), 4 byte (32 bit), 8 byte (64 bit)… 81 Anno accademico 2010-2011 Dal byte al kilobyte • Potenze del 2 24 = 16 28 = 256 216 = 65536 210 = 1024 (K=Kilo) 220 = 1048576 (M=Mega) 230 = 1073741824 (G=Giga) • Cosa sono KB (Kilobyte), MB (Megabyte), GB (Gigabyte)? 1 1 1 1 1 KB = 210 byte = 1024 byte MB = 220 byte = 1048576 byte GB = 230 byte = 1073741824 byte TB = 240 byte = 1099511627776 byte (Terabyte) PB = 250 byte = 1125899906842624 byte (Petabyte) Anno accademico 2010-2011 82 Da decimale a binario Numeri interi • Si divide ripetutamente il numero intero decimale per 2 fino ad ottenere un quoziente nullo; le cifre del numero binario sono i resti delle divisioni; la cifra più significativa è l’ultimo resto Esempio: convertire in binario (43)10 43 : 2 = 21 21 : 2 = 10 10 : 2 = 5 5:2= 2 2:2= 1 1:2= 0 +1 +1 +0 +1 +0 +1 resti bit più significativo (43)10 = (101011)2 83 Anno accademico 2010-2011 Da decimale a binario Numeri razionali • Si moltiplica ripetutamente il numero frazionario decimale per 2, fino ad ottenere una parte decimale nulla o, dato che la condizione potrebbe non verificarsi mai, per un numero prefissato di volte; le cifre del numero binario sono le parti intere dei prodotti successivi; la cifra più significativa è il risultato della prima moltiplicazione Esempio: convertire in binario (0,21875)10 e (0,45)10 0,21875 0,4375 0,875 0,75 0,5 2 = 0 ,4375 2 = 0,875 2 = 1,75 2 = 1,5 2 = 1,0 (0,21875)10 = (0,00111)2 Anno accademico 2010-2011 0,45 0,90 0,80 0,60 0,20 2 2 2 2 2 = = = = = 0,9 1,8 1,6 1,2 0,4 etc. (0,45)10 (0,01110)2 84 Da binario a decimale • Oltre all’espansione esplicita in potenze del 2 forma polinomia… (101011)2 = 125 + 024 + 123 + 022 + 121 + 120 = (43)10 • …si può operare nel modo seguente: si raddoppia il bit più significativo e si aggiunge al secondo bit; si raddoppia la somma e si aggiunge al terzo bit… si continua fino al bit meno significativo Esempio: convertire in decimale (101011)2 bit più significativo 1x2= 2x2= 5x2= 10 x 2 = 21 x 2 = 2 + 0 4 + 1 10 + 0 20 + 1 42 + 1 = 43 (101011)2 = (43)10 Anno accademico 2010-2011 85 Esercizi • Si verifichino le seguenti corrispondenze: (110010)2(50)10 (1110101)2(102)10 (1111)2(17)10 (11011)2(27)10 (100001)2(39)10 86 Anno accademico 2010-2011 Sistema esadecimale • La base 16 è molto usata in campo informatico Cifre: 0 1 2 3 4 5 6 7 8 9 A B C D E F La corrispondenza in decimale delle cifre oltre il 9 è Esempio: A = (10)10 B = (11)10 C = (12)10 D = (13)10 E = (14)10 F = (15)10 (3A2F)16 = 3163 + 10162 + 2161 + 15160 = 34096 + 10256 + 216 + 15 = (14895)10 87 Anno accademico 2010-2011 Da binario a esadecimale • Una cifra esadecimale corrisponde a 4 bit 0 corrisponde a 4 bit a 0 0000 0 0001 0010 0011 0100 0101 0110 0111 1 2 3 4 5 6 7 1000 1001 1010 1011 1100 1101 1110 1111 8 9 A B C D E F F corrisponde a 4 bit a 1 • Si possono rappresentare numeri binari lunghi con poche cifre (1/4) • La conversione da binario ad esadecimale è immediata, raggruppando le cifre binarie in gruppi di 4 (da destra) e sostituendole con le cifre esadecimali secondo la tabella precedente 88 Anno accademico 2010-2011 Dal bit all’hex • Un numero binario di 4n bit corrisponde a un numero esadecimale di n cifre Esempio: 32 bit corrispondono a 8 cifre esadecimali 1101 1001 0001 1011 0100 0011 0111 1111 D 9 1 B 4 3 7 F (D91B437F)16 Esempio: 16 bit corrispondono a 4 cifre esadecimali 0000 0000 1111 1111 0 0 F F (00FF)16 89 Anno accademico 2010-2011 Da esadecimale a binario • La conversione da esadecimale a binario si ottiene espandendo ciascuna cifra con i 4 bit corrispondenti Esempio: convertire in binario il numero esadecimale 0x0c8f Notazione usata in molti linguaggi di programmazione (es. C e Java) per rappresentare numeri esadecimali 0 c 8 f 0000 1100 1000 1111 Il numero binario ha 4 4=16 bit 90 Anno accademico 2010-2011 Esempi 1 • In qualsiasi base, l’essere il sistema di numerazione posizionale impone che combinazioni diverse di cifre uguali rappresentino numeri diversi; ad esempio: • (319)10 (193)10 • (152)6 (512)6, infatti... (152)6=162+561+260=36+30+2=(68)10 (512)6=562+161+260=180+6+2=(188)10 • Numeri che hanno identica rappresentazione, in basi diverse, hanno valori diversi: (234)10 (234)8 , infatti... (234)8 = 282 + 381 + 480 = 264 + 38 + 4 = 128+24+4 = (156)10 Osservazione: più piccola è la base, minore è il valore del numero rappresentato dalla stessa sequenza di cifre 91 Anno accademico 2010-2011 Esempi 2 • La notazione posizionale si applica anche per il calcolo del valore dei numeri frazionari, infatti... (0,872)10 = 8101 + 7102 + 2103 = 8/10 + 7/100 + 2/1000 = 0,8 + 0,07 + 0,002 • Quante cifre occorreranno per rappresentare il numero decimale 36 in base 2? Sappiamo che con n cifre si rappresentano i numeri da 0 a 2n1, quindi... per n=1 (con una cifra) si rappresentano 0...211 0,1 per n=2: 0...221 0...3 per n=3: 0...231 0...7 Effettivamente possiamo verificare che (100100)2=(36)10, infatti... per n=4: 0...241 0...15 100100=125+024+023+122+021+020 per n=5: 0...251 0...31 per n=6: 0...261 0...63 Anno accademico 2010-2011 = 32 + 4 = 36 con 6 cifre necessarie per la codifica del numero in base 2 92 Esempi 3 • Quesito: Per quale base B risulterà vera l’uguaglianza 17 + 41 + 22 = 102 ? Se i numeri sono rappresentati in base B, sappiamo che: (17)B = 1B1+7B0 = B+7 (41)B = 4B1+1B0 = 4B+1 (22)B = 2B1+2B0 = 2B+2 (102)B = 1B2+0B1+2B0 = B2+2 da cui... B+7+4B+1+2B+2 = 7B+10 = B2+2 Si ottiene un’equazione di 2° grado: B2 7B 8 = 0 Risolvendo: = 49+32 = 81 (7+9)/2 = 8 È la soluzione! (79)/2 = 1 Non può essere una base B = (7 )/2 = Anno accademico 2010-2011 93 La rappresentazione dei dati e l’aritmetica degli elaboratori 94 Anno accademico 2010-2011 Numeri interi positivi • I numeri interi positivi sono rappresentati all’interno dell’elaboratore utilizzando un multiplo del byte (generalmente 8 byte) • Se l’intero si rappresenta con un numero di cifre minore, vengono aggiunti zeri nelle cifre più significative Esempio: 12 viene rappresentato in un byte come… 00001100 95 Anno accademico 2010-2011 Numeri con segno • Per rappresentare numeri con segno, occorre utilizzare un bit per definire il segno del numero • Si possono usare tre tecniche di codifica Modulo e segno Complemento a 2 Complemento a 1 96 Anno accademico 2010-2011 Modulo e segno • Il bit più significativo rappresenta il segno: 0 per i numeri positivi, 1 per quelli negativi • Esiste uno zero positivo (00…0) e uno zero negativo (10…0) • Se si utilizzano n bit si rappresentano tutti i numeri compresi fra (2n11) e 2n11 Esempio: con 4 bit si rappresentano i numeri fra 7 ((231)) e 7 (231) 0000 0001 0010 0011 positivi 0100 0101 0110 0111 Anno accademico 2010-2011 0 1 2 3 4 5 6 7 1000 1001 1010 1011 1100 1101 1110 1111 0 1 2 3 negativi 4 5 6 7 97 Complemento a 2 • Il complemento a 2 di un numero binario (N)2 a n cifre è il numero { 2n(N)2 = 10……0(N)2 • Il complemento a 2 si calcola… n zeri Effettuando il complemento a 1 del numero di partenza (negazione di ogni cifra): si trasforma ogni 0 in 1 e ogni 1 in 0 Aggiungendo 1 al numero ottenuto • Oppure: a partire da destra, lasciando invariate tutte le cifre fino al primo 1 compreso, quindi invertendo il valore delle rimanenti 01010111 10101000 10101001 Anno accademico 2010-2011 complemento a 1 1 100000000 011111111 01010111 10101000 10101001 28 281 N 281N 281N1 98 Interi in complemento a 2 • I numeri positivi sono rappresentati (come) in modulo e segno • I numeri negativi sono rappresentati in complemento a 2 la cifra più significativa ha sempre valore 1 • Lo zero è rappresentato come numero positivo (con una sequenza di n zeri) • Il campo dei numeri rappresentabili varia da 2n1 a 2n11 Esempio: numeri a 4 cifre Anno accademico 2010-2011 0000 0001 0010 0011 0100 0101 0110 0111 0 1 2 3 4 5 6 7 1000 1001 1010 1011 1100 1101 1110 1111 8 7 6 5 4 3 2 1 Nota: 0111 7 1000 8 99 Interi a 16 bit • Numeri interi rappresentati su 16 bit in complemento a 2: Il numero intero positivo più grande è 2151=(32767)10 0111 1111 1111 1111 0x 7 F F F Il numero intero negativo più piccolo è 215=(32768)10 1000 0000 0000 0000 0x 8 0 0 0 0111 1111 1111 1111 + 1 1000 0000 0000 0000 Il numero intero –1 è rappresentato come 1111 1111 1111 1111 0x F F F F 0000 0000 0000 0000 + 1 0000 0000 0000 0001 100 Anno accademico 2010-2011 Addizione binaria • Le regole per l’addizione di due bit sono 0 0 1 1 + + + + 0 1 0 1 = = = = 0 1 1 0 con riporto di 1 • L’ultima regola è… (1)2(1)2 (10)2 … (112)10 !! Esempio riporti 1 11 1 01011011+ 01011010 10110101 91+ 90 181 101 Anno accademico 2010-2011 Sottrazione binaria 1 • Le regole per la sottrazione di due bit sono 00 10 11 10 1 Esempio =0 =1 =0 = 1 con prestito di 1 dalla cifra precedente a sinistra 0 10 11001 101 10100 25 5 20 • La sottrazione può divenire complicata: quando si ha una richiesta sulla cifra precedente a sinistra, che è uno 0, l’operazione si propaga a sinistra fino alla prima cifra ad 1 del sottraendo 102 Anno accademico 2010-2011 Sottrazione binaria 2 • Utilizzando la rappresentazione in complemento a 2, addizione e sottrazione sono trattate come un’unica operazione { N1N2 = N1(2nN2)2n si trascura il bit n 1 complemento a 2 di N2: rappresentazione di (N2) Si calcola il complemento a 2 di N2 Si somma N1 con il complemento a 2 di N2 Si trascura il bit più significativo del risultato Esempio: (010001)2(000101)2 = (17)10(5)10 010001 111011 1001100 Anno accademico 2010-2011 (12)10 103 Rappresentazioni in complemento • Sono utili perché l’operazione di somma algebrica può essere realizzata non curandosi del bit di segno • In complemento a 1 (più semplice da calcolare)… Zero ha due rappresentazioni: 00000000 e 10000000 La somma bit a bit funziona “quasi sempre” 00110 10101 = 11011 (6) (10) (4) 11001 11010 = 10011 (6) (5) (12) • In complemento a 2… Zero ha una sola rappresentazione La somma bit a bit funziona sempre Anno accademico 2010-2011 104 Overflow • L’overflow si ha quando il risultato di un’operazione non è rappresentabile correttamente con n bit Esempio: 5 bit [16,15] 14 10 24 01110 01010 11000 8 8 10 18 11000 10110 101110 14 • Per evitare l’overflow occorre aumentare il numero di bit utilizzati per rappresentare gli operandi • C’è overflow se c’è riporto al di fuori del bit di segno e non sul bit di segno, o se c’è riporto sul bit di segno, ma non al di fuori 105 Anno accademico 2010-2011 Moltiplicazione binaria • Le regole per la moltiplicazione di due bit sono 0 0 1 1 Esempio 0 1 0 1 = = = = 0 0 0 1 1100111 101 1100111 0000000 1100111 1000000011 2n corrisponde ad • Moltiplicare per coda al moltiplicando 51 Anno accademico 2010-2011 aggiungere n zeri in 110011 10000 = 1100110000 16 = 24 816 106 Divisione binaria • La divisione binaria di A per B viene calcolata in modo analogo alla divisione decimale, così da ottenere un quoziente Q ed un resto R, tali che A BQ R ( • La divisione binaria si compone di una serie di sottrazioni 110^ 1^ 1^ 0 101 101 111 1010 54 = 510 + 4 1 01 1 00 per 2n equivale • Dividere a scorrere il numero a destra di n posizioni; le cifre scartate costituiscono il resto 110011 10000 = 11 con resto 11 Anno accademico 2010-2011 51:16 = 3 con resto 3 107 Esempio • Quesito: Data una base B, si consideri il numero x(C5C4C3C2C1C0)B, dove le singole cifre valgono: C5 B1, C4 B1, C3 B1, C2 0, C1 0, C0 0 Qual è la rappresentazione in base B del risultato dell’espressione (x/B3)1? Dividere per B3, che per qualsiasi base si rappresenta come 1000, equivale a “shiftare” il numero di tre cifre a sinistra Rimangono quindi le tre cifre più significative, tutte uguali a B1 Sommando 1, a causa dei riporti, si ottiene quindi come risultato dell’espressione 1000B3, qualsiasi sia il valore della base B Anno accademico 2010-2011 108 Esercizi • Esercizio 1 Assumendo che un elaboratore rappresenti i numeri interi con segno su quattro bit in complemento a 2, si calcolino entrambi i membri della seguente identità: (AC)B (AB)C, con A7, B5, C7. Si ottiene lo stesso risultato dal calcolo dei due membri? Discutere le motivazioni della risposta. • Esercizio 2 Si determini, se esiste, la base b di un sistema di numerazione tale che (842)b (1202)10 Si determini, se esiste, la base b 16 di un sistema di numerazione tale che (725)b (626)b (224)10 109 Anno accademico 2010-2011 Numeri in virgola mobile • La rappresentazione dei numeri in virgola mobile è in relazione con la notazione scientifica (es. 1.2102120) • La IEEE ha previsto uno rappresentazione in virgola mobile standard per la singola precisione (32 bit = 4 byte) doppia precisione (64 bit = 8 byte) quadrupla precisione (128 bit = 16 byte) Singola precisione 31 23 22 0 8 bit Segno Il valore è Esponente (o Caratteristica) 23 bit Mantissa Eccesso: vale 2t11, se t è il numero di cifre (1)S 1.M2E127 se E0 (1)S 0.M2126 se E=0 Anno accademico 2010-2011 riservate alla caratteristica rappresentazione “interna” dell’esponente sempre positiva 110 Singola precisione • Il numero più grande rappresentabile è 2128(2223)21296.811038 0 11111111 11111111111111111111111 2255127 1.111111111111111111111111 • Il più piccolo numero positivo è 212622321491.41045 0 00000000 00000000000000000000001 2126 0.00000000000000000000001 0.25 0.5 32 numeri • In totale si0 01111101 rappresentano 2 distinti, metà positivi, metà 00000000000000000000000 0 01111110 00000000000000000000000 negativi • Circa metà dei numeri sono compresi fra 1 e 1 (E127<0) 223 valori 223 valori 0 0.25 0.5 Anno accademico 2010-2011 1 223 valori 223 valori 2 4 111 L’aritmetica floatingpoint: Addizione • Metodo per il calcolo dell’addizione 1. Se le caratteristiche dei numeri sono diverse, si considera il numero con caratteristica minore e… 1.1 Si trasla la mantissa di un posto a destra Si incrementa la caratteristica di 1, fino a quando le due caratteristiche sono uguali, e corrispondono alla caratteristica del risultato La mantissa del risultato è ottenuta dalla somma delle due mantisse 1.2 2. 3. Se l’addizione comporta un riporto oltre la cifra più significativa, si trasla la mantissa del risultato a destra di un posto, il riporto nel bit più significativo, e si incrementa la caratteristica di 1 Anno accademico 2010-2011 112 Un esempio di addizione • Supponiamo che per la rappresentazione floating–point vengano utilizzati otto bit, di cui uno per il segno, tre per la caratteristica e quattro per la mantissa 3.25 0 1 1 0 1 1 0 1 s E4 N = (1) 0.M2 1.125 1 0 0 1 0 1 0 1 • La caratteristica del secondo operando è più piccola di una unità, quindi la mantissa deve scorrere di una posizione a destra 1001 0100 • La caratteristica del risultato è 110 e la mantissa è 1101+ 0100 = 10001; la caratteristica deve essere aumentata di 1 e portata a 111, e la mantissa del risultato traslata a destra di una posizione: 0 1 1 Anno accademico 2010-2011 1 1 0 0 0 Codifica il numero 4 (dato che la caratteristica si rappresenta in eccesso a 4), ma il risultato corretto è 4.375: errore di troncamento 113 L’aritmetica floatingpoint: Moltiplicazione • Metodo per il calcolo della moltiplicazione 1. Si moltiplicano le due mantisse 2. Si addizionano le due caratteristiche 3. Si trasla a sinistra il prodotto delle due mantisse fino ad ottenere un 1 come cifra più significativa; si diminuisce la caratteristica di 1 per ogni traslazione eseguita 4. Si tronca la mantissa al numero di bit utilizzati nella rappresentazione; la mantissa del prodotto è il risultato del troncamento 5. Si sottrae l’eccesso alla somma delle ottenendo la caratteristica del prodotto caratteristiche, 114 Anno accademico 2010-2011 Un esempio di moltiplicazione • Supponiamo che per la rappresentazione floating–point vengano utilizzati otto bit, di cui uno per il segno, tre per la caratteristica e quattro per la mantissa N = (1)s0.M2E4 0 0 1 0 1 1 0 1 0 1 0 1 1 0 0 1 0.203125 1.125 • Moltiplicando le mantisse e sommando le caratteristiche si ottiene: M=01110101 E=111 • La mantissa del risultato deve essere traslata di un posto a sinistra, e la somma delle caratteristiche deve essere decrementata di 1; infine la mantissa deve essere troncata alle 4 cifre significative e l’eccesso (100) sottratto alla caratteristica: 0 0 1 Anno accademico 2010-2011 0 1 1 1 0 Codifica il numero 0.21875, ma il risultato corretto è 0.228515625: errore di troncamento 115 L’aritmetica degli elaboratori 1 • L’aritmetica “interna” degli elaboratori notevolmente dall’aritmetica classica differisce • Sebbene le stesse operazioni possano essere realizzate secondo modalità diverse su elaboratori diversi, si riscontrano alcune caratteristiche comuni: Rappresentazione binaria dei numeri Rango finito dei numeri rappresentabili Precisione finita dei numeri Operazioni espresse in termini di operazioni più semplici 116 Anno accademico 2010-2011 L’aritmetica degli elaboratori 2 • Rango finito dei numeri rappresentabili Qualunque sia la codifica utilizzata, esistono sempre il più grande ed il più piccolo numero rappresentabile I limiti inferiore e superiore del rango di rappresentazione dipendono sia dal tipo di codifica, sia dal numero di bit utilizzati Se il risultato di un’operazione non appartiene al rango dei numeri rappresentabili, si dice che si è verificato un overflow (un underflow, più precisamente, se il risultato è più piccolo del più piccolo numero rappresentabile) 117 Anno accademico 2010-2011 L’aritmetica degli elaboratori 3 • Precisione finita dei numeri La precisione della rappresentazione di un numero frazionario è una misura di quanto essa corrisponda al numero che deve essere rappresentato Negli elaboratori, i numeri frazionari sono rappresentati in virgola mobile (floating–point), utilizzando un numero finito di bit È plausibile che un numero reale non ammetta una rappresentazione finita, quindi dovrà essere codificato in maniera approssimata Negli elaboratori si rappresentano soltanto numeri razionali (fino ad una data precisione) Anno accademico 2010-2011 118 L’aritmetica degli elaboratori 4 • Operazioni espresse in termini di operazioni più semplici La maggior parte degli elaboratori non possiede circuiti in grado di eseguire direttamente tutte le operazioni: La sottrazione si realizza per mezzo di una complementazione e di un’addizione La moltiplicazione si realizza per mezzo di una successione di addizioni e di shift (traslazioni) La divisione si realizza per mezzo di una successione di shift e sottrazioni Le operazioni più semplici sono eseguite direttamente da appositi circuiti (in hardware); le operazioni più complesse sono realizzate mediante l’esecuzione di successioni di operazioni più semplici, sotto il controllo di programmi appositamente realizzati, e generalmente memorizzati permanentemente (in firmware) Anno accademico 2010-2011 119 Codifica dei caratteri alfabetici 1 • Oltre ai numeri, molte applicazioni elaborano caratteri (simboli) informatiche • Gli elaboratori elettronici trattano numeri Si codificano i caratteri e i simboli per mezzo di numeri • Per poter scambiare dati (testi) in modo corretto, occorre definire uno standard di codifica A 01000001 3 00110011 $ 00100100 120 Anno accademico 2010-2011 Codifica dei caratteri alfabetici 2 • Ovvero… quando si scambiano dati, deve essere noto il tipo di codifica utilizzato • La codifica deve prevedere le lettere dell’alfabeto, le cifre numeriche, i simboli, la punteggiatura, i caratteri speciali per certe lingue (æ, ã, ë, è,…) • Lo standard di codifica più diffuso è il codice ASCII, per American Standard Code for Information Interchange 121 Anno accademico 2010-2011 Codifica ASCII • Definisce una tabella di corrispondenza fra ciascun carattere e un codice a 7 bit (128 caratteri) • I caratteri, in genere, sono rappresentati con 1 byte (8 bit); i caratteri con il bit più significativo a 1 (quelli con codice dal 128 al 255) rappresentano un’estensione della codifica • La tabella comprende sia caratteri di controllo (codici da 0 a 31) che caratteri stampabili • I caratteri alfabetici/numerici hanno codici ordinati secondo l’ordine alfabetico/numerico Anno accademico 2010-2011 0 48 1 49 ……. 8 56 9 57 A 65 B 66 ……. Y 89 Z 90 a 97 b 98 ……. y 121 z 122 cifre maiuscole minuscole 122 Caratteri di controllo ASCII • I caratteri di controllo (codice da 0 a 31) hanno funzioni speciali • Si ottengono o con tasti specifici o con una sequenza Ctrlcarattere Ctrl ^@ ^A Dec 0 1 Hex 0 1 Code NULL SOH ^G ^H ^I ^J ^K ^L ^M …… ^Z ^[ …… ^_ 7 8 9 10 11 12 13 … 26 27 … 31 7 8 9 A B C D … 1A 1B … 1F BEL BS HT LF VT FF CR …… EOF ESC …… US …… … … …… Nota carattere nullo partenza blocco ………………… beep backspace tabulazione orizzontale line feed (cambio linea) tabulazione verticale form feed (alim. carta) carriage return (a capo) …………………… fine file escape ……… separatore di unità 123 Anno accademico 2010-2011 Caratteri stampabili Dec Hx Chr Dec Hx Chr Dec Hx Chr Dec Hx Chr Dec Hx Chr Dec Hx Chr 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F SPACE ! ” # $ % & ’ ( ) * + , . / 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 0 1 2 3 4 5 6 7 8 9 : ; < = > ? 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F @ A B C D E F G H I J K L M N O 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F P Q R S T U V W X Y Z [ \ ] ^ _ 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F ` a b c d e f g h i j k l m n o 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F p q r s t u v w x y z { | } ~ DEL Nota: il valore numerico di una cifra può essere calcolato come differenza del suo codice ASCII rispetto al codice ASCII della cifra 0 (es. ‘5’‘0’ = 5348 = 5) Anno accademico 2010-2011 124 Tabella ASCII estesa • I codici oltre il 127 non sono compresi nello standard originario 125 Anno accademico 2010-2011 La codifica delle immagini 1 • Le immagini vengono anch’esse codificate come una sequenza di bit: il processo di “traduzione” da un’immagine ad una sequenza binaria prende il nome di digitalizzazione L’immagine è suddivisa in punti o pixel (per picture element ) e ciascun punto viene codificato con un numero, che corrisponde ad un colore o ad un particolare tono di grigio Si utilizzano un numero di colori o di sfumature che sia una potenza del 2, in modo da codificare l’informazione legata a ciascun pixel con un opportuno numero di bit 126 Anno accademico 2010-2011 La codifica delle immagini 2 • Le immagini vengono memorizzate come lunghe sequenze di bit: per interpretarle è necessario conoscere... ...le dimensioni dell’immagine (base ed altezza in numero di pixel), detta anche risoluzione ...il numero di colori (o toni di grigio) disponibili per ogni pixel • Se un immagine viene codificata ad una data risoluzione, potrà comunque essere presentata su un dispositivo a più bassa risoluzione, a patto di “ignorare” parte dell’informazione 127 Anno accademico 2010-2011 La codifica delle immagini 3 • Come è avvenuto per i caratteri, anche per le immagini sono stati definiti standard di codifica, che assicurano la compatibilità fra sistemi diversi, per quanto concerne la trasmissione e la visualizzazione delle immagini TIFF Tagged Image File Format JPEG PNG Portable Network Graphics • Per ridurre lo spazio necessario per memorizzare le immagini si utilizzano tecniche di compressione (utili anche per la trasmissione su rete Internet) 128 Anno accademico 2010-2011 La codifica delle immagini 4 • Le tecniche di compressione si dividono in… Tecniche lossless: non provocano perdita di informazione, sono adatte a codificare immagini in cui sono presenti ampie aree monocromatiche si codificano in maniera compatta insiemi di pixel aventi le stesse caratteristiche Tecniche lossly: provocano perdita di informazione, facendo decadere la qualità dell’immagine • Normalmente ai formati JPEG e PNG, molto diffusi per lo scambio di immagini su Internet, si applicano metodi di compressione lossly 129 Anno accademico 2010-2011