Lezione 2 Analogico/Digitale Il sistema binario L’aritmetica binaria La conoscenza del mondo • Per poter parlare (ed elaborare) degli oggetti (nella visione scientifica) si deve poter assegnare a questi una descrizione • la descrizione può essere: – categorica – ordinale – numerale 1 Dati e interi • non significa che tutte le operazioni che sono permesse con gli interi hanno adesso senso per i dati categorici o ordinali (la corrispondenza non è biunivoca) • per i categorici ha senso solo l’operazione di egualianza • per gli ordinali ha senso solo l’operazione di ordinamento (< o > o =) Continuo/Discreto • Le grandezze numeriche possono essere continue o discrete – continuo: la temperatura – discreto: il numero di abitanti di una nazione • Le grandezze continue si rappresentano con i numeri reali • Le grandezze discrete con i numeri naturali 3 Continuo/Discreto • Numeri razionali: A/B con A e B in N • Si possono esprimere frazioni – un terzo di una torta – 2/3 di un giorno • Possiamo pensare ad un numero razionale come ad una indicazione di quante sotto unità considerare – 2/3 = prendere 2 sotto unità da 1/3 – se disponiamo di un modo per indicare la sotto unità per rappresentare i razionali ci bastano i naturali Continuo/Discreto • Si può approssimare un numero reale con un numero razionale • in pratica significa che ci fermiamo dopo un certo numero di cifre decimali – 2,34 significa: scegli come sotto unità 0,01 e prendine 234 • si possono dare approssimazioni razionali arbitrariamente vicine ad un reale: • 3,14 = 314 x 0.01 • 3,1415672343 = 31415672343 x 0.00000001 4 Analogico/Digitale • Il predicato analogico è l’equivalente di continuo, digitale di discreto • dato un segnale analogico/continuo se ne può costruire una approssimazione digitale/discreta arbitrariamente vicina Esempio 90 80 70 60 50 40 30 20 10 0 90 80 70 60 50 40 30 20 10 0 Digitale Analogico 1 2 3 4 5 6 7 8 9 10 5 Digitale+informatica • L’informatica vuole trattare l’informazione • L’informazione può essere di tipo categorico, ordinale, numerale • Ogni tipo di informazione può essere elaborata come se stessimo elaborando informazione numerica (con opportune restrizioni sulle operazioni ammesse) • il calcolatore tratta solo numeri I dati numerici • La conoscenza di una proprietà di un oggetto è data dalla coppia (valore della misura, unità di misura) • il valore della misura è espresso tramite un numero • es: proprietà di interesse=il peso • unità di misura=kg • conoscenza: questo tavolo pesa (30 kg) 7 Dati numerici • La manipolazione delle quantità numeriche prevede l’introduzione del concetto di operazione • op(num1, num2)=num3 • es: – somma(23,3)=26 – potenza(2,3)=8 – egualianza(4,5)=0, egualianza(5,5)=1 Rappresentazione dei numeri • E’ possibile rappresentare i numeri in modi diversi • a seconda di come si rappresentano i numeri cambia il modo di calcolare il risultato di una data operazione su di essi • quale e’ il modo più semplice ed affidabile per rappresentare i numeri e fare operazioni? 8 Il sistema decimale • Il sistema di numerazione comunemente impiegato è quello posizionale in base 10 o decimale • il sistema decimale si basa su dieci simboli diversi detti cifre: 0123456789 • un numero è rappresentato da una sequenza di cifre: 2876 è un numero (23A$12 no) Il sistema decimale • Il termine posizionale indica che il valore assunto da ciascuna cifra dipende dalla sua posizione entro la sequenza • in 392, la cifra 2 vale 2 unità ovvero 2, la cifra 9 vale 9 decine ovvero 9x10=90, la cifra 3 vale 3 centinaia ovvero 3x100=100 • in sintesi: • 8453=8x1000+4x100+5x10+3 • ovvero: • 8453=8*103+4 *102 +5*101 +3*100 9 La base numerica • I numeri si possono rappresentare anche con altri sistemi di numerazione posizionale • si consideri un sistema in base 3 • si hanno 3 simboli o cifre: 012 • un numero è sempre rappresentato da una sequenza di cifre: 201122 è un numero (241765 no) Base numerica • A quale numero in base 10 equivale il numero 2102 in base 3? • Il valore associato ad ogni cifra dipende dalla posizione: 2102= 2*3 3+ 1*32+ 0*3 1+ 2*30 =2*27+9+2=65 10 Base numerica • In generale dato un numero in base numerica B: cn cn-1… c1 c0 dove la cifra ci assume uno di B possibili valori • il valore in base decimale è dato da cn*Bn+cn-1*Bn-1+ … c1*B1+c0*B0 Binario • Il sistema numerico più semplice possibile è quello binario • le cifre sono: 01 • le cifre sono chiamate bit • una sequenza di cifre è un numero binario – 00101010111110101 è un numero (120301 no) 11 Conversione binario decimale • Quale numero in base 10 rappresenta il seguente numero in base 2? 11010 = 1*2 4+ 1*23+ 0*2 2+ 1*21+ 0*2 0 = 16+8+2=26 Ottale • I calcolatori usano numeri in base 2,8 o 16 • come si vedrà la conversione di numeri fra queste basi è molto semplice • in base 8 si ha il sistema ottale • le cifre ammesse sono: 01234567 172= 1*82+ 7*81+ 2*80=64+56+2=122 12 Esadecimale • Un sistema numerico in base 16 è detto esadecimale • le cifre ammesse sono: • 0123456789ABCDEF A=10,B=11,C=12,D=13,E=14,F=15 • 7C1= 7*162+ C(=12)*16 1+ 1*160= 7*256+12*16+1=1985 Intervallo di rappresentazione • Se il numero di cifre con cui rappresentare un numero è limitato allora anche l’intervallo di numeri rappresentabile è limitato • es. in base decimale con due cifre si possono rappresentare i numeri da 0 a 99 cioè 100 numeri • con tre cifre da 0 a 999 cioè 1000 numeri 13 Esercizio • Le targhe • se una targa è così composta: 2 lettere 3 numeri 2 lettere, dove le lettere appartengono ad un alfabeto di 25 simboli, quante targhe distinte si possono ottenere? Intervallo di rappresentazione • In generale in un sistema in base B con n cifre si rappresentano numeri nell’intervallo [0,Bn-1] ovvero Bn numeri • in base 2 pertanto con n cifre si rappresentano 2 n numeri 14 Esercizio • Scrivere le potenze del 2 • scrivere quanti bit sono necessari per rappresentare i seguenti numeri: • 4,9,23,37,78,55,12,128,345,678,923,2567,4 234, Conversione decimale-binario • Per convertire da decimale a binario si procede secondo il seguente algoritmo: – si divide il numero decimale per 2 – si considera il quoziente e il resto – il resto può valere 0 o 1 e rappresenta la cifra binaria di peso minore – si ripete il procedimento fino a quando il quoziente non è nullo • la sequenza dei resti delle divisioni (presi in ordine inverso rispetto a come sono ottenuti) è il numero binario cercato 15 Esempio • • 173(10)=?(2) 173/2 86 86/2 43 43/2 21 21/2 10 10/2 5 5/2 2 2/2 1 1/2 0 resto 1 resto 0 resto 1 resto 1 resto 0 resto 1 resto 0 resto 1 10101101 Perché funziona l’algoritmo? • • • • • • • 173=86*2+1 ma 86=23*2+0 allora 173=(23*2+0)*2+1 ma 23=12*2+1 allora 173=((12*2+1)*2+0)*2+1 cioè 173=12*2 3+1*22+0*21+1*20 quindi stiamo proprio determinando i pesi da dare alle potenze del due ovvero le cifre in notazione binaria 16 La somma • Come per numerazione decimale • gli operandi sono incolonnati allineandoli a destra • procedendo dai bit di peso inferiore a quelli di peso superiore • si esegue la somma bit a bit secondo le seguenti regole: – 0+0=0 – 0+1=1+0=1 – 1+1=0 con riporto di 1 • se la somma genera riporto al passo successivo si sommano 3 bit: i due bit degli operandi e il bit di riporto Overflow • Se i numeri vengono rappresentati con un numero di cifre fissato n e la somma di due operando è un numero maggiore del massimo numero rappresentabile con n cifre si ha la condizione di overflow • si genera overflow nella somma di due numeri di n cifre quando si ha un riporto oltre la cifra di peso n 17 La sottrazione • L’operando minore è incolonnato allineandolo a destra sotto quello maggiore • si esegue la sottrazione bit a bit procedendo dal bit di peso minore verso quello di peso maggiore secondo le seguenti regole: – 0-0=0 – 1-0=1 – 0-1=1 con prestito di 1 – 1-1=0 • se la sottrazione genera un prestito al passo successivo si esegue la sottrazione tra i due operandi e successivamente si sottrae 1 Nota • Non si può sottrarre un numero maggiore da uno minore • verificare sempre prima il modulo dei due operandi 18 Shift o scalamento • Si può shiftare di un numero n di bit a destra o a sinistra • shiftare di n bit a sinistra significa aggiungere n bit in posizione meno significative a 0 • shiftare di n bit a destra significa eliminare gli n bit meno significativi La moltiplicazione • Algoritmo di somma e scorrimento • si incolonna a destra e si riporta la moltiplicazione del moltiplicando per ogni bit del moltiplicatore su linee successive • ogni numero risultante va scalato (shiftato) di un numero di posizioni verso sinistra pari alla posizione del bit moltiplicatore • si sommano poi tutti i numeri risultanti • Le regole base della moltiplicazione tra due bit sono: – 0x0=0 – 0x1=1x0=0 – 1x1=1 19 Moltiplicazione II • Dato che moltiplicare per 0 e poi sommare il risultato è equivalente a non eseguire alcuna operazione si può procedere a semplificare l’operazione di moltiplicazione incolonnando opportunamente solo le repliche shiftate del moltiplicando Moltiplicazione III • Moltiplicare per una potenza della base di numerazione è equivalente a shiftare il numero di un numero di posizioni pari alla potenza • ex: moltiplicare per 4 in binario equivale a shiftare di 2 posizioni il moltiplicando 20 Esercizio • Quanti bit sono necessari per rappresentare il prodotto tra due numeri di n e m bit? • (2 n-1) * (2m-1) = 2n+m- 2n- 2m+1 • pertanto sono necessari nel caso peggiore n+m bit • se n=m si deve raddoppiare il numero di bit 21