You are on page 1of 56
Tor Vergata Rappresentazione dei dati e codici Alessandro Pellegrini a.pellegrini@ing.uniroma2.it La necessita della rappresentazione + Icomputer elaboarno tipologie di dati differenti + testo, immagini, musica, programm, ... + Tuttavia l’unica informazione che i processori sono in grado di manipolare sono due livelli di informazione * alto/basso + acceso/spento * si/no * 0/1 + Per poter manipolare dati differenti, ¢ necessario accordarsi su come rappresentarli Sistemi di codifica + L’obiettivo & quello di rappresentare insiemi di oggetti da manipolare + taliinsiemi devono necessariamente essere finiti + Si utilizza un insieme di simboli (chiamato alfabeto), similmente finito * Ogni elemento dell’insieme di oggetti da rappresentare viene associato ad una configurazione di simboli * Tale associazione é il codice, 0 sistema di codifica re ee ee ee m2 de dre 2 ee ere mas «me ams etme ems ce re ee ee ed Bs es Hs Oe es oe HR Br Br Sr Wo Bo BSH Fo Be He Ms CH es Ho Gs > Go to {0 #2 MH» fo Ks Numeri e numerali + Numero: entita astratta che “esiste” indipendentemente dalla nostra rappresentazione * Numerale: sequenza di caratteri che rappresenta un numero in un dato sistema di numerazione * Esempio: + 2", con nil numero di bit usati per la rappresentazione. * Secondo caso: somma algebrica di due numeri negativi A e B. Siha overflow se A + b > 2"71, con n il numero di bit usati per la rappresentazione. + Tali circostanze si verificano se gli ultimi due riporti sono discordi. 20 Complemento a due en Q1111 + eeee01 10000 10 10100 + 10101 e1001 : condizioni di overflow ee 1100 e1101 11 10111 10100 + e0ee01 = + 11101 = a Rappresentazione in eccesso Anche chiamata offset binary o biased Si seleziona un numero k nell’intervallo rappresentabile Viene utilizzata la codifica binaria di k per rappresentare lo zero Quando si utilizzano n bit, tipicamente si pone k = 2"-1 * Lo zero é rappresentato con un valore con la sola cifra pitt significativa parial + Viene conservato l'ordinamento dei numeri (non é vero con il complemento a 2) La codifica ¢ estremamente semplice: x=xtk x=x'-k Vi é una sola rappresentazione dello zero L’intervallo rappresentabile é [-2"-1, 2"-1 — 1] 2 Numeri in virgola mobile Numeri reali Esistono molte quantita reali che non possono essere memorizzate accuratamente in numeri interi: + lunghezze + prezzi * temperature + frequenze delle note musicali * velocita Esiste un numero massimo che puo essere rappresentato data una parola di n bit: * cosa succede se dobbiamo rappresentare una quantita maggiore? Vi é un particolare dispositivo, la Floating Point Unit (FPU) che é in grado di manipolarli 24 Rappresentazione di base + La rappresentazione dei numeri in virgola mobile si basa su uguaglianze di questo tipo: 1.2345 = 12345 x 1074 } esponente mantissa base + Ilnome virgola mobile (floating point) si riferisce al fatto che la virgola pud “muoversi” avanti e indietro + E sufficiente “adattare” l’esponente * Sono stati proposti standard differenti nel tempo * Studieremo lo standard IEEE 754 a 32 bit * Proposto nel 1985, é implementato in tutte le FPU convenzionali 25 IEEE 754: tipi di numero zeri: @ possibile rappresentare +0 (ci sono due zeri) + La maggior parte delle operazioni ignora il segno, ma dividere per +0 pud dare come risultato +00 infiniti (++ 00): sono il risultato di una divisione per zero, o di un’operazione che genera un overflow. NaNs (Not a number): sono il risultato di un’operazione che non ha significato (00 — 00, 0/0, V=1, ...) Numeri normalizzati: sono la maggior parte dei numeri rappresentabili dallo standard Numeri denormalizzati: valori molto prossimi allo zero. Generano alcuni problemi nella gestione degli errori di arrotondamento. 26 Rappresentazione di tutti i tipi di numero + Numeri differenti sono rappresentabili nello stesso formato * Valori speciali dell’esponente consentono di individuare le diverse classi di valori o m [1,254] qualsiasi ..m (numeri normalizzati) 0 #0 (<1) 2-276. 0.m (numeri denormalizzati) 0 o (-1)$ +0 (zero con segno) 255 0 (-1)§ © (infinito con segno) 255 #0 NaN 27 Eccezioni In alternativa a NaN e infiniti, ¢ possibile richiedere alle FPU di sollevare delle eccezioni. Invalid operation: generata quando si calcola un’operazione non matematicamente corretta; Overflow: indica che il risultato di un'operazione é troppo grande per essere rappresentato da un numero in virgola mobile; Division by zero: viene alzata quando si calcola x/+ 0 quando x # 0; Underflow: analoga all’overflow, per risultati troppo piccoli Inexact: il risultato "reale" non pud essere rappresentato (vi é un errore di arrotondamento) 28 Rappresentazione di un numero normalizzato (32 bit) ne an ° * Un float ha dimensione 32 bit cosi utilizzati: © segno s: 1 bit + esponente e: 8 bit * mantissa m: 23 bit + L’esponente decimale E é rappresentato in eccesso a 127: e = E+127 + La mantissa rappresenta il valore binario (1.m)2 29 Valore decimale di un numero normalizzato (32 bit) ne an ° * Il valore decimale di un numero normalizzato pud essere calcolato come: (-1)8 26-127. 1m 30 Massimo e minimo numero positivo rappresentabile * Caso dei numeri normalizzati: + La mantissa rappresenta i numeri nell’intervallo: [(4.00000000000000000000000),, (1.11111111111111111111111), * Gli esponenti minimo e massimo sono 127 ¢ -126 * — minimo: 2°16 = 1,1754943508 x 10-38 * — massimo: 217 x (2 - 2-8) = 3.4028234664 x 1038 * Caso dei numeri denormalizzati: + La mantissa rappresenta i numeri nell’intervallo: [(0.00000000000000000000001),, (0.11111111111111111111111), + L’esponente é -126 * —minimo: 2-!?6 x 2-% = 2-9 = 1.4012984643 x 10-4 * — massimo: 2-126 x (1 = 2-2) = 1.1754942107 «10-38 a Errori di approssimazione + Inumeri reali sono infiniti, ma i bit utilizzati per la rappresentazione di un numero in virgola mobile sono finiti + Inoltre, ogni volta che effettuiamo un’operazione su un numero in virgola mobile, commettiamo un errore di approssimazione + Ilrisultato é che, anche se l'insieme dei reali ¢ totalmente connesso, l'insieme dei numeri in virgola mobile & sparso floating-point numbers 2 Errori di approssimazione + La presenza di numeri massimi e minimi rappresentabili crea dei “buchi” nella linea dei numeri rappresentabili + Altri buchi (piccoli) si creano tra la rappresentazione normalizzata e quella denormalizzata + Se un numero non é rappresentabile in alcun modo: * — overflow: numero troppo grande o troppo piccolo (negativo) * underflow: arrotondamento allo zero normalizzati | Genorma enorme) ormalizzati ati izzat 3.40410 1.48% 10-38 140x104 Q) 340x109 3 Errori di approssimazione * La divisione in mantissa/esponente fa nascere un ulteriore peculiarita del formato * Quando siamo vicini allo zero, l’esponente é piccolo, quindi un incremento nella mantissa di 1 provoca un “salto” piccolo + Viceversa, per numeri grandi, questo salto sara maggiore * La densitd dei numeri in virgola mobile non é quindi costante * con 32 bit, circa meta dei numeri rappresentabili sono compresi tra -1 ¢ 1 * viéla stessa quantita di numeri rappresentabili tra 65536 e 131072 feel stninleeandenelinfiil sre ~4n -3n -2n n 0 n 2n 3n 4n 4 Come misurare l’errore + E possibile quantificare l’errore di approssimazione commesso nella rappresentazione di un numero in virgola mobile * Si pué utilizzare la nozione di errore assoluto: Ey=x-x + Euna quantita algebrica che ci dice quanto si é perso dell’informazione originale * Si pué utilizzare anche la nozione di errore relativo: x-x p= k x + Evuna quantita adimensionale che indica se l’errore commesso é grande 0 piccolo + La quantita —logyo €g ci indica il numero di cifre non affette da errore 35 Un esempio Consideriamo x = 3.5648722189 e supponiamo di volerlo rappresentare utilizzando soltanto quattro cifre decimali: x= X = 3.5648 Con questa approssimazione, otteniamo un errore relativo pari a: _ x= 35648722189 — 3.5648 f= 35648722189 = 0.000020258 Il numero di cifre affidabili di Zé pari a: —logio (0.000020258) = 4.69 46 Codici ridondanti e irridondanti Codifiche arbitrarie * Dovrebbe essere chiaro che ad una data parola di n cifre binarie possiamo far corrispondere quello che vogliamo + Ad esempio, potremmo scegliere la seguente rappresentazione per i giorni della settimana Mercoledi e10 Giovedi el 38 Codici ridondanti e irridondanti * Fino ad ora abbiamo implicitamente assunto che esiste una sola codifica per ciascun elemento degli insiemi che vogliamo rappresentare * Dati N elementi da rappresentare, n cifre binarie disponibili per la codifica e m = [log, N]: * Sen =m, allora il codice é irridondante * Sen> m, allora il codice é ridondante * Nel caso di un codice ridondante, le k = n — m cifre aggiuntive sono chiamate cifre di controllo 39 Codici ridondanti e irridondanti * Sidice distanza di Hamming h il numero minimo di cifre diverse tra due parole del codice d(10010, 01001) = 4 d(11010,11001) = 2 + La distanza di Hamming di un codice é quindi: h=min(d(@,y)) per ogni x # y appartenenti al codice + Nel caso di codice irridondante, la distanza é 1 * Un codice ridondante é capace di rivelare errori di peso < h—-1 40 Codici ridondanti e irridondanti * Icodici ridondanti sono di grande importanza pratica: + laridondanza permette di riconoscere o correggere gli errori + Errori legati alle inversioni di bit si verificano pit frequentemente di quanto si possa immaginare: * errori di trasmissione * particelle ionizzanti che colpiscono celle di memoria + Amplissimi spazi di applicazione: + aerospazio * supercomputer * reti di calcolatori causa di errore 10001 11001 a Codici rivelatori di errore ee A 200 B e11 100 000 O Parole del codice (legali) @ Perle non appartenenti al codice 010 1 101 oon ua on 100 00 10 10 h=2 101 oor un ou 2 Codici ASCII + American Standard Code for Information Interchange (ASCII): la rappresentazione pid comune per i caratteri, basata su un byte * Superato da Unicode per estendere la quantita di simboli rappresentabili + ASCII tradizionale: 7 bit. Permette di rappresentare 128 caratteri differenti * codici di controllo: [0,31] e 127 * non permette di rappresentare lettere accentate * Lottavo bit del byte era usato come codice di controllo di errore + ASClIl esteso: 8 bit. Permette di rappresentare 256 caratteri (compresi i codici di controllo) 4B Codici ASCII om eT na CT co oo om ooodn 9 | NUL_| 0100000 | 92 | space | 1000000 | 64 | @ | 1100000 ‘0000011 | SOW | O10 0001 5. r soo0001_| 65 | A170 0001 ‘ooooro 2 [STK | or 0010/3 soo0o10 | 6s_| 8 | 1100010 ooooot $3 | em | ooo) 38 sooo | 67_| | _t700017 0001004 | gor | oroo10 38. soo0100 68 | >| 1100100 ooooior | ENQ_ | ovwo1r 37 | tomar | 68 | to or01 oonoi0 6 | ACK OworD 3B sooor0 70 | Ff | 100170 oooois! 7 | BEL | —oroo1n | 30 * sooo [71 | | roars ‘00010008 | es | 010 1000.40 ( 100100072 | | 1101000, (oo t001 8 | HT | oro 001 at } soo t001 | 73 | 1) tt t008 0070040 | LF ovo ae sooto0 74 | s| 01010 ooo 1) vr | omar as soto | 758 | Kk) t101017 ‘000110012 |—FF | 010 1100 ae soo too | 76 |b —| 01100 oootior13—| cr | o1o7i01 as. soo t101_ | 77 | M_| tt 1100 ‘00117014 SO| 01011104 soot 78 | N00 coon ts) sl oat ar soot | 79_| | tort (O01 0000/16 | OLE | 011000048) 0 3010000 @0_ | P| 1110000 ‘ot o0o1 17 | per ort ooo 40 so10001 | 8t_| | t1-0007 oto 1@ orto010 50, so10010 a2 || T0010 onto! 18 bes_| ooo st) so10011 | 83 |) 1110091 ot 0100-20. | bes ort 0100 sz so10100 aa | Tt 0100 ooroior 21 | NAK| on 0101 53 so10101 | 85 | Ut For cori 22 | SYN) ONO Se soo 86 |) toro oot oin1 | eTB | onoi | 58 sorort | 67 |W) tit ori (001 100024 |GAN | 011 1000558 01100088 |X| 144 t000 Oot toot 25 | eM | orton s7 01 t001_ | 89_| | _t11-t001 ‘ot 101026 SuB_ O11 701058 x01 101099 | 2) ta t010 oottort 27 | esc ON0r1 | 60 sortor [er || tittor Oot ti00 28 FS Ont 100 oo 1011100 | 92 4111100 corto! 28 Om tior | 61 wor ttt 93 [ai tion corti 30 onan 8 > soit ot at11%0 oot? UST qor iit 85 7400000427 44 Codice Binary Coded Decimal (BCD) * Eun codice irridondante per rappresentare le 10 cifre decimali usando quattro cifre binarie * Ciascuna cifra é codificata indipendentemente + Tipicamente, due cifre sono memorizzate in un singolo byte (packed BCD) * Di facile interpretazione per gli umani, comodo per consentire alle macchine una conversione per la stampa * Molti bit sono sprecati (circa 1/6) rispetto alla rappresentazione binaria ee 5 e 1 2 3 6 7 8 Codice di Gray Un codice irridondante a lunghezza fissa, inventato da Frank Gray (1953) La rappresentazione é tale per cui tra due numeri adiacenti cambia una ed una sola cifra binaria Utile nel caso di contatori elettromeccanici per evitare fenomeni transitori: * Consideriamo la transizione (3)19 > (4)19 = (011), > (100), Possono verificarse molte sequenze intermedie, ad esempio: (011), > (010), > (000), > (100), Il sistema non pud distinguere tra configurazioni transitorie e corrette pees G pee) e 000 4 1 ee1 5 2 e11 6 Codice di parita Un semplice codice ridondante con h = 2 Si ottiene aggiungendo una cifra di paritd ad un codice irridondante Due tipologie: parita: vale 1 se il numero di 1 nella codifica irridondante é dispari disparita: vale 1 se il numero di 1 nella codifica é pari 201 ee 1 201 @ e1e e1e 1 e10 @ 11 on @ e111 108 108 1 100 @ 101 1011 110 1101 rende pari o dispari il numero di 1 nella parola 47 Codice di parita: rivelazione degli errori * Supponendo di usare un codice di parita * Si pud determinare se c’é stato un (singolo) errore di trasmissione verificando la parita in ricezione se pari a 0, non c’é stato errore di trasmissione (0 pit di uno!) Bit di informazione inviati Bit di informazione ricevuti fern Poses) Verifica Pouce Segnale di grrore b, +b, +by+p=0 by +b,+by+p=? 48 Esempio Voglio trasmettere 101 Il generatore di parita calcola p = 0 Viene trasmesso 1010 ree Par ener eres 101¢ uguale a zero OK 111 diversa da 0 ERRORE 1411 uguale a zero OK 49 Codice di Hamming E un metodo per la costruzione di codici a distanza h > 3 Data una parola di codice dim = n + k cifre, conn < 2" —k — * ibit in posizione 2! sono bit di parita ciascun bit di parita controlla la correttezza dei bit di informazione la cui posizione, espressa in binario, ha un 1 nella potenza di 2 corrispondente al bit di parita [4] | we] a7 | ae | a9 | 20 a9 di a1 pie da dis du ais “ ¢ we ¢ ¢ ¢ “ Copertura bit di parita rARARArArZ 50 Esempio + Traformiamo un valore ASCII a n=7 bit in un codice di Hamming h=3 + Poichén < 2k—-k-1,k=4em=11 + Ibit di parita sono in posizione 1, 2, 4, 8 + Supponiamo di voler codificare la cifra ASCII @ (in codice: 8116000) Posisone bit a | 2 ® ‘Dato codificato v Copertura bitdi parita + Ilvalore codificato & quindi 11001109000 st Esempio + Supponiamo di ricevere: 11001100100 * Possiamo calcolare il numero di controllo N, = (p1 P2 P4 Ps) : Posiionebit [a [2 Dato codifieste a Copertura bit di parte * Poiché N, = (1001)2 = (9)10, sappiamo che si é verificato un errore di trasmissione. Inoltre, sappiamo che il bit errato é in nona posizione! * Possiamo quindi ricostruire il valore corretto del dato trasmesso 52 Riassumendo Rappresentazioni dei numeri interi + Esistono differenti rappresentazioni per i numeri interi oa me 2008 e 2002 a Es one 2 6 e012 3 5 e128 4 “4 e1en 5 3 one 6 Ea ena 7 EI 028 @ 1001 7 1 a01e 18 a 5 *6 2 sea u EF “4 5 3 118 2 “4 Bs 4 4 ser a 5 2 3 5 ane ry 6 Ey 2 6 aaa 15 7 a 7 Rappresentazione dei numeri in virgola mobile * Utilizzano tre campi differenti per rappresentare un numero reale * A seconda della versione dello standard utilizzato, i campi hanno dimensioni in numero di cifre differenti * Poiché il numero di cifre utilizzato é finito, non possiamo rappresentare tutti i numeri reali esistenti * La distribuzione dei numeri rappresentabili non é uniforme + Si possono verificare errori nei calcoli 55 L’importanza del contesto * Le varie rappresentazioni non sono intercambiabili tra loro + Tuttavia, fissato un numero di cifre binarie, una certa parola pud essere ambigua: @11101010100100000110 + La corretta interpretazione della parola dipende dal contesto * Il processore non é in grado di discriminare il contesto autonomamente * Ecompito del programmatore * Un’interpretazione errata del contesto pud portare a errori * Nel caso peggiore, a violazioni di sicurezza 56

You might also like