Rappresentazione dell’Informazione Corso di Laurea in Ingegneria Civile Prof. Dario Bianchi Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Rappresentazione dell’Informazione In un calcolatore vogliamo rappresentare vari tipi di informazioni: • • • • Numeri reali Numeri interi Testi Grafici Dario Bianchi - 2003 • • • • Disegni Fotografie Filmati Suoni Fond. Informatica - Ing. Civile Rappresentazione dell’Informazione L’informazione può essere rappresentata in due forme: – Analogica – Digitale •Nella forma analogica una grandezza è rappresentata in modo continuo. •Nella forma digitale una grandezza è rappresentata in modo discreto. •La gran parte delle grandezze fisiche sono di tipo continuo (ad esempio unsegnale acustico). •Tuttavia alcuni tipi di informazioni “artificiali” sono di tipo discreto (ad esempio un testo scritto). Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Rappresentazione dell’Informazione • Per elaborare delle grandezze di tipo continuo con un calcolatore, bisogna utilizzare una sua rappresentazione digitale. • La rappresentazione digitale é una approssimazione della rappresentazione analogica. • L’errore di approssimazione dipende dalla precisione della rappresentazione digitale. Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Rappresentazione dell’Informazione •Internamente ad un elaboratore ogni informazione è rappresentata da una sequenza di bit (cifre binarie) •Una sequenza di bit non dice puo ` rappresentare entita` diverse: •Ad esempio la sequenza di cifre binarie: 01000001 puo’ rappresentare: – l’intero 65 – il carattere A – il valore di un segnale musicale – il codice del colore di un punto sullo schermo Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Codici • Un codice é un sistema di simboli atto a rappresentare una informazione di qualsiasi genere (caratteri, numeri, etc.). • Ogni simbolo é messo in corrispondenza biunivoca con una entitá che si vuole rappresentare. • Un codice binario usa come simboli le cifre binarie “0” e “1”. Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Sistemi Numerici • Un numero N puó essere rappresentato come una sequenza di cifre: • N=dn-1dn-2 d1d0 • d-1d-2 d-m • corrispondente a: • N=dn-1•rn-1+dn-2•rn-2+ +d0•ro + d-1•r-1+ +d-m•r-m • dove: •d = cifra •r = base Dario Bianchi - 2003 •n = numero cifre parte intera •m = numero cifre parte decimale Fond. Informatica - Ing. Civile Sistemi Numerici Sistema Decimale • R=10, d=0,1,2,3,4,5,6,7,8,9 N=dn-1•10n-1+dn-2•10n-2+ +d0+ d-1•10-1+d-m•10-m • Esempio: 123.45=1•102+2•101+3•100 +4•10-1+5•10-2 Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Sistemi Numerici Sistema Binario • R=2, d=0,1 N=dn-1•2n-1+dn-2•2n-2+ +d0•20+ d-1•2-1+d-m•2-m • Esempio: 101.012 = 1•22+0•21+1•20 +0•2-1+1•2-2 = 5.2510 • La cifra binaria é detta “bit” (binary digit – pezzo, pezzetto: cioé l’unitá più piccola di informazione). • E’ il sistema usato nei calcolatori. Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Sistemi Numerici Sistema Ottale • R=8, d=0,1,2,3,4,5,6,7 N=dn-1•8n-1+dn-2•8n-2+ +d0•80+ d-1•8-1+d-m•8-m • Esempio: 1278 = 1•82+2•81+7•80 = 8710 Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Sistemi Numerici Sistema Esadecimale (Base 16,indicato anche con H) • R=16, d=0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F N=dn-1•16n-1+dn-2•16n-2+ +d0•160+ d-1•18-1+d-m•16-m • Esempio: A1H = A116 = 10•161+1•100 = 16110 • Per avere 16 simboli distinti bisogna aggiungere: AH=10 CH=12 EH=14 BH=11 DH=13 FH=15 Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Conversioni di Base Conversione dalla base 10 ad una base qualsiasi: parte intera N=d0•r0+d1•r1+d2•r2+ +dn-1•rn-1 N=d0+r(d1+r(d2(… +dn-1))) Quindi dividendo N per la base r si ottiene come quoziente d1+r(d2(… +dn-1)) e come (resto d0 la cifra meno significativa). Dividendo ancora il quoziente per la base si ottiene la cifra di peso 1 e così via fino ad avere un quoziente 0 Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Conversioni di Base Esempio di conversione dalla base 10 alla base 2: parte intera 115 2 1 57 1 d0 d1 2 28 0 11510 = 11100112 2 14 0 2 2 7 1 3 1 d2 d3 2 1 1 d4 d5 d6 Dario Bianchi - 2003 Fond. Informatica - Ing. Civile 2 0 Conversioni di Base Conversione dalla base 10 alla base 2: parte frazionaria N=d-1•2-1+d-2•2-2+ +d-m•2-m Se moltiplichiamo N per la base 2 otteniamo per la parte intera d-1. Moltiplicando ancora per 2 la parte frazionaria otteniamo come parte intera d-2 etc. Il risultato termina quando il risultato della moltiplicazione e’ esattamente 1 o quando si é raggiunta la precisione voluta (una rappresentazione puo’ essere finita in una base e infinita in un’altra). Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Conversioni di Base Esempio di conversione dalla base 10 alla base 2: parte frazionaria 0.625 × 2 1.250 × 2 d-1 d-2 0.500 × 2 0.62510 = 0.1012 1.000 × 2 d-3 Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Conversioni di Base Esempio di conversione dalla base 10 alla base 2: parte intera e frazionaria Per convertire un numero che ha parte intera e parte frazionaria si effettuano le conversioni separatamente. Esempio: 11510 = 11100112 0.62510 = 0.1012 115.62510 = 1110011.1012 Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Conversioni di Base Conversione fra le basi 8 o 16 e la base 2: Le notazioni in base 8 e 16 possono essere pensate come delle abbrevviazioni della notazione in base 2. Ogni cifra ottale corrisponde a 3 cifre binarie: 101 110 0012 = 5618 Ogni cifra esadecimale corrisponde a 4 cifre binarie: 1 0111 00012 = 17116 Dario Bianchi - 2003 (0001 0111 00012 = 17116) Fond. Informatica - Ing. Civile Operazioni sui numeri binari • Come per I numeri decimali ma con le seguentui tabelle: Somma: Prodotto: + 0 1 Dario Bianchi - 2003 0 0 1 1 1 10 × 0 1 Fond. Informatica - Ing. Civile 0 0 0 1 0 1 Operazioni sui numeri binari • Somma: + 0 1 0+0=0 0+1=1 1+0=1 1+1=0 con riporto 1 (210) 1+1+1=1 con riporto 1 (310) 0 1 0 1 1 10 111 riporto 10110+ 11101 110011 Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Operazioni sui numeri binari • Sottrazione: + 0 0-0=0 0 0 1-0=1 1 1 1-1=0 0-1=1 con un prestito dal bit piu’ a sinistra. riporto 11100101 110011 Dario Bianchi - 2003 1 1 10 riporto 1100 1001 0011 Fond. Informatica - Ing. Civile Operazioni sui numeri binari • Prodotto: × 0 1 0 1 0 0 0 1 Dario Bianchi - 2003 1011 1101 1011+ 000001011+ 1011-110111+ 1011--10001111 Fond. Informatica - Ing. Civile Operazioni sui numeri binari • Divisione: × 0 1 0 1 0 0 0 1 Dario Bianchi - 2003 101101 11 00 01111 101 011 101 11 100 11 011 11 00 Fond. Informatica - Ing. Civile Rappresentazione degli interi positivi • Quante cifre sono necessarie per rappresentare in numero X in base 2 ? – Se usiamo k bit abbiamo 2k configurazioni possibili. – Possiamo quindi rappresentare i numeri compresi fra 0 e 2k-1 Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Rappresentazione degli interi positivi • Tutti I numeri x con 2k-1 - 1 < x ≤ 2k - 1 richiedono k bit per essere rappresentati • Anche 2k-1 < x + 1 ≤ 2k • K-1 < ≤ k • Quindi per rappresentare il numero x occorrono k bit con k= |¯log2(x+1) ¯| Cioé l’intero immediatamente superiore a log2(x+1) Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Rappresentazione degli interi positivi • Il risultato vale anche per una generica base r k= |¯logr(x+1) ¯| • Se B e’ il numero di cifre binarie che serve a rappresentare il numero x e D é il numero di cifre necessarie sempre per rappresentare x B/D=|¯log2(x+1) ¯| / |¯log10(x+1) ¯| = |¯log10(x+1) / log10(2) ¯| /( |¯log10(x+1) ¯| ~3.3 • Occorrono all’incirca 10 cifre binarie per rappresentare 3 cifre decimali. • Si usano queste abbrevviazioni: – Kilo = 210 = 1024 ~ 1000 – Mega = 220 = 1.048.576 ~ 1.000.000 – Giga = 230 = ……… ~ 1.000.000.000 Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Rappresentazione dei numeri nei calcolatori • La rappresentazione naturale dei numeri interi é quella binaria. • La memoria é organizzata in celle (“parole”) con un numero fisso di bit (ad esempio 8). 0 1 0 1 1 0 0 1 • Corrisponde a 1 • 64 + 1 • 16 + 1 • 8 +1 • Usando 8 cifre binaerie (bit) possiamo rapprtesentare I numeri compresi fra 0 e 28-1 = 255 Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Rappresentazione dei numeri nei calcolatori L’uso un numero finito di cifre porta ad una aritmetica modulare. Pensiamo a degli incrementiunitari. 0000000 (0) 0000001 (1) 0000010 (2) ……….. ……….. 1111111 (255) (1)0000000 (256 -> 0) 0000001 (1) ……….. Dario Bianchi - 2003 •Quando si raggiunge il numero 255 (tutti 1) non potendo rappresentare il 256 che richiederebbe 9 bit si torna allo 0. •Si ha quindi una aritmetica modulo 256. •In generale se si usano parole di k bit si ha una aritmetica modulo k. Fond. Informatica - Ing. Civile Rappresentazione degli interi relativi • Disponendo di k bit si possono avere 2k configurazioni diverse. • Metá devono essre usate per I numeri positivi, l’ altra metá per quelli negativi. • Ci sono due possibili rappresentazioni: – in modulo e segno – in complemento a 2 Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Rappresentazione degli interi relativi in modulo e segno • Il bit più significativo viene usato per rappresentare il il segno: • 0 per i numeri positivi • 1 per quelli negativi • Le cifre restanti rappresentano il modulo +510 ->000001012 -1010->100010102 modulo segno • Lo zero ha due rappresentazioni: (+0) 00000000 e (-0) 10000000 Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Rappresentazione degli interi relativi in modulo e segno • Algoritmo di somma: – Confrontare I bit di segno dei due numeri – Se sono uguali: • Somma i moduli • Assegna come bit di segno del risultato il bit di segno degli operandi – Altrimenti: • Confronta i valori assoluti dei due numeri • Assegna come bit di segno del risultato quello dell’operando con modulo maggiore • Sottari i moduli nell’ordine giusto • Macchinoso!! (Analoga la sottrazione). Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Complemento • Complemento alla base: – Dato un numero x di base r e di k cifre é definito come rk - x • Complemento alla base -1: rk -1- x Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Complemento • Complemento a 2: 2k – x – Es: x= 01010110 k=8 100000000 01010110 = 010101010 • Complemento a 1: 2k -1- x – Es: x= 01010110 k=8 11111111 01010110 = 10101001 Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Complemento • Complemento a 1: 2k -1- x – Lo si ottirne semplicemete scambiando 0 con 1 e 1 con 0 – Es: x= 01010110 k=8 01010110 x 10101001 complemento di x • Complemento a 2: 2k – x – Si fa il complemento ad 1 di x e gli si somma 1 – Es: x= 01010110 k=8 01010110 x 10101001 + complemento a 1 1 = sommo 1 10101010 complemento a 2 Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Rappresentazione dei numeri negativi in complemento a 2 • Supponiamo di avere una cella di k bit • I numeri positivi vengono rappresentati dal loro modulo e hanno il bit piu’ significativo (segno) = 0 • I numeri negativi vengono rappresentati facendo il complemento a due del corrispondente numero positivo. Hanno il bit piu’ significativo (segno) = 1 • Si rappresentano come positivi i numeri da 0 a 2k-1-1 • Si rappresentano come negativi i numero che vanno da -2k-1 a -1 Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Rappresentazione dei numeri negativi in complemento a 2 01111111 01111110 +127 +126 00000010 00000001 00000000 11111111 11111110 +2 +1 0 -1 -2 10000001 10000000 -127 -128 Dario Bianchi - 2003 Supponendo una cella di 8 bit (k=8, 2k=256) 2k-1-1 = 127 -2k-1 = -128 Fond. Informatica - Ing. Civile Rappresentazione dei numeri negativi in complemento a 2 • Supponiamo di voler calcolare A-B con una cella di k bit. • Possiamo calcolare A + (-B) dove –B e’ il complemento a 2 di B dato da 2K-B. • Si ottiene A - B = A + (-B) = A + 2K - B in quanto il termine 2K non é rappresentabile in k bit. • Per fare una sottrazione possiamo sommare il complemento a 2 del secondo operando Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Rappresentazione dei numeri negativi in complemento a 2 • Come possiamo interpretare un numero in complemento a due? • Se il bit più significativo (segno) =0 allora il numero é positivo e le sue cifre ci danno il modulo – Es: 00110011 = + 51 (32+16+2+1) • Se il bit più significativo (segno) =1 allora il numero é negativo e per avere il modulo si deve fare il complemento a 3 – Es: 10110011 negativo – 01001100+ complemento a 1 – 1 – 01001101 complemento a 2 = 77 (64+8+4+1) – il numero originale era -77 Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Rappresentazione dei numeri negativi in complemento a 2 • Esempi (supponiamo k=5, possiamo rappresentare I numeri da -16 a + 15): 01001+ 00100= 01101 01001+ 11100= 100101 Dario Bianchi - 2003 +9 +4 +13 +9 -4 +5 (sesto bit eliminato) Fond. Informatica - Ing. Civile Rappresentazione dei numeri negativi in complemento a 2 • Esempi (supponiamo k=5, possiamo rappresentare I numeri da -16 a + 15): 10111+ 00100= 11011 10111+ 11100= 110011 Dario Bianchi - 2003 -9 +4 +5 -9 -4 -13 (sesto bit eliminato) Fond. Informatica - Ing. Civile Rappresentazione dei numeri negativi in complemento a 2 • Esempi (supponiamo k=5, possiamo rappresentare I numeri da -16 a + 15): 01001+ 01000= 10001 +9 +8 OVERFLOW + 17 non e’ rappresentabile con 5 bit 10111+ -9 10111= -9 101110 -13 (sesto bit eliminato) OVERFLOW -18 non e’ rappresentasbile Con 5 bit Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Rappresentazione dei numeri negativi in complemento a 2 • OVERFLOW (Supero di capacitá) • Si ha quando il risultato non é rappresentabile con il numero di bit disponibili. • Si ha solo sommando due numeri entrambi positivi o entrambi negativi. • In questo caso il segno del risultato risulta opposto a quello degli operandi. Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Operazioni di Shift (Scorrimento) 0 0 1 1 0 0 1 1 • Shift a sinistra: moltiplica per 2 0 1 1 0 0 1 1 0 0 • Shift a destra: divide per 2 Dario Bianchi - 2003 0 0 0 0 1 1 0 0 1 Fond. Informatica - Ing. Civile Numeri reali Rappresentazione in virgola fissa • Dobbiamo supporre di utilizzare n bit per la parte intera e m bit per la parte frazionaria: xxxxx.xxx Il numero 11000101 Corrisponderebbe (usando le ultime tre cifre come parte frazionaria) a: 1•24 + 1•23 + 1•2-1 + 1•2-3 = 24.625 Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Numeri reali Rappresentazione in virgola fissa • La rappresentazione in virgola fissa limita fortemente l’intervallo numerico utilizzabile. Possiamo infatti rappresentare numeri da 2-3=0.125 a 25=31 • Il numero di cifre significative dipende dal suo valore assoluto: 10011.101 = 19.625 ha 8 cifre significative • Anche 1001.1101 =9.81125 ha 8 cifre significative Ma nella rappresentazione in virgola fissa diventerebbe: 01001.110=9.75 con notevole perdita di precisione. Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Numeri reali Rappresentazione in virgola mobile (Floating point) • Notazione esponenziale 125000000000 pio’ essere scritto come 1.25 • 1011 Anche nella notazione binaria possiamo dire 10010.101 = 1.0010101 • 24 .010010101 = 1.0010101 • 2-2 In questo caso la precisione del numero non dipende dal suo valore assoluto. Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Numeri reali Rappresentazione in virgola mobile (Floating point) • • • • • • Semplice precisione: 1 bit segno mantissa 1 bit segno esp[onente 23 bit modulo mantissa 7 bit modulo esponente La mantissa consente una precisione 23/3.3 cifre decimali. L’esponente puó variare da -127 a +127 ed il range di un numero floating point é fra 2-127 e 2+127. Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Numeri reali Rappresentazione in virgola mobile (Floating point) • • • • • • Semplice precisione: 1 bit segno mantissa 1 bit segno esp[onente 23 bit modulo mantissa 7 bit modulo esponente La mantissa consente una precisione 23/3.3 cifre decimali. L’esponente puó variare da -127 a +127 ed il range di un numero floating point é fra 2-127 e 2+127. Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Precisione • Interi – “corti” 16 bit = 2 byte da ~ -32.000 a ~ + 32000 – “lunghi” 32 bit =4 byte da ~ -2000.000.000 a ~ + 2000.000.000 • Floating point – Semplice precisione 32 bit = 4 byte – Doppia precisione 64 bit = 8 byte Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Operazioni sui numeri Floating Point • Moltiplicazione (divisione): – Si moltipliclano (o si dividono) le mantisse – Si sommano (o si sottraggono) gli esponenti • Condizione di errore – OVERFLOW: si ha un esponente (positivo) troppo grande (1.15•290•1.99•285) – UNDERFLOW: si ha un esponente (negativo) troppo piccolo (1.15•2-90•1.99•2-85) – Divisione per Zeri: operazione non ammessa. Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Operazioni sui numeri Floating Point • Addizione e sottrazione: • Bisogna prima allineare I due operandi: • Es: 0.4356 • 10-4 + 0.5137 • 10-2 = 0.0043 • 10-2 + 0.5137 • 10-2 = 0.5180 • 10-2 Si puo’ avere una perdita di precisione nell’allineamento dei due numeri (si perdono le cifre meno significative del numero con esponente più piccolo). Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Codici • Codice: sistema di simboli che permette la rappresentazione dell’informazione • Esempi: • Decodifica agevole vs codici compressi Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Definizioni • SIMBOLO: entità di cui non si da qui una definizione formale • STRINGA: sequenza finita di simboli giustapposti (lunghezza della stringa, stringa vuota) • ALFABETO: insieme finito di simboli • LINGUAGGIO: insieme di stringhe di simboli tratti da un alfabeto Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Esempi di alfabeti • Alfabeto italiano: {A, B, C, D, …Z} • Alfabeto greco: {α, β, γ, δ, ...ω} • Alfabeto binario: {0, 1} Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Alfabeto usato dal calcolatore • • • • • • Interruttore (aperto/chiuso) Foro su scheda (aperto/chiuso) Transistor (in conduzione/spento) Tensione (alta/bassa) Dominio di magnetizzazione (/) Riflettività di un’areola (alta/bassa) Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Alfabeto usato dal calcolatore • Gli elaboratori utilizzano una logica e un’aritmetica binaria • Ai due stati di un dispositivo vengono associati i due simboli 0 e 1 Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Codifica dei simboli • E’ necessario determinare delle regole di corrispondenza, dette codifiche • La codifica mette in corrispondenza (biunivoca) ogni simbolo appartenente all’alfabeto più ricco con una stringa di simboli appartenente all’alfabeto più ridotto. Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Codifica • Problema: codificare i simboli dell’alfabeto A utilizzando stringhe del linguaggio L, con A qualsiasi e L={ stringhe di N bit } • Cardinalità C dell’alfabeto A: numero di elementi di A Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Codifiche ridondanti • Codifiche ridondanti N C2 N log 2C M Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Distanza di Hamming • E’ definita come il minimo numero di bit di cui differiscono due parole qualsiasi del codice se N=M si ha che se c’è ridondanza, Dario Bianchi - 2003 H=1 H1 Fond. Informatica - Ing. Civile Rilevazione e correzione di errori • La ridondanza può servire per rilevare o correggere errori nel codice • Num di errori rilevati: R = H-1 H 1 • Num di errori corretti: C 2 Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Esempio di codifica ridondante • Parità: si ottiene dal codice non ridondante aggiungendo un simbolo in modo che il numero di ‘1’ sia pari (parità pari) o dispari (parità dispari). • Avendo H=2 può solo rilevare un errore Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Codice BCD • BCD: Binary Coded Decimal Simbolo: Codifica: Con Parita`: 0 1 2 3 4 … 0000 0001 0010 0011 0100 00000 00011 00101 00110 01001 8 9 1000 1001 10001 10010 Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Codici autocorrettivi • Per avere la possibilita’ di correggere bisogna avere una distanza di Hamming H>=2 • Esempio (Non realistico: in realta` la ridondanza puo’ essere piu’ bassa) Codici: 0 000 1111 (H=3) {001,010,100} sono codici errati 0 {110,101,011} sono codici errati 1 Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Codice ASCII • American Standard Code for Information Interchange • 7 bit quindi • ASCII esteso 128 simboli diversi (8bit) – diverse estensioni in dipendenza dal paese – oppure aggiunge la parità Dario Bianchi - 2003 Fond. Informatica - Ing. Civile ALGEBRA BOOLEANA • Boole matematico inglese (XIX secolo) • La sua algebra viene utilizzata solo dall’inizio del XX secolo (primi sistemi di calcolo) • Si basa su due soli stati: – acceso (ON) – spento (OFF) Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Variabili booleane • Le variabili possono assumere solo due valori: 0 e 1 • Si chiamano Variabili logiche o booleane Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Funzioni booleane • Usando le variabili booleane, si possono costruire le funzioni booleane F(x,y,z) che possono assumere solo due stati: – true – false Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Tabella della verità • Ogni funzione booleana è caratterizzata dalla propria tabella della verità Dario Bianchi - 2003 x y z F 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 1 0 1 1 0 1 0 0 Fond. Informatica - Ing. Civile Funzioni booleane • Funzioni completamente specificate: se per tutte le combinazioni delle variabili il suo valore è determinato • Esempio: uno studente può chiedere la tesi solo se ha superato tutti gli esami ed è regolarmente iscritto Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Funzioni booleane • Funzioni non completamente specificate: se a una o più combinazioni delle sue variabili non corrisponde alcun valore della funzione • Esempio: uno studente si laurea solo se ha superato tutti gli esami e ha svolto la tesi Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Costanti booleane • Oltre alle variabili vi sono anche le costanti • Essendo l’Algebra Booleana definita su due soli simboli, esistono solo due costanti: –0 –1 Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Operatori logici • Tra le variabili e le costanti possono intervenire delle relazioni • Le relazioni si esprimono utilizzando gli operatori logici • Definiti insieme agli operatori logici, i postulati definiscono il loro comportamento Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Tipi di operatori • Esistono due tipi di operatori, in dipendenza dal numero di variabili che utilizzano: – monadici – diadici Dario Bianchi - 2003 Fond. Informatica - Ing. Civile L’operatore NOT • Il risultato è il complemento dell’unica variabile x NOT x 0 1 Dario Bianchi - 2003 Fond. Informatica - Ing. Civile 1 0 L’operatore AND • Il risultato è vero solo se sono vere entrambe le variabili Dario Bianchi - 2003 a b a AND b 0 0 1 1 0 1 0 1 0 0 0 1 Fond. Informatica - Ing. Civile L’operatore OR • Il risultato è vero solo se è vera almeno una delle variabili Dario Bianchi - 2003 a b a OR b 0 0 1 1 0 1 0 1 0 1 1 1 Fond. Informatica - Ing. Civile L’operatore XOR • Il risultato è vero solo se è vera solo una delle due variabili Dario Bianchi - 2003 a b 0 0 1 1 0 1 0 1 a XOR b Fond. Informatica - Ing. Civile 0 1 1 0 Operatori - nomenclatura • • • • NOT: AND: OR: XOR: Dario Bianchi - 2003 inversione prodotto logico somma logica or esclusivo Fond. Informatica - Ing. Civile (¯) (·) (+) () Operatori universali • Con gli operatori NOT, OR, AND, XOR si possono costruire tutte le funzioni booleane • Esistono due operatori (NAND, NOR) che permettono la sintesi di qualsiasi funzione, utilizzando un unico tipo di operatori Dario Bianchi - 2003 Fond. Informatica - Ing. Civile L’operatore NAND • Il risultato è vero solo se è falso l’AND tra le due variabili Dario Bianchi - 2003 a b 0 0 1 1 0 1 0 1 a NAND b Fond. Informatica - Ing. Civile 1 1 1 0 L’operatore NOR • Il risultato è vero solo se è falso l’OR tra le due variabili Dario Bianchi - 2003 a b 0 0 1 1 0 1 0 1 a NOR b Fond. Informatica - Ing. Civile 1 0 0 0 Espressioni logiche • Un insieme di variabili e/o costanti booleane a cui siano applicati gli operatori logici si dice espressione booleana o logica • Una espressione logica rappresenta una funzione logica: ad esempio: T a b a b Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Precedenze tra operatori • Le precedenze sono simili al + e al x dell’algebra consueta: – priorità alta x – priorità bassa + Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Proprietà dell’algebra booleana X·0 = 0 X+1 = 1 X·1 = X X+0 = X X·X = X X+X = X idempotenza X·X = 0 X+X = 1 complementazione X·Y = Y·X X+Y = Y+X commutativa X·(X+Y) = X X+(X·Y) = X assorbimento X·(X+Y) = X ·Y X+(X·Y) = X+Y assorbimento X·(Y+Z) = X·Y+X·Z X+(Y·Z) = (X+Y)·(X+Z) distributiva Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Proprietà dell’algebra booleana X·(Y·Z) = (X·Y) ·Z = X·Y·Z X+(Y+Z) = (X+Y)+Z = X+Y+Z associativa (X)=X X·Y = X + Y Dario Bianchi - 2003 X+Y = X ·Y Fond. Informatica - Ing. Civile De Morgan Proprietà operatori universali NOR () NAND () X1=0 X0=X XX=X X Y = X·Y X Y = X+Y X0=1 X1=X XX=X X Y = X+Y X Y = X·Y Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Sommattore xn yn c cn Dario Bianchi - 2003 rn n-1 x1 y1 c0 c1 r1 Fond. Informatica - Ing. Civile x0 y0 c0 c0 r0 Sommatore xi 0 0 0 0 1 1 1 1 yi ci-1 0 0 0 1 1 0 1 1 0 0 0 1 1 0 1 1 Dario Bianchi - 2003 ri 0 1 1 0 1 0 0 1 ci 0 0 0 1 0 1 1 1 ri = (xi yi) ci-1 ci = ci-1 (xiyi) + xiyi Fond. Informatica - Ing. Civile Reti logiche • Reti combinatorie: le uscite dipendono solo dagli ingressi • Reti sequenziali: le uscite dipendono dagli ingressi e dalle uscite precedenti (Effetti di memoria: latch, flip-flop) Dario Bianchi - 2003 Fond. Informatica - Ing. Civile Q = stato precedente Q’=Stato successivo Latch RS r Q s Q Dario Bianchi - 2003 Fond. Informatica - Ing. Civile R 0 0 0 0 1 1 1 1 S 0 0 1 1 0 0 1 1 Q Q’ 0 0 1 1 0 1 1 1 0 0 1 0 0 1 -