Fondamenti di Informatica CdL Ingegneria Meccanica A.A. 2013/14 Docente: Ing. Ivan Bruno Rappresentazione dati 1. 2. 3. 4. Sistema numerazione binario Operazioni in binario e forma complemento alla base Rappresentazione numeri naturali, interi e reali Codice ASCII 1 Rappresentazione dell’Informazione In un calcolatore si possono rappresentare vari tipi di informazioni: Numeri reali Numeri interi Testi Grafici …. Disegni Fotografie Filmati Suoni … Rappresentazione dell’Informazione L’informazione può essere rappresentata in due forme: Analogica la grandezza è rappresentata in modo continuo. Digitale una grandezza è rappresentata in modo discreto. Gran parte delle grandezze fisiche sono di tipo continuo (ad esempio un segnale acustico). Tuttavia alcuni tipi di informazioni “artificiali” sono di tipo discreto (ad esempio un testo scritto). 2 Rappresentazione dell’Informazione Per elaborare delle grandezze di tipo continuo con un calcolatore, bisogna utilizzare/trasformarle in un loro rappresentazione digitale. La rappresentazione digitale è una approssimazione della rappresentazione analogica. L’errore di approssimazione dipende dalla precisione della rappresentazione digitale. Rappresentazione dell’Informazione Internamente ad un elaboratore ogni informazione è rappresentata da una sequenza di bit (cifre binarie) Una sequenza di bit può rappresentare entità diverse. Il modello di rappresentazione da la chiave di lettura. Ad esempio la sequenza di cifre binarie 01000001 può rappresentare: – l’intero 65 – il carattere A – il valore di un campione audio – il codice del colore di un punto sullo schermo 3 Sistemi di Numerazione Posizionali Sono caratterizzati da: una base, b un insieme ordinato di cifre, I {……..}, distinte l'una dall'altra, con dimensione pari a quella della base: dim(I) = b l'insieme contiene simboli che hanno una certa posizione nella base ordinata. un codice di interpretazione: un insieme di regole che permettono di determinare quale sia il numero rappresentato da un gruppo di cifre, un insieme di regole e di algoritmi per definire le operazioni fondamentali. Sistemi di Numerazione Posizionali Un numero N può essere rappresentato come una sequenza di cifre: N=dn-1dn-2... …d1d0 • d-1d-2 ... … d-m corrispondente a (forma polinomia): N N 1 d b k m k k N=dn-1•bn-1+dn-2•bn-2+ ... +d0•bo + d-1•b-1+…. +d-m•b-m dove: •d = cifra •b = base •n = numero cifre parte intera •m = numero cifre parte decimale 4 Sistema di Numerazione decimale Sistema Decimale Indicato con “10”, “d”, “D” b=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 Sistemi di Numerazione Binario Indicato con “b”, “2” b=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. 5 2 alla n N 2 alla - n 1 0 1.0 2 1 0.5 4 2 0.25 8 3 0.125 16 4 0.0625 32 5 0.03125 64 6 0.015625 128 7 0.0078125 256 8 0.00390625 512 9 0.001953125 1024 10 0.0009765625 2048 11 0.00048828125 4096 12 0.000244140625 8192 13 0.0001220703125 16384 14 0.00006103515625 32768 15 0.000030517578125 65536 16 0.0000152587890625 131072 17 0.00000762939453125 262144 18 0.000003814697265625 524288 19 0.0000019073486328125 1048576 20 0.00000095367431640525 Sistema di Numerazione ottale Indicato con “o”, oppure con il numero “8” b=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 6 Sistemi di Numerazione esadecimale (Base 16,indicato anche con H, e) b=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•16-1+d-m•16-m Esempio: A1H = A116 = 10•161+1•160 = 16110 Per avere 16 simboli distinti bisogna aggiungere: AH=10 CH=12 EH=14 BH=11 DH=13 FH=15 Conversioni di Base Conversione dalla base 10 ad una base qualsiasi: parte intera N=d0•b0+d1•b1+d2•b2+ +dn-1•bn-1 N=d0+b(d1+b(d2(… +dn-1))) N/b = d0/b+d1+b(d2(… +dn-1))) D Qd R D/d Q R/d Quindi dividendo N per la base b si ottiene, come quoziente Q, il numero d1+b(d2(… +dn-1)) e come resto R la cifra meno significativa d0 (peso 0 o Less Significative Bit - LSB). Dividendo ancora il quoziente per la base si ottiene la cifra di peso 1 e così via fino ad avere un quoziente 0 La cifra di peso n-1 viene detta Most Significative Bit - MSB 7 Conversioni di Base Esempio di conversione dalla base 10 alla base 2: parte intera 11510 = 11100112 115 2 1 57 1 2 28 0 2 14 0 2 d1 2 7 1 d0 2 3 1 d2 1 1 d3 Metodo delle Divisioni Successive 2 0 d4 d5 d6 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 si moltiplica N per la base 2 si ottiene per la parte intera d -1 e la nuova parte frazionaria: N•2 = d-1+(d-2•2-1+ +d-m•2-m+1) Moltiplicando ancora per 2 la parte frazionaria si ottiene come parte intera d-2 etc. Il risultato termina quando il risultato della moltiplicazione è esattamente 1 o quando si è raggiunta la precisione voluta (una rappresentazione può’ essere finita in una base e infinita in un’altra). 8 Conversioni di Base Esempio di conversione dalla base 10 alla base 2: parte frazionaria Metodo delle Moltiplicazioni Successive 0.625 × 2 1.250 × 2 0.250 x 2 d-1 0.500 × 2 d-2 1.000 × 2 0.000 x 2 d-3 Ci si ferma 0.62510 = 0.1012 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: sia dato il numero decimale 115.625 11510 = 11100112 0.62510 = 0.1012 115.62510 = 1110011.1012 9 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 (0001 0111 00012 = 17116) Tabella Hex - Binario -Decimale. Hex Binario Decimale 0 0000 0 1 0001 1 2 0010 2 3 0011 3 4 0100 4 5 0101 5 6 0110 6 7 0111 7 8 1000 8 9 1001 9 A 1010 10 B 1011 11 C 1100 12 D 1101 13 E 1110 14 F 1111 15 10 Nibble, byte, word … Un bit rappresenta una cifra binaria. Il bit però è un’unità di informazione troppo piccola per poter essere elaborata in modo efficiente. I bit pertanto sono trattati secondo i seguenti gruppi: 1 nibble = 4 bit 1 byte = 8 bit 1 word = 16 bit 1 doubleword = 32 bit 1 Kilobyte = 210 byte = 1024 byte = 8192 bit 1 Megabyte = 220 byte = 1048576 byte ~ 8 milioni di bit 1 Gigabyte = 230 byte ~ 1 miliardo di byte ~ 8 miliardi di bit 1 Terabyte = 240 byte ~ 1012 byte ~ 243 bit Rappresentazione di numeri naturali Quante cifre sono necessarie per rappresentare in numero X in base 2? Se si usano k bit si hanno 2k configurazioni possibili. Si possono pertanto rappresentare i numeri naturali compresi fra 0 e 2k-1 11 Rappresentazione di numeri naturali Tutti i numeri x con 2k-1 - 1 x 2k - 1 richiedono k bit per essere rappresentati Anche 2k-1 x + 1 2k Quindi per rappresentare il numero x occorrono k bit con k= log2(x+1) Cioè l’intero immediatamente superiore a log2(x+1) Rappresentazione di numeri naturali Il risultato vale anche per una generica base b k= logb(x+1) Se B è 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 abbreviazioni: Kilo (K) = 210 = 1024 ~ 1000 Mega (M) = 220 = 1.048.576 ~ 1.000.000 Giga (G) = 230 = ……… ~ 1.000.000.000 Tera (T) = 240 = ……… ~ 1.000.000.000.000 12 Dinamica di una rappresentazione Per K cifre intere Dinamica pari a 2k-1 (valore massimo rappresentabile) Numero di valori rappresentati pari a 2k Dallo 0 al 2k-1 Numeri reali, Rappresentazione in virgola fissa Supponendo di utilizzare n=5 bit per la parte intera e m=3 bit per la parte frazionaria: xxxxx.xxx Per esempio il numero 11000.101 corrisponde a: 1•24 + 1•23 + 1•2-1 + 1•2-3 = 24.625 13 Numeri reali, Rappresentazione in virgola fissa La rappresentazione in virgola fissa limita fortemente l’intervallo numerico utilizzabile. In tale caso è possibile i rappresentare numeri da 2-3=0.125 a 25=32 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 diventa (5:3): 01001.110=9.75 con notevole perdita di precisione. Precisione Ea = Vv – Vr Er = Ea / Vv Er% = Er x 100 Per m cifre dopo la virgola la precisione P è il più piccolo numero rappresentabile Errore assoluto Errore relativo Errore relativo percentuale 2-m, per la parte frazionaria Confronto della precisione con un esempio reale, verifica che la P >= Ea 14 Operazioni sui numeri binari Come per i numeri decimali ma con le seguenti tabelle: Somma: Prodotto: A B A+B A B AB 0 0 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 0 1 1 10 1 1 1 Operazioni sui numeri binari Somma: 0+0=0 0+1=1 1+0=1 1+1=0 con riporto 1 (2)10 1+1+1=1 con riporto 1 (3)10 A B A+B 0 0 0 0 1 1 1 0 1 1 1 10 111 riporto 10110+ 11101 110011 15 Operazioni sui numeri binari Sottrazione: 0-0=0 1-0=1 1-1=0 0-1=1 con un prestito dal bit più a sinistra che vale “2”. prestito 2 11100101 110011 2 A B A-B 0 0 0 0 1 1(1) 1 0 1 1 1 0 2 prestito 1100 1001 0011 Operazioni sui numeri binari Prodotto: A 0 0 1 1 B AB 0 0 1 0 0 0 1 1 1011 1101 1011+ 000001011+ 1011-110111+ 1011--10001111 16 Operazioni sui numeri binari 101101 11 00 01111 101 011 101 11 100 11 011 11 00 Divisione: Operazioni di Shift (Scorrimento) 0 0 1 1 Shift a sinistra: moltiplica per 2 Shift a destra: divide per 2 0 0 1 0 1 1 1 0 0 1 1 0 0 0 0 0 0 1 1 0 0 1 17 Complemento Complemento a b (base): Dato un numero x con base b, e k cifre è definito come Cb(x) = bk - x Complemento alla base diminuita (b-1): Cb-1(x) = bk -1 – x= Cb(x) -1 Proprietà: Cb(x) = Cb-1(x) + 1 Cb (Cb (x)) = x Cb-1 (Cb-1 (x)) = x Complemento alla base Con b=10, k=2 e N=64 Cb(x) = bk - x C10(64)= 102-64=100-64=36 Con b=2, k=5 e N=01011 C2(01011)= 25-01011=100000-01011 10000001011= 10101 18 Complemento alla base diminuita Cb-1(x) = bk - 1- x Con b=10, k=2 e N=64 C9(64)= 99-64=35 Con b=2, k=5 e N=01011 C1(01011)= 25-1-01011=11111-01011 1111101011= 10100 Il complemento alla base diminuita di un numero in base b si ottiene calcolando cifra per cifra il complemento a (b-1) In base 2, è detto complemento a 1 e si ottiene complementando bit a bit (01 e 10) Complemento a 2 veloce Dalla proprietà Cb(x) = Cb-1(x) + 1 Si deve fare il complemento ad 1 di x e si somma 1 Es: x= 01010110 k=8 01010110 10101001 + 10101010 x complemento a 1 1 = sommo 1 complemento a 2 19 Rappresentazione dell’Informazione In un calcolatore si possono rappresentare vari tipi di informazioni: Numeri naturali (visto) Numeri reali in virgola fissa (visto) Numeri interi (da vedere in questa sessione) In varie forme Caratteri Rappresentazione ASCII Rappresentazione dei numeri nei calcolatori La memoria è organizzata in celle (“parole”) con un numero fisso di bit (ad esempio 8 = 1 byte). 0 1 0 1 1 0 0 1 Corrisponde a 1 • 64 + 1 • 16 + 1 • 8 +1 Usando 8 cifre bit si possono rappresentare numeri compresi fra 0 e 28-1 = 255 20 Rappresentazione dei numeri nei calcolatori L’uso un numero finito di cifre porta ad una aritmetica modulare, che ritorna in forma chiusa oltre la dinamica al numero piu’ basso. Incrementi unitari. 0000000 (0) 0000001 (1) 0000010 (2) ……….. ……….. 1111111 (255) (1)0000000 (256 -> 0) 0000001 (1) ……….. •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 2 alla k. Rappresentazione degli interi Disponendo di k bit si possono avere 2k configurazioni diverse. Metà possono essere usate per i numeri positivi, l’altra metà per quelli negativi. Ci sono due possibili rappresentazioni: in modulo e segno in complemento a 2 21 Rappresentazione degli interi in modulo e segno Il bit più significativo viene usato per rappresentare il segno: 0 per i numeri positivi 1 per quelli negativi Le cifre restanti rappresentano il modulo +510 -1010 000001012 100010102 modulo segno Lo zero ha due rappresentazioni: (+0) 00000000 e (-0) 10000000 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 Sottrarre i moduli nell’ordine giusto Macchinoso!! (Analoga la sottrazione). 22 Rappresentazione dei numeri interi in complemento a 2 Se si hanno k bit: I numeri positivi sono rappresentati dal loro modulo e hanno il bit più significativo (segno)= 0 I numeri negativi sono rappresentati facendo il complemento a due del corrispondente numero positivo. Hanno il bit più 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 Rappresentazione dei numeri interi in complemento a 2 01111111 01111110 +127 +126 00000010 00000001 00000000 11111111 11111110 +2 +1 0 -1 -2 10000001 10000000 -127 -128 Supponendo di avere una cella di 8 bit (k=8, 2k=256) 2k-1-1 = 127 -2k-1 = -128 23 Rappresentazione dei numeri in complemento a 2 Se si desidera calcolare A-B con numeri di k bit. È possibile farlo utilizzando il complemento a 2 di B come numero –B. Infatti: A - B = A - B + 2 K - 2K = A + 2 K - B - 2K poiché C2(B) = 2K - B si ha: A - B = A + C2(B) - 2K Per fare una sottrazione si somma il complemento a 2 del secondo operando 2K è un 1 seguito da k zeri, non rappresentabile con k bit e permette di trascurare i traboccamenti (overflow o eventuali riporti). Rappresentazione dei numeri in complemento a 2 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: Es: 10110011 negativo 01001100+ complemento a 1 1 01001101 complemento a 2 = 77 (64+8+4+1) il numero originale era -77 24 Rappresentazione dei numeri in complemento a 2 Esempi (se k=5, è possibile rappresentare i numeri da -16 a + 15): 01001+ 00100= 01101 +9 +4 +13 01001+ 11100= 100101 +9 -4 +5 il traboccamento sul sesto bit viene eliminato grazie al 2K che in questo caso è 100000 A - B = A + C2(B) - 2K Rappresentazione dei numeri in complemento a 2 Esempi (se k=5, numeri da -16 a + 15): 10111+ 00100= 11011 10111+ 11100= 110011 -9 +4 -5 -9 -4 -13 (sesto bit eliminato) 25 Rappresentazione dei numeri in complemento a 2 Esempi (k=5, numeri da -16 a + 15): 01001+ 01000= 10001 +9 +8 OVERFLOW +17 non è rappresentabile con 5 bit 10111+ 10111= 101110 -9 -9 -18 (sesto bit eliminato) OVERFLOW -18 non è rappresentabile con 5 bit Rappresentazione dei numeri in complemento a 2 OVERFLOW (Superamento della dinamica) Si ha quando il risultato non è rappresentabile con il numero di bit disponibili. Si ha solo sommando due numeri entrambi positivi o entrambi negativi (concordanza di segno. In questo caso il segno del risultato risulta opposto a quello degli operandi. 26 Esercizi 1) Calcolare A+B e A AND B con A=(10111011)2 e B=(00110110)2 2) Calcolare A-B e A OR B con A=(10000001)2 e B=(00000101)2 3) Calcolare AxB con A=(10001010)2 e B=(1001)2 4) Calcolare A/B con A=(1100)2 e B=(101)2 5) Si converta da decimale ad ottale il numero 426 6) A quale numero ottale corrisponde (101110110)2? 7) Si convertano i seguenti numeri esadecimali in binari e decimali: (a) (AF5)16 (b) (FE8)16 8) Convertire in binario il numero -1238 utilizzando 16 bit per la rappresentazione. Codici Codice: sistema di simboli che permette la rappresentazione dell’informazione Esempi: Decodifica agevole vs codici compressi 27 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 Esempi di alfabeti Alfabeto italiano: {A, B, C, D, …Z} Alfabeto greco: {α, β, γ, δ, ...ω} Alfabeto binario: {0, 1} 28 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) 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 29 Codice ASCII American Standard Code for Information Interchange 7 bit ASCII esteso quindi 128 simboli diversi (8bit) diverse estensioni in dipendenza dal paese oppure aggiunge la parità Codice ASCII 30 Codice ASCII - Esteso Numeri reali – Rapp. virgola mobile (Floating point) Notazione scientifica/esponenziale 125000000000 può essere scritto come 1.25 • 1011 Anche nella notazione binaria possiamo dire: 10010.101 = 1.0010101 • 24 0.010010101 = 1.0010101 • 2-2 la precisione del numero dipende dal numero di bit a disposizione per la parte frazionaria. 31 Numeri reali - (Floating point) La rappresentazione di macchina dei reali utilizza la codifica floating point normalizzata in base 2 (IEEE 754). I bit di rappresentazione sono suddivisi in tre parti: – 1 bit di segno (bit simbolico, 0 significa positivo); – m bit (mantissa) per la parte frazionaria della parte significativa; – n bit (rappresentazione caratteristica) per l’esponente mantissa segno esponente (rappr. caratteristica) X = f0.f-1f-2f -3…f -p (10)2e – Il bit f0 (sempre = 1, normalizzazione a 1) e il fattore di scala (sempre = (10)2) non si rappresentano. Numeri reali - (Floating point) Rappresentazione reale corto a 32 bit: 1 bit segno mantissa (s) 23 bit modulo mantissa (m) 8 bit caratteristica (c) 1 s 8 c 23 m 32 Numeri reali - (Floating point) Rappresentazione reale lungo a 64 bit: 1 bit segno mantissa (s) 52 bit modulo mantissa (m) 11 bit caratteristica (c) 1 s 11 c 52 m Numeri reali - (Floating point) Rappresentazione reale didattico a 16 bit: 1 bit segno mantissa (s) 10 bit modulo mantissa (m) 5 bit caratteristica (c) 1 s 5 c 10 m 33 Numeri reali - (Floating point) Rappresentazione della caratteristica: Si utilizza la forma ad eccesso a t C = E + t = E + (2k-1-1) dove: C = caratteristica E = esponente in binario k = numero di bit per la caratteristica la forma ad eccesso a t consente di evitare l’uso di un bit per il segno dell’esponente (Polarizzazione). Per K = 8 bit t = 27-1 = +127 e C va da 0 a 255 C E 0 * 1 -126 … … 126 -1 127 0 128 +1 … 255 +128 *Valore riservato per la rappresentazione del numero 0 Numeri reali - (Floating point) Consideriamo il valore corrispondente alla configurazione (a 32 bit): 0 S 0 0 0 0 0 0 C=8 0 0 0 0 0 … 0 M = 23 0 0 Il numero rappresentato è: +1.00...00 (10)2e=c-t=-1111111 = 1 • 2-127 = 5.87 • 10-39 Il valore rappresentato è molto piccolo ma non è zero. Per convenzione si assume che la configurazione precedente rappresenti lo zero. 34 Numeri reali - (Floating point) Consideriamo la rappresentazione a 32 bit, si ha: dinamica: 2t+1 = 2128 precisione: il numero più piccolo rappresentabile (con la convenzione dello zero) 2-t+1 = 2-126 errore: se il numero non è esattamente esprimibile come potenze del 2, si commette sempre un errore di rappresentazione. Numeri reali - (Floating point) Esempio 1: rappresentazione a 16 bit (s=1, c=5, m=10) (511)10 = (111111111)2 1.11111111 (10)21000 C = E + t = 01000 + 01111 = 10111 0 s 10111 c 1111111100 m Esempio 2: rappresentazione a 16 bit (s=1, c=5, m=10) (-1530)10 = -(10111111010)2 -1.0111111010 (10)21010 C = E + t = 01010 + 01111= 11001 1 s 11001 c 0111111010 m 35 Numeri reali - (Floating point) Esempio 3: rappresentazione a 16 bit (s=1, c=5, m=10) (35.96)10 = (100011.11110101…)2 1.0001111110 (10)20101 C = E + t = 00101 + 01111 = 10100 0 s 10100 c 0001111110 m Il numero rappresentato non è 35.96, infatti: 1.0001111110 (10)20101 = (100011.11110)2 = 35.9375 E’ avvenuto un troncamento dovuto al numero di bit che erano a disposizione nel tipo di rappresentazione scelta. Un numero maggiore di bit di mantissa avrebbe consentito una rappresentazione più vicina al valore vero. Numeri reali - (Floating point) Per valutare l’effetto del troncamento di bit si possono valutare: Errore Assoluto EA = Vv - VR Errore Relativo ER = (Vv - VR)/Vv Errore Percentuale Ep = ER • 100 (%) dove: Vv valore vero e VR valore rappresentato Con riferimento all’esempio precedente Vv = 35.96: EA = 35.96 - 35.9375 = 0.0225 -3 ER = 0.225/35.96 =0.62 • 10 -3 2 Ep = 0.62 • 10 • 10 = 0.062 % 36 Somma di numeri reali - (Floating point) L’operazione di somma prevede le seguenti fasi: rendere uguali le caratteristiche dei due addendi, traslando opportunamente la mantissa del numero con caratteristica più piccola la caratteristica della somma è uguale alla caratteristica comune la mantissa della somma è uguale alla somma delle mantisse normalizzate a 1. Anche nella somma possono sorgere problemi di troncamento Somma di numeri reali - (Floating point) Esempio 1: siano x=511 e y=1530 (16 bit) (511)10 = (111111111)2 1.1111111100 (10)21000 (1530)10 = (10111111010)2 1.0111111010 (10)21010 La caratteristica di x deve essere aggiustata: 0.0111111111 (10)21010 (shiftare di n a dx vuol dire sommare n alla caratteristica) Si sommano le mantisse (normalizzazione non necessaria): 0111111111 + 0111111010 = 1111111001 Il risultato è: 1.1111111001 (10)21010 = (11111111001)2 = (2041)10 s c m 0 11001 1111111001 37 Esercizi 1) Si dica a quale numero decimale corrisponde il seguente numero binario: 011011010.1010. 2) Si convertano da decimali a binari i seguenti numeri x=532.14 e y=893.97 utilizzando la rappresentazione in virgola fissa con 10 bit per la parte intera e 6 per la parte frazionaria. 3) Si convertano da decimali a binari i numeri dell’esercizio 2 utilizzando la rappresentazione in virgola mobile a 32 bit e si valutino gli eventuali errori di rappresentazione. 4) Ripetere l’esercizio 3) con rappresentazione reale corto. 5) Si esegua la somma in virgola mobile dei numeri x=111.56 e y=1.345 utilizzando la rappresentazione a 16 bit e per il risultato ottenuto si valutino gli eventuali errori di rappresentazione. 38