Esempi ed esercizi Aritmetica degli elaboratori e algebra di commutazione Fondamenti di Informatica Michele Ceccarelli Università del Sannio [email protected] Angelo Ciaramella DMI-Università degli Studi di Salerno [email protected] Sommario Aritmetica dei calcolatori Algebra di commutazione e moduli combinatori Aritmetica dei calcolatori Rappresentazione degli interi • Conversioni di base Rappresentazione in complemento a due • Somma e sottrazione • Problemi di overflow Rappresentazione in virgola mobile (floating point representation) • Conversioni di base • Notazione scientifica • Standard IEEE 754 Errori di arrotondamento nei dati e nei calcoli • Il più piccolo numero rappresentabile • Disastri attribuibili ad errori nella computazione numerica Esempi, esercizi Algebra di commutazione e moduli combinatori Algebra di commutazione • Funzioni di commutazione e tavole di verità • Proprietà dell’ algebra booleana • Forma normale e canonica SOP (POS) • Connettivi AND, OR e NOT • Espressione SOP minimale Moduli combinatori • Codificatori e Decodificatori • Memorie a sola lettura (ROM) e array logici programmabili (PLA) • Multiplexer e Demultiplexer Esempi, esercizi Rappresentazione dei numeri In generale dato un numero N, per la sua rappresentazione in base b, si usa una stringa di cifre tale che la rappresentazione posizionale risulta intero frazione N ≡ (an an−1...a0 . a−1a−2 ...a−m )b punto base mentre il valore di N è dato dalla formula N≡ n ∑ ai b i =− m i Conversioni di base (interi) Due problemi sono importanti in relazione alla notazione binaria: A. ottenere la rappresentazione binaria di un dato valore N B. ottenere il valore di una rappresentazione binaria data Binario decimale • Sostituzione: sostituzione di ciascuna delle cifre binarie diverse da zero nella rappresentazione di N con il suo peso rappresentato in decimale e somma dei termini risultanti Esempio N ≡ 10110102 N = 1x 2 6 + 1x 2 4 + 1x 23 + 1x 21 = 90 Conversioni di base (interi) Binario decimale • Procedura: a. Porre Sn = an b. Per i = n – 1, n – 2, …, 0 calcolare Si = ai + 2 x Si+1 c. Porre N = S0 Esempio N ≡ 11010012 MSB S6 = 1 S5 = 1 + 2x1 = 3 S4 = 0 + 2x3 = 6 S3 = 1 + 2x6 = 13 S2 = 0 + 2x13 = 26 S1 = 0 + 2x26 = 52 S0 = 1 + 2x52 = 105 = LSB N Conversioni di base (interi) Decimale binario • Procedura: a. Porre S0 = N b. Per i = 1, …, n calcolare ai come resto e quoziente della divisione di Si per due (Si = 2 x Si-1 + ai) Esempio N = 10510 S0 = 105 = 2x52 + 1 S1 = 52 = 2x26 + 0 S2 = 26 = 2x13 + 0 S3 = 13 = 2x6 + 1 S4 = 6 = 2x3 + 0 S5 = 3 = 2x1 + 1 S6 = 1 = 2x0 + 1 stop LSB MSB Complemento a due Il complemento a due ci permette di rappresentare i numeri interi relativi binari. Sequenza binaria an−1an−2 ...a1a0 n− 2 Interi positivi A = ∑ ai 2 i con an−1 = 0 con an−1 = 1 i =0 Interi negativi A = − an−1 2 n −1 n−2 + ∑ ai 2 i =0 i Complemento a due Caratteristiche: • Unica rappresentazione per lo zero • Per i numeri negativi il bit di segno è sempre 1 • Facilità nel calcolare l’opposto di un numero binario • Facilità nel convertire un numero binario in complemento a due, rappresentato su n bit, nel medesimo numero su di più di n bit Complemento a due Calcolo dell’opposto di un numero binario 1. Complementare ogni bit della sequenza binaria 2. Sommare 110 al risultato ottenuto Calcolo della somma di due numeri binari 1. Addendi sommati bit a bit dall’ LSB al MSB 2. Propagazione dei riporti alle cifre più significative, verso sinistra Calcolo della sottrazione di due numeri binari 1. Il sottraendo va trasformato nel suo opposto 2. Somma del sottraendo con il minuendo Complemento a due (Esempio) Calcolare la somma e la sottrazione dei seguenti interi, usando 4 bit A = 610 B = 710 Addizione A ≡ 0110 2 B ≡ 01112 Sottrazione 0 1 1 12 = 710 0 1 1 12 = 710 0 1 1 02 = 610 1 0 1 02 = -610 1 1 0 12 = 1310 0 0 0 12 = 110 Può accadere che la somma degli addendi abbia un valore troppo grande per essere rappresentato dal numero di bit (traboccamentooverflow). Complemento a due (Esercizi) Effettuare le seguenti somme considerando l’operando a 6 bit A=13 ; B= 23 A=13 ; B= 8 overflow A=-13 ; B= -23 A=-13 ; B= -8 A=25 ; B= -13 A = 13 ; B= -25 Esercizi (C2.0) Scrivere il risultato della somma in complemento a due dei numeri 10 e –28 su 6 bit (il 6° bit è quello del segno) ed indicare se si verifica overflow. Esercizi (C2.1) A=13 ; B= 23 B (binario) A (binario) S0 = 13 = 2x6 + 1 S0 = 23 = 2x11 + 1 S1 = 6 = 2x3 + 0 S1 = 11 = 2x5 + 1 S2 = 3 = 2x1 + 1 S2 = 5 = 2x2 + 1 S3 = 1 = 2x0 + 1 S3 = 2 = 2x1 + 0 S3 = 1 = 2x0 + 1 A10 ≡ 0011012 B10 ≡ 0101112 Somma overflow = 0 1 1 1 1 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 0 0 -28 errato Esercizi (C2.2) A= 13 ; B= 8 B (binario) S0 = 8 = 2x4 + 0 S1 = 4 = 2x2 + 0 S2 = 2 = 2x1 + 0 S3 = 1 = 2x0 + 1 A10 ≡ 0011012 B10 ≡ 001000 2 Somma overflow = 0 0 1 0 0 0 0 0 1 1 0 1 0 0 1 0 0 0 0 1 0 1 0 1 21 corretto Esercizi (C2.3) A=-13 ; B= -23 1310 ≡ 0011012 2310 ≡ 0101112 A10 ≡ 1100112 B10 ≡ 1010012 Somma overflow = 1 0 0 0 1 1 1 1 0 0 1 1 1 0 1 0 0 1 0 1 1 1 0 0 28 errato Esercizi (C2.4) A=-13 ; B= -8 B10 (binario) S0 = 8 = 2x4 + 0 S1 = 4 = 2x2 + 0 S2 = 2 = 2x1 + 0 S3 = 1 = 2x0 + 1 A10 ≡ 1100112 B10 ≡ 111000 2 Somma overflow = 1 1 0 0 0 0 1 1 0 0 1 1 1 1 1 0 0 0 1 0 1 0 1 1 -21 corretto Esercizi (C2.5) A= 25 ; B= -13 A10 (binario) S0 = 25 = 2x12 + 1 S1 = 12 = 2x6 + 0 S2 = 6 = 2x3 + 0 S3 = 3 = 2x1 + 1 S3 = 1 = 2x0 + 1 A10 ≡ 0110012 B10 ≡ 1100112 Somma overflow = 1 1 0 0 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 1 0 0 12 corretto Esercizi (C2.6) A= 13 ; B= -25 B10 ≡ 0110012 A10 ≡ 0011012 B10 ≡ 1001112 Somma overflow = 0 0 1 1 1 1 0 0 1 1 0 1 1 0 0 1 1 1 1 1 0 1 0 0 -12 corretto Esercizi (C2.7) L’esame degli esercizi presentati conduce alla seguente regola per il rilevamento del traboccamento A B ≥0 <0 ≥0 Traboccamento se cncn-1 = 01 Sempre corretto <0 Sempre corretto Traboccamento se cncn-1 = 10 Dove cn e cn-1 sono rispettivamente il riporto del bit di overflow e quello di segno Rappresentazione in virgola mobile La notazione scientifica è caratterizzata dall’avere un’unica cifra a sinistra della virgola. Un numero reale rappresentato in notazione scientifica che non presenti uno zero in testa è detto normalizzato 1.010 x10 −9 In binario la notazione scientifica normalizzata ha la seguente forma: 1.xxxxxxxxxx 2 yyyy La notazione scientifica viene chiamata rappresentazione in virgola mobile (floating point representation) Vantaggi • semplifica lo scambio di insiemi di dati contenenti numeri reali • semplifica gli algoritmi per operazioni aritmetiche su numeri reali • permette di aumentare la precisione con cui memorizzare numeri reali in in parole di dimensione prefissata Rappresentazione in virgola mobile Rappresentazione in virgola mobile in uso nel linguaggio macchina del processore MIPS (float-singola precisione) s 1 bit Esponente (E) parte frazionaria (F) 23 bit 8 bit s è il segno del numero (1 negativo) esponente rappresenta il valore dell’esponente (con segno) parte frazionaria rappresenta il valore delle cifre a destra della virgola (rappresentazione in modulo e segno) Rappresentazione (−1) S x F x 2 E Algebra di commutazione • Una funzione binaria di variabili binarie si dice funzione di commutazione. Un circuito o rete combinatoria è un sottosistema digitale che realizza una funzione di commutazione. • Il modo convenzionale per descrivere una funzione di commutazione è tramite la tavola di verità • Una espressione booleana ha queste caratteristiche: Le variabili e le costanti sono espressioni Se E1 ed E2 sono espressioni, lo sono anche i negati, E1*E2 ed E1 + E2 descrive Una rete combinatoria con ingressi assegnati espressione realizza Algebra di commutazione • Le tecniche per la progettazione di reti combinatorie si basano sulle proprietà di un sistema chiamato algebra booleana Tavole di verità dei connettivi AND, OR e NOT x2 x1 AND x2 x1 OR 0 0 0 0 0 0 0 1 0 0 1 1 1 0 0 1 0 1 1 1 1 1 1 1 Connettivi x NOT 0 1 1 0 Algebra di commutazione Proprietà dell’algebra di commutazione 1. x = x involuzione 2. x1 • x2 = x2 • x1 e x1 + x2 = x2 + x1 commutatività 3. x • x = x x+x = x idempotenza 4. x • 1 = x x + 0 = x 5. x • 0 = 0 x + 1 = 1 6. x • x = 0 x + x = 1 complementarietà 7. x(x+y) = x x + xy = x assorbimento 8. x • (y + z) = xy + yz x + yz = (x + y) • (x + z) distribuitività 9. (xy)z=x(yz) (x+y) + z = x + (y + z) associatività 10. xy = x + y leggi di De Morgan x+y = x•y Algebra di commutazione • Una espressione è in forma normale SOP (somma di prodotti) quando è l’OR di AND di letterali. E’ in forma canonica se tutti i termini prodotto sono tutti mintermini (mi) (1 nella tvola di verità) • Una espressione è in forma normale POS (prodotti di somme) quando è l’AND di OR di letterali. E’ in forma canonica se tutti i termini somma sono tutti maxtermini (Mi) (0 nella tavola di verità) • Le tecniche di minimizzazione ci permettono di ottenere una espressione SOP normale minimale Moduli combinatori Codificatori È un modulo con s linee di ingresso L1,L2,…,Ls ed n linee di uscita yn-1, … ,y0. A ciascuna linea di ingresso è associato un numero intero non nullo (li f(i)). Un codificatore produce la codifica dell’intero associato alla linea attiva. a b c ≡ a b esempio input f(i) y y y y c 3 2 1 0 L1 3 0 0 1 1 L2 5 0 1 0 1 L3 6 0 1 1 0 L4 9 1 0 0 1 L5 10 1 0 1 0 L6 12 11 0 0 L7 13 1 1 0 1 => L1 L2 L3 L4 L5 L6 L7 y3 y2 y1 y0 Moduli combinatori Decodificatori È un modulo con n linee di ingresso xn-1,…,x0 ed s linee di uscita u1, … ,us. A ciascuna linea di uscita è associato un numero intero non nullo j. Un codificatore produce la codifica dell’intero associato alla linea attiva. a b ≡ a b c Decodificatore parallelo 2-a-4 x0 ≡ x1 u0 u1 u2 u3 c x0 x1 u0 u1 u2 u3 Simbolo convenzionale Moduli combinatori • Se poniamo in cascata un decodificatore e un codificatore otteniamo un nuovo modulo, il transcodificatore. • La nozione di transcodificatore può essere rapidamente estesa per generare le memorie a solo lettura (ROM) o gli array logici progammabili (PLA) • ROM PLA Applicazione dell’approccio ROM alla espressione minimale Moduli combinatori (Esercizio 1) Ricavare la tavola di verità Decodificatore 3 a 8 x0 x1 x2 y5 y4 y3 y2 y1 Moduli combinatori (Esercizio 2) Ricavare la tavola di verità