Rappresetazioe dell'iformazioe I calcolatori elettroici soo macchie i grado di elaborare iformazioi trasformadole i altre iformazioi. Nel modo dell'iformatica, itediamo i modo più restrittivo per iformazioe tutto ciò che può essere rappresetato tramite opportue sequeze di simboli i u alfabeto prefissato. Rappresetazioe dei umeri aturali Prof. Daiele Gorla U codice C è u isieme di parole composte da simboli di u alfabeto Σ (detto alfabeto di supporto di C). Esempi di codici Codice 1 Codice 2: Codice 1: Liguaggio ligua Biario Italiaa 00 Macchia Codice 2 Macchia 00 Razzo 01 Razzo 01 Aereo 10 Aereo 10 Codifica e decodifica CODIFICA La codifica di u isieme di iformazioi I i u dato codice C è ua fuzioe f : I C Esempio: macchia 00 razzo 01 aereo 10 dove: I è u sottoisieme di parole della ligua italiaa C è u sottoisieme delle parole composte da 0 e 1 DECODIFICA La decodifica di ua iformazioe codificata i precedeza è ua corrispodeza g : C I (tipicamete, è la fuzioe iversa di f ) Esempio: 00 macchia 01 razzo 10 aereo 1
Criteri di valutazioe di ua codifica Ecoomicità: soo cosiderate migliori rispetto a questa caratteristica le codifiche che utilizzao pochi simboli. Semplicità di codifica e decodifica: è auspicabile poter trasformare u liguaggio da u codice all'altro i modo efficiete Semplicità di elaborazioe: soo preferibili le codifiche che cosetoo di eseguire le operazioi defiite sui dati i modo agevole (ad esempio, sostituedo ai simboli arabi i simboli dei umeri romai, "saltao" il meccaismo del riporto e della posizioalità). Sistemi posizioali U sistema umerico posizioale i base b, ovvero basato su u alfabeto Σ di b simboli distiti, cosete di esprimere u qualsiasi umero aturale N di m cifre, mediate la formula m 1 N = c i b i, c i Σ i= 0 Ad esempio, el sistema decimale (b=10, Σ=0,1,..9), la sequeza N 10 = 254 esprime il umero 254 10 = 200 + 50 + 4 = 2 10 2 + 5 10 1 + 4 10 0 Similmete, i base 7 (b=7, Σ=0,1,..6), la stessa sequeza di cifre N 7 = 254 esprime il umero 254 7 = 2 7 2 + 5 7 1 + 4 7 0 ( = 137 10 ) Quidi ad esempio 10 10 e 10 2 hao sigificato diverso ache se le sequeze di simboli soo le stesse (1 seguito da 0)!! Bisoga iterpretare ua striga di simboli, ua volta che ci vega detto il codice utilizzato per geerarla (decodifica) Esempio: case IT ENG 2
Codice biario Codice biario: u codice costituito dai soli simboli 0 ed 1. Quidi, b=2 e Σ ={0,1} I simboli 0 ed 1 predoo il ome di bit, ua cotrazioe per biary digit. Perchè il codice biario? George Boole dimostrò come la logica possa essere ridotta ad u sistema algebrico molto semplice che utilizza solo u codice biario. Il codice biario fu trovato particolarmete utile ella teoria della commutazioe (Claude Shao) per descrivere il comportameto dei circuiti digitali (1=acceso, 0=speto). Ogi tipo di iformazioe può essere codificata co u codice biario. Comiciamo co i umeri: i codici sarao diversi a secoda che si vogliao rappresetare umeri aturali, iteri, razioali, Si possoo poi rappresetare parole (sequeze di caratteri dell alfabeto codici ASCII e UNICODE), immagii, suoi, Rappresetazioe biaria di umeri aturali U umero aturale N i base 2 di bit può essere rappresetata mediate la formula: 1 N 2 = c i 2 i, c i 0,1} i=0 Il bit c 0 viee detto LSB (less sigifyig bit) metre c -1 viee detto MSB (most sigifyig bit). Esempio: 111001 2 = 1 2 5 +1 2 4 +1 2 3 +0 2 2 +0 2 1 +1 2 0 { Cambiameto di base per i umeri aturali Coversioe di base: metodo poliomiale Problema: covertire u umero N espresso i base a (N a ) i u umero N espresso i base b (N b ) Si usa l espressioe 1 i a i= 0 i i N = ca, c 0,..., a 1 Si esprime il umero N a come u poliomio, usado i umeri dell alfabeto b el poliomio Si valuta il poliomio usado l aritmetica i base b { } Esempio (da base 2 a base 10): 111001 2 = (1 2 5 +1 2 4 +1 2 3 +0 2 2 +0 2 1 +1 2 0 ) 10 = (32+16+8+0+0+1) 10 = 57 10 3
Metodo poliomiale Difficile da usare se la base di arrivo (b) o è 10 (bisoga lavorare ell aritmetica modulo b!!) Esempio (da base 7 a base 3): 3602 7 = (10 21 3 + 20 21 2 + 0 21 1 +2 21 0 ) 3 SERVE UN ALTRO METODO!!! Teorema fodametale dell algebra Per ogi D,d N, esiste u uica coppia q,r N t.c. D = q d + r, co 0 r < d dividedo resto quoziete divisore Notazioalmete, q = D div d r = D mod d Per esempio, 7 div 3 = 2 7 mod 3 = 1 N = c 0 + c 1 b 1 + c 2 b 2 + c 3 b 3 + + c -2 b -2 + c -1 b -1 = c 0 + b (c 1 + c 2 b 1 + c 3 b 2 + + c -2 b -3 + c -1 b -2 ) resto quoziete dividedo divisore da cui N mod b = c 0 N div b = c 1 + c 2 b 1 + c 3 b 2 + + c -2 b -3 + c -1 b -2 = N (1) Iterado N (1) mod b = c 1 N (1) div b = c 2 + c 3 b 1 + + c -2 b -4 + c -1 b -3 = N (2) N (2) mod b = c 2 N (2) div b = c 3 + + c -2 b -5 + c -1 b -4 = N (3) Fiché arrivo ad N (-1) = c -1 e allora avrò N (-1) mod b = c -1 N (-1) div b = 0 Coversioe di base: metodo delle divisioi iterate Covertire N a i base b 1. Dividi ripetutamete N a per b a (N.B.: b va espresso i base a e la divisioe va fatta i base a) 2. I resti delle divisioi covertiti i base b dao le cifre, dalla meo sigificativa alla più sigificativa, di N a espresso i base b. Esempio: 657 10 i base 4 657 : 4 = 164 resto 1 164 : 4 = 41 resto 0 41 : 4 = 10 resto 1 10 : 4 = 2 resto 2 2 : 4 = 0 resto 2 Quidi, 657 10 = 22101 4 4
Esempio (da base 10 a base 16) Esempio (basi di parteza e arrivo diverse da 10) 1) 317 : 16 Q=19 10, r=13 10 13 10 =D 16 (LSD) Quidi 317 10 =13D 16 Dividere 317 10 per 16 10 (i base 16, le cifre soo 0,1,,9,A,B,,F) 2) 19 : 16 Q=1 10, r=3 10 3 10 =3 16 3) 1 : 16 Q=0 10, r=1 10 1 10 =1 16 (MSD) N.B.: ell algoritmo sopra descritto, la divisioe va eseguita i base a (cioè ella base del umero di parteza). Se a 10, questo è complicato. Covertire 102202 3 i base 5 Due strade : a) eseguire ripetutamete 102202 3 : 12 3 N.B.: divisioe co aritmetica i base 3 DIFFICILE! b) covertire 102202 3 i base 10 (metodo poliomiale) e poi covertire il risultato i base 5 (divisioi iterate) 102202 3 = 3 5 + 2 3 3 + 2 3 2 + 2 = 317 10 317:5 = 63 resto 2 63:5 = 12 resto 3 12:5 = 2 resto 2 2:5 = 0 resto 2 Quidi, 102202 3 = 2232 5 Coversioi da base a a base a k Prop.: ell aritmetica i base a si ha che c -1 c 1 c 0 mod a k = c k-1 c 0 c -1 c 1 c 0 div a k = c -1 c k Esempio (a = 10 e k = 2): 453 10 mod 100 = 53 453 10 div 100 = 4 (essedo 100 = 10 2 ) Quidi, se b = a k e N a = c -1 c 1 c 0, allora il umero i base b è (c -1 c hk ) b (c 3k-1 c 2k ) b (c 2k-1 c k ) b (c k-1 c 0 ) b Caso specifico: Coversioe da base 2 a base 2 k Cosidera i bit a k-ple partedo dal meo sigificativo e traducile i base 2 k Esempio: covertire 1000111101 da base 2 a base 4 (= 2 2 ) (10 00 11 11 01) 2 = (2 0 3 3 1) 4 Esempio Covertire 101001101101 da base 2 a base 8 e 16 OSS: 8=2 3 e 16=2 4 Prima coversioe: dividi i triple e coverti (101 001 101 101) 2 (5 1 5 5) 8 Secoda coversioe: dividi i quadruple e coverti (1010 0110 1101) 2 (A 6 D) 16 OSS: el dividere i gruppi da k bit, il gruppo più sigificativo potrebbe avere meo di k bit (se la striga di parteza o ha lughezza pari a u multiplo di k); i tal caso vao aggiuti degli zeri Es: 1001101101 da base 2 a base 8: 001 001 101 101 5
Coversioi da base b k a base b Similmete, se a = b k e N a = c -1 c 1 c 0, allora il umero i base b è (c -1 ) b (c 2 ) b (c 1 ) b (c 0 ) b dove ogi c i è covertita i base b usado k cifre. Esempio 1: Covertire 8315 9 i base 3 Essedo 9 = 3 2, coverto ogi cifra del umero dato i base 9 co due cifre i base 3: 8 3 1 5 9 = 22 10 01 12 3 Esempio 2: Covertire 8D3A 16 i base 2 Essedo 16 = 2 4, coverto ogi cifra del umero dato i base 16 co quattro bit: 8 D 3 A 16 = 1000 1101 0011 1010 2 Coversioe di base: Riassuto Il metodo poliomiale è facile se la base di arrivo è 10 Il metodo delle divisioi iterate è facile se la base di parteza è 10 Se é la base di parteza é quella di arrivo è 10: Soluzioe geerale: Coverto N a i base 10 col metodo poliomiale Coverto il umero otteuto i base b col metodo delle divisioi iterate Se la base di arrivo è poteza della base di parteza (b = a k ): Coverto i base b k-ple di cifre, dalla meo alla più sigificativa, di N a Le cifre così otteute dao le cifre, dalla meo alla più sigificativa, del umero rappresetato i base b Se la base di parteza è poteza della base di arrivo (a = b k ): Coverto i base b ogi cifra di N a usado k cifre (di base b) Per covicervi dell esattezza del metodo, fate le coversioi iverse come spiegato ei lucidi precedeti! 21 Numero di sequeze biarie Itervallo di Rappresetazioe Avedo a disposizioe bit, quate diverse sequeze posso creare? 1 bit: 0, 1 2 sequeze 2 bit: 00,01, 10,11 4 sequeze 3 bit: 000,001,010,011, 100,101,110,111 8 sequeze 4 bit: 16 sequeze Ad ogi passo raddoppio le sequeze del passo precedete bit: 2 2 2 2 = 2 sequeze Quidi, co bit, rappresetiamo 2 umeri: {0,,2-1} Ifatti, il umero più piccolo che possiamo rappresetare è 0 0 = 0 + + 0 = 0 metre il umero più grade che possiamo rappresetare è 1 1 1 = i = 2-1 (è la serie geometrica!) 2 i = 0 23 24 6
Lughezza della rappresetazioe Di quati bit abbiamo bisogo per rappresetare u umero N 2? Risposta: dobbiamo trovare il più piccolo N tale che N < 2 OSS: log b k è l espoete che bisoga dare alla base (b) per otteere l argometo (k), cioè k = b log b k Quidi, poedo k = N e b = 2, la soluzioe di N = 2 è = log 2 N N.B.: i geerale, è u umero irrazioale. Siccome voglio u aturale e o voglio l uguagliaza esatta, predo log 2 N +1 Esempi: N = 57: log 2 N = 5,8328 quidi ho bisogo di 5+1 bit (ifatti 57 10 = 111001 2 ) N = 64: log 2 N = 6 quidi ho bisogo di 6+1 bit (ifatti 64 10 = 1000000 2 ) 25 Lughezza di parole di codice Per semplicità, gli elaboratori lavorao su parole di codice di lughezza fissata, tipicamete, poteze di 2 bit: 8 bit = byte 16 bit = half-word 32 bit = word 64 bit = log word Sia k la lughezza della parola di codice adottata: se u umero è rappresetabile co esattamete k bit, siamo a posto se u umero è rappresetabile co meo di k bit (diciamo ), dobbiamo iserire i testa k- zeri (o sigificativi) se u umero, per essere rappresetato, richiede più di k bit? Si cosiderao solo i k bit meo sigificativi del umero situazioe di errore detta overflow 26 7