2 Rappresentazione Dei Dati

2,253 views
2,129 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,253
On SlideShare
0
From Embeds
0
Number of Embeds
18
Actions
Shares
0
Downloads
50
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

2 Rappresentazione Dei Dati

  1. 1. Rappresentazione di dati numerici
  2. 2. Sistemi numerici <ul><li>Si suddividono in: </li></ul><ul><ul><li>Non posizionali : quali ad esempio il sistema di numerazione romano (i cui simboli sono: I, II, III, IV, V, X, L, C, D, M) oppure quello egiziano </li></ul></ul><ul><ul><li>Posizionali : quali ad esempio il sistema arabo (decimale) e il sistema maya (ventesimale). </li></ul></ul><ul><li>Nei sistemi posizionali le operazioni aritmetiche risultano molto agevoli mentre in quelli non posizionali sono alquanto complicate. </li></ul>
  3. 3. Sistema posizionale a base fissa <ul><li>Nei sistemi numerici a base fissa, un numero N può essere rappresentato in uno del seguenti modi: </li></ul><ul><li>N = d n-1 ; d n-2 ........ d 1 ; d 0 ; d -1 ........ d -m </li></ul><ul><li>N = d n-1 · r n-1 + ..... + d 0 · r 0 + d -1 · r -1 + ..... + d -m · r -m </li></ul>
  4. 4. Sistemi numerici <ul><li>Proprietà di un sistema numerico a base fissa </li></ul><ul><ul><li>è a rango illimitato : ogni numero intero vi può essere rappresentato; </li></ul></ul><ul><ul><li>è a rappresentazione unica : ad ogni numero intero corrisponde un solo insieme ordinato di cifre; </li></ul></ul><ul><ul><li>è irridondante : ad ogni insieme ordinato di cifre corrisponde un solo numero non rappresentato da altri insiemi ordinati. </li></ul></ul>
  5. 5. Sistema decimale <ul><li>r = 10 </li></ul><ul><li>cifre: { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 } </li></ul><ul><ul><li>Esempio: </li></ul></ul><ul><ul><ul><li> 1 0 1 10 = 1 × 10 2 + 0 × 10 1 + 1 × 10 0 </li></ul></ul></ul><ul><ul><ul><li>= 100 + 0 + 1 </li></ul></ul></ul><ul><ul><ul><li>= 101 10 </li></ul></ul></ul>
  6. 6. Sistema binario <ul><li>r = 2 </li></ul><ul><li>cifre: { 0, 1 } </li></ul><ul><ul><li>Esempio: </li></ul></ul><ul><ul><ul><li> 1 0 1 2 = 1 × 2 2 + 0 × 2 1 + 1 × 2 0 </li></ul></ul></ul><ul><ul><ul><li>= 4 + 0 + 1 = 5 10 </li></ul></ul></ul>
  7. 7. Sistema ottale <ul><li>r = 8 </li></ul><ul><li>cifre: { 0, 1, 2, 3, 4, 5, 6, 7 } </li></ul><ul><ul><li>Esempio: </li></ul></ul><ul><ul><ul><li> 1 0 1 8 = 1 × 8 2 + 0 × 8 1 + 1 × 8 0 </li></ul></ul></ul><ul><ul><ul><li>= 64 + 0 + 1 = 65 10 </li></ul></ul></ul><ul><li>molto utile per scrivere in modo compatto i numeri binari (ad ogni 3 cifre binarie corrisponde una cifra ottale) </li></ul><ul><li> ( 1 1 0 1 1 0 0 0 1) 2 = ( 6 6 1 ) 8 </li></ul>
  8. 8. Sistema esadecimale <ul><li>r = 16 </li></ul><ul><li>cifre: { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F } </li></ul><ul><ul><li>Esempio: </li></ul></ul><ul><ul><ul><li> 1 0 1 H = 1 × 16 2 + 0 × 16 1 + 1 × 16 0 </li></ul></ul></ul><ul><ul><ul><li>= 256 + 0 + 1 = 257 10 </li></ul></ul></ul><ul><li>anch’esso utile per scrivere in modo compatto i numeri binari (ad ogni 4 cifre binarie corrisponde 1 cifra esadecimale) </li></ul><ul><li> ( 1 1 0 1 1 0 0 0 1) 2 = ( 1 B 1 ) 16 </li></ul>
  9. 9. Sistema base 5 <ul><li>r = 5 </li></ul><ul><li>cifre: { 0, 1, 2, 3, 4 } </li></ul><ul><ul><li>Esempio: </li></ul></ul><ul><ul><ul><li> 1 0 1 5 = 1 × 5 2 + 0 × 5 1 + 1 × 5 0 </li></ul></ul></ul><ul><ul><ul><li>= 25 + 0 + 1 = 26 10 </li></ul></ul></ul>
  10. 10. Sistema binario <ul><li>Caratteristiche </li></ul><ul><ul><li>su n cifre si rappresentano 2 n numeri; ad esempio su 4 cifre: </li></ul></ul><ul><ul><li>Prime 16 potenze del 2: </li></ul></ul>0 ... 0 1000 ... 8 1 ... 1 1001 ... 9 10 ... 2 1010 ... 10 11 ... 3 1011 ... 11 100 ... 4 1100 ... 12 101 ... 5 1101 ... 13 110 ... 6 1110 ... 14 111 ... 7 1111 ... 15 2 0 ... 1 2 9 ... 512 2 1 ... 2 2 10 ... 1024 2 2 ... 4 2 11 ... 2048 2 3 ... 8 2 12 ... 4096 2 4 ... 16 2 13 ... 8192 2 5 ... 32 2 14 ... 16384 2 6 ... 64 2 15 ... 32768 2 7 ... 128 2 16 ... 65536 2 8 ... 256
  11. 11. Sistema binario <ul><li>La cifra binaria è detta bit </li></ul><ul><li>parola che deriva dall’unione di due elisioni: </li></ul><ul><li>b inary dig it </li></ul><ul><li>I bit estremi di un numero binario si chiamano: </li></ul><ul><li>1 0 1 1 1 0 0 1 0 0 </li></ul>MSB (Most Significant Bit) LSB (Least Significant Bit)
  12. 12. Limiti del sistema binario <ul><li>Poiché su n bit si rappresentano 2 n numeri, per rappresentare la stessa grandezza occorrono molte più cifre rispetto al sistema numerico decimale. </li></ul><ul><li>bit simboli val. minimo val. massimo </li></ul><ul><li>4 16 0 15 </li></ul><ul><li>8 256 0 255 </li></ul><ul><li>16 65,536 0 65,535 </li></ul><ul><li>32 4,294,967,296 0 4,294,967,295 </li></ul>
  13. 13. Conversione da binario a decimale <ul><li>Si applica direttamente la definizione effettuando la somma pesata delle cifre binarie: </li></ul><ul><li>1 0 1 2 = 1 × 2 2 + 0 × 2 1 + 1 × 2 0 </li></ul><ul><li>= 4 + 0 + 1 </li></ul><ul><li>= 5 </li></ul><ul><ul><li>1 1 0 1 . 1 2 = 1  2 3 + 1  2 2 + 0  2 1 + 1  2 0 + 1  2 -1 </li></ul></ul><ul><ul><li>= 8 + 4 + 0 + 1 + 0.5 </li></ul></ul><ul><ul><li>= 13.5 10 </li></ul></ul>
  14. 14. Conversione da decimale a binario <ul><li>N = d n-1 · r n-1 + ..... + d 0 · r 0 + d -1 · r -1 + ..... + d -m · r -m </li></ul><ul><li>Consideriamo la sola parte intera e riscriviamo il numero binario nel modo seguente: </li></ul><ul><li>N = d 0 + 2 · (d 1 + 2 · (d 2 + ...... + d n-1 )) </li></ul><ul><li>  </li></ul><ul><li>Si può osservare che dividendo N per la base 2, si ottiene un quoziente ( d 1 + r · (d 2 + ...... + d n-1 ) ) e un resto d 0 , che costituisce proprio la cifra meno significativa del numero nella base 2. </li></ul><ul><li>Dividendo successivamente il quoziente per la base 2 si trova ancora un quoziente e un resto d 1 , che è la cifra di peso uno cercata, e così via. </li></ul>
  15. 15. Esempio <ul><li>Esempio: </li></ul><ul><li>13 6 3 1 0 quozienti </li></ul><ul><li>1 0 1 1 resti </li></ul><ul><li>d 0 d 1 d 2 d 3 </li></ul><ul><li>13 10 = 1101 2 </li></ul>
  16. 16. Conversione da decimale a binario <ul><li>Dato un numero frazionario: </li></ul><ul><li>N = a -1 2 -1 + a -2 2 -2 + ...... + a -m 2 -m </li></ul><ul><li>moltiplicando N per la base 2, si ricava come parte intera la cifra a -1 , cioè la prima cifra binaria. </li></ul><ul><li>Eliminata questa parte intera, moltiplicando quanto resta ancora per 2, si ricava come parte intera a -2 , ecc. </li></ul><ul><li>Le parti intere, scritte nel medesimo ordine con cui sono state ricavate, rappresentano il numero frazionario binario cercato. </li></ul>
  17. 17. Esempio <ul><li>Regola: si moltiplica per due la parte frazionaria e si prende la cifra intera prodotta dal risultato proseguendo fino alla precisione richiesta. </li></ul><ul><ul><li>Esempio: 0.34 x </li></ul></ul><ul><ul><li>2 </li></ul></ul><ul><ul><li>0 .68 x 0.34 10 = 0.0101 2 </li></ul></ul><ul><ul><li>2 </li></ul></ul><ul><ul><li>1 .36 x </li></ul></ul><ul><ul><li>2 </li></ul></ul><ul><ul><li>0 .72 x </li></ul></ul><ul><ul><li>2 </li></ul></ul><ul><ul><li>1 .44 ecc. 13.34 10 = 1101.0101 2 </li></ul></ul>
  18. 18. Conversioni tra sistemi in base qualsiasi <ul><li>E’ ovvio che le regole di conversione decimale-binario sono del tutto generali e valgono qualsiasi siano i sistemi numerici coinvolti. </li></ul><ul><li>Ad esempio per convertire il numero decimale 365 in base 7 si divide per 7: </li></ul><ul><li>365 52 7 1 0 </li></ul><ul><li>1 3 0 1 </li></ul><ul><li>365 10 = 1031 7 </li></ul>
  19. 19. Operazioni aritmetiche <ul><li>Le operazioni aritmetiche in un qualsiasi sistema numerico si possono eseguire nello stesso identico modo che conosciamo così bene per il sistema numerico decimale. </li></ul><ul><li>L’avvertenza è solo quella di costruire la “tabellina” opportuna per quel particolare sistema numerico: si ricordi che la tabellina per il sistema numerico decimale ce la siamo studiata a memoria sin dall’infanzia!!!! </li></ul><ul><li>Il nostro interesse è però particolarmente concentrato sul sistema numerico binario e sono proprio le operazioni aritmetiche in binario che affronteremo ora. </li></ul>
  20. 20. Somma in binario <ul><li>Regole base: </li></ul><ul><ul><li>0 + 0 = 0 </li></ul></ul><ul><ul><li>0 + 1 = 1 </li></ul></ul><ul><ul><li>1 + 0 = 1 </li></ul></ul><ul><ul><li>1 + 1 = 0 con riporto ( carry ) di 1 </li></ul></ul><ul><li>Si effettuano le somme parziali tra i bit dello stesso peso, propagando gli eventuali riporti: </li></ul><ul><li>1 1 0 1 1 0 + 6 + 0 1 1 1 = 7 = </li></ul><ul><li>1 1 0 1 13 </li></ul>
  21. 21. Somma completa <ul><li>La somma completa (full addition) tiene conto del riporto per cui si sommano due bit ed un carry ottenendo come risultato un bit di somma e un bit di riporto </li></ul>1 1 1 1 1 1 0 1 0 1 1 0 1 1 0 0 1 1 0 0 1 0 0 1 1 0 1 0 0 1 0 1 0 1 0 0 0 0 0 0 Rip S Carry B A
  22. 22. Sottrazione in binario <ul><li>Regole base: </li></ul><ul><ul><ul><li>0 – 0 = 0 </li></ul></ul></ul><ul><ul><ul><li>0 – 1 = 1 con prestito ( borrow ) di 1 </li></ul></ul></ul><ul><ul><ul><li>1 – 0 = 1 </li></ul></ul></ul><ul><ul><ul><li>1 – 1 = 0 </li></ul></ul></ul><ul><li>Si eseguono le sottrazioni bit a bit tenendo conto dei prestiti: </li></ul><ul><li>1 1 1 0 0 - 12 - 1 0 1 0 = 10 = </li></ul><ul><li>0 0 1 0 2 </li></ul>
  23. 23. Sottrazione completa <ul><li>Analogamente alla somma, è possibile definire la sottrazione completa (sottrazione tra due bit ed un borrow ) </li></ul>1 1 1 1 1 0 0 1 0 1 1 0 1 1 0 1 1 1 0 0 0 0 0 1 1 0 1 0 0 1 1 1 0 1 0 0 0 0 0 0 Prest S Borrow B A
  24. 24. Moltiplicazione in binario <ul><li>Il prodotto tra due numeri binari si può calcolare con la tecnica già nota per i numeri in base 10, detta della somma e scorrimento . </li></ul><ul><ul><li>Esempio: </li></ul></ul><ul><ul><li>1 0 1 1 x 11 x </li></ul></ul><ul><ul><li>1 0 1 = 5 = </li></ul></ul><ul><ul><li>1 0 1 1 55 </li></ul></ul><ul><ul><li>0 0 0 0 </li></ul></ul><ul><ul><li>1 0 1 1 </li></ul></ul><ul><ul><li>1 1 0 1 1 1 </li></ul></ul><ul><li>Nella pratica si usano accorgimenti particolari basati sull’operazione di scorrimento ( shift ). </li></ul>
  25. 25. Divisione in binario <ul><li>Come per le altre operazioni applichiamo le stesse regole che usiamo col sistema decimale: </li></ul><ul><ul><li>Esempio: </li></ul></ul><ul><ul><li>1 0 1 0 1 1 1 </li></ul></ul><ul><ul><li>0 0 0 1 1 1 21 / 3 = 7 </li></ul></ul><ul><ul><li>1 0 1 </li></ul></ul><ul><ul><li>0 1 1 </li></ul></ul><ul><ul><li> 1 0 0 </li></ul></ul><ul><ul><li> 1 1 </li></ul></ul><ul><ul><li> 0 0 1 1 </li></ul></ul><ul><ul><li> 1 1 </li></ul></ul><ul><ul><li> 0 0 </li></ul></ul>
  26. 26. L’operazione di shift <ul><li>Equivale ad una moltiplicazione o divisione per la base. </li></ul><ul><li>Consiste nel “ far scorrere ” i bit (a sinistra o a destra) inserendo opportuni valori nei posti lasciati liberi. </li></ul><ul><li>In decimale equivale a moltiplicare (shift a sinistra) o dividere (shift a destra) per 10. </li></ul><ul><li>In binario equivale a moltiplicare (shift a sinistra) o dividere (shift a destra) per 2. </li></ul>
  27. 27. Shift a sinistra <ul><li>Si inserisce come LSB un bit a zero </li></ul><ul><li>Equivale ad una moltiplicazione per due </li></ul><ul><ul><li>0011 « 1 = 0110 ( 3  2 = 6 ) </li></ul></ul><ul><ul><li>0011 « 2 = 1100 ( 3  2 2 = 12 ) </li></ul></ul><ul><ul><li>0011 « 3 = 11000 ( 3  2 3 = 24 ) </li></ul></ul>« 1 (shift a sinistra di 1 posizione) 0 1 1 0 0 0 1 1 0
  28. 28. Shift a destra <ul><li>Si inserisce come MSB un bit a zero </li></ul><ul><li>Equivale ad una divisione per due </li></ul><ul><ul><li>0110 » 1 = 0011 ( 6 : 2 = 3 ) </li></ul></ul><ul><ul><li>0110 » 2 = 0001 ( 6 : 4 = 1 ) t roncamento! </li></ul></ul>» 1 (shift a destra di 1 posizione) 0 0 1 1 0 0 1 1 0
  29. 29. Moltiplicazioni <ul><li>Una qualsiasi moltiplicazione tra due numeri può essere trasformata in una serie di shift e di somme, operazioni che vengono eseguite molto velocemente dai microprocessori. </li></ul><ul><li>Ad esempio il prodotto 14 x 13 diventa: </li></ul><ul><li>14 · 13 = 14 · (8 + 4 + 1) = 14 · 8 + 14 · 4 + 14 · 1 </li></ul><ul><li>14 10 = 1110 2 1 1 1 1 </li></ul><ul><li>1110000 + </li></ul><ul><li>1110 « 3 + 1110 « 2 + 1110 111000 + </li></ul><ul><li> 1110 = </li></ul><ul><li> 10110110 </li></ul>
  30. 30. Limiti della rappresentazione <ul><li>Quando scriviamo sulla carta non ci preoccupiamo quasi mai della grandezza dei numeri (a meno di particolari necessità). </li></ul><ul><li>Nelle macchine numeriche un numero deve essere rappresentato in un particolare dispositivo elettronico interno che si chiama registro ed è paragonabile ad una cella di memoria. </li></ul><ul><li>Caratteristica fondamentale di questo dispositivo è la sua dimensione (numero di bit) stabilita in sede di progetto: ovvero in un elaboratore potremo rappresentare solo una quantità limitata di numeri. </li></ul>
  31. 31. Limiti della rappresentazione <ul><li>Ad esempio se il nostro contenitore (registro) è lungo 5 bit: </li></ul><ul><li>potremo rappresentare solamente i numeri binari compresi tra 0 </li></ul><ul><li>0 0 0 0 0 </li></ul><ul><li>e 31 </li></ul><ul><li>1 1 1 1 1 </li></ul><ul><li>Inoltre dovremo in qualche modo introdurre il segno dei numeri! </li></ul>
  32. 32. I numeri con segno <ul><li>Oltre al problema relativo al valore del numero bisogna trovare il modo di rappresentare il segno. </li></ul><ul><li>Il segno dei numeri può essere solo di due tipi: </li></ul><ul><li>positivo ( + ) </li></ul><ul><li>negativo ( - ) </li></ul><ul><li>Sembrerebbe quindi facile rappresentarlo in binario, tuttavia la soluzione più semplice (1 bit riservato al segno) non è sempre conveniente. </li></ul><ul><li>Per tener conto del segno anziché il sistema numerico binario si utilizzano dei codici binari che hanno tuttavia come base, ovviamente, il sistema numerico binario. </li></ul>
  33. 33. Modulo e segno <ul><li>Su N bit, un bit è destinato al segno (in binario 0 = + , </li></ul><ul><li>1 = - ) e N-1 bit al valore assoluto (anche detto modulo ) </li></ul><ul><li>S modulo </li></ul><ul><li>E’ un codice che ricorda molto il nostro modo di rappresentare i numeri sulla carta. </li></ul><ul><li>Presenta però gravi svantaggi dovuti alla doppia rappresentazione dello zero (esistono e sono leciti infatti sia + 0, che - 0) e alla complessità delle operazioni aritmetiche. </li></ul>
  34. 34. Modulo e segno <ul><li>Esempi - usando una codifica su quattro bit: </li></ul><ul><ul><li> + 3 10  0 011 MS </li></ul></ul><ul><ul><li>  3 10   1 011 MS </li></ul></ul><ul><li>Si ha una doppia rappresentazione dello zero: </li></ul><ul><ul><li> 0 000 MS  + 0 10 </li></ul></ul><ul><ul><li> 1 000 MS   0 10 </li></ul></ul><ul><li>In generale su N bit sono rappresentabili i valori: </li></ul><ul><li>- ( 2 N-1 - 1 )  x  + ( 2 N-1 - 1 ) </li></ul><ul><ul><li>8 bit => [ -127 ÷ +127 ] </li></ul></ul><ul><ul><li>16 bit => [ -32.767 ÷ +32.767 ] </li></ul></ul>
  35. 35. Complemento a 1 <ul><li>Considerando numeri binari di n bit , si definisce complemento a uno di un numero A la quantità: </li></ul><ul><li>A = 2 n - 1 – A </li></ul><ul><li>Viene anche detto semplicemente complemento . </li></ul><ul><li>Regola pratica: </li></ul><ul><ul><li>il complemento a uno di un numero binario A si ottiene cambiando il valore di tutti i suoi bit ( complementando ogni bit) </li></ul></ul><ul><ul><li>Esempio: </li></ul></ul><ul><li>A = 1011   A  0100 </li></ul>
  36. 36. Complemento a 2 <ul><li>Considerando numeri binari di n bit , si definisce complemento a due di un numero A la quantità: </li></ul><ul><li>A = 2 n – A </li></ul><ul><li>Regola pratica: </li></ul><ul><ul><li>il complemento a due di un numero binario A si ottiene sommando uno al suo complemento (a uno) </li></ul></ul><ul><ul><li>Esempio: </li></ul></ul><ul><li>A = 1011  A = 0100   A  0101 </li></ul>
  37. 37. Complemento a 2 <ul><li>E’ usato per rappresentare numeri relativi: </li></ul><ul><li>( A  0 ) 0 A 2 (= A MS ) </li></ul><ul><li>( A < 0 ) complemento a 2 di A </li></ul><ul><li>In questo modo l’MSB indica il segno: 0 = + , 1 = - </li></ul><ul><li>Regola alternativa per la determimazione del complemento a due: </li></ul><ul><li>si parte da destra, si lasciano inalterati tutti gli zeri fino al primo uno che si lascia inalterato, si complementano tutti gli altri bit </li></ul><ul><li>Esempio: </li></ul><ul><li>A = 001101001000; A = 110010111000 </li></ul>
  38. 38. Complemento a 2 <ul><li>Esempio - usando una codifica su 4 bit: </li></ul><ul><ul><li>+ 3 10  0 ( 3 2 )  0 011 CA2 </li></ul></ul><ul><ul><li>- 3 10   - 0011   1100 + 1  1 101 CA2 </li></ul></ul><ul><li>In generale su N bit sono rappresentabili i valori: </li></ul><ul><li>- ( 2 N-1 )  x  + ( 2 N-1 - 1 ) </li></ul><ul><ul><li>8 bit => [ -128 ÷ +127 ] </li></ul></ul><ul><ul><li>16 bit => [ -32.768 ÷ +32.767 ] </li></ul></ul>
  39. 39. Somma e sottrazione in complemento a 2 <ul><li>La somma si effettua direttamente, senza badare ai segni degli operandi, come fossero due normali numeri binari. </li></ul><ul><li>La sottrazione si effettua sommando al minuendo il complemento a 2 del sottraendo: </li></ul><ul><li>A – B   A + (- B) ovvero: A + B </li></ul><ul><li>Esempio: </li></ul><ul><li>0 1 0 1 0 + 10 + </li></ul><ul><li>1 0 1 0 0 = - 12 = </li></ul><ul><li>1 1 1 1 0 - 2 </li></ul>
  40. 40. Overflow <ul><li>Si usa il termine overflow per indicare l’errore che si verifica in un sistema di calcolo automatico quando il risultato di un’operazione non è rappresentabile con la medesima codifica e numero di bit degli operandi. </li></ul><ul><li>Nella somma in binario puro si ha overflow quando si opera con un numero fisso di bit e si genera un riporto (carry) sul bit più significativo (MSB, quello più a sinistra). </li></ul><ul><li>Esempio: somma tra numeri di 4 bit in binario puro </li></ul><ul><li>0 1 0 1 + 1 1 1 0 = overflow!  1 0 0 1 1 </li></ul>
  41. 41. Overflow in complemento a 2 <ul><li>Operandi con segno discorde: </li></ul><ul><ul><li>non si può mai verificare overflow!!!!! </li></ul></ul><ul><li>Operandi con segno concorde: </li></ul><ul><ul><li>c’è overflow quando il risultato ha segno discorde da quello dei due operandi </li></ul></ul><ul><li>In ogni caso, si trascura sempre il carry (riporto) oltre il MSB </li></ul><ul><li>Esempi: </li></ul><ul><li>0 1 0 1 + 1 1 1 0 + </li></ul><ul><li>0 1 0 0 = 1 1 0 1 = </li></ul><ul><li>1 0 0 1 1 1 0 1 1 = </li></ul>overflow! carry, risultato OK
  42. 42. Fixed-point <ul><li>Si usa un numero fisso di bit per la parte intera e per quella frazionaria (e non si rappresenta la virgola!) </li></ul><ul><li>Ad esempio (4 + 4 bit, binario puro): </li></ul><ul><ul><li>15.9375 = 1111 1111 </li></ul></ul><ul><ul><li>0.0625 = 0000 0001 </li></ul></ul>virgola sottintesa
  43. 43. Fixed-point <ul><li>Vantaggi: </li></ul><ul><ul><li>gli operandi sono allineati per cui le operazioni aritmetiche risultano facili ed immediate; </li></ul></ul><ul><ul><li>la precisione assoluta è fissa </li></ul></ul><ul><li>Svantaggi: </li></ul><ul><ul><li>l’intervallo di valori rappresentati è assai modesto </li></ul></ul><ul><ul><li>la precisione dei numeri frazionari rappresentati molto scarsa </li></ul></ul><ul><li>Utilizzo tipico: </li></ul><ul><ul><li>DSP (Digital Signal Processor) </li></ul></ul><ul><ul><li>Sistemi digitali per applicazioni specifiche ( special-purpose) </li></ul></ul><ul><ul><li>Numeri interi nei calcolatori </li></ul></ul>
  44. 44. Rappresentazione di numeri interi <ul><li>A causa dell’estrema semplicità che presentano le operazioni aritmetiche in complemento a 2 , in tutte le macchine numeriche i numeri interi vengono rappresentati in questo codice. </li></ul><ul><li>Il numero di bit utilizzati dipende dalla macchina: si tratta generalmente di 16 bit ( interi corti ) o 32 bit ( interi lunghi ). </li></ul><ul><li>La rappresentazione è nota col nome di fixed-point e il punto frazionario è supposto all’estrema destra della sequenza di bit (parte frazionaria nulla). </li></ul>
  45. 45. Rappresentazione di numeri reali <ul><li>Le rappresentazioni fin qui considerate hanno il pregio di rappresentare esattamente i numeri (almeno quelli interi) ma richiedono un numero di bit esorbitante quando il numero da rappresentare ha valore elevato. </li></ul><ul><li>La rappresentazione dei numeri frazionari che deriva dai codici precedenti, ovvero in fixed point , a causa delle forti approssimazioni che impone è usata raramente. </li></ul><ul><li>Generalmente viene utilizzato un apposito codice noto come floating point che consente di rappresentare in un numero limitato di bit grandezze di qualsiasi valore anche se condizionate da approssimazioni più o meno elevate. </li></ul>
  46. 46. Floating-point <ul><li>E’ basata sul formato esponenziale ( notazione scientifica ) </li></ul><ul><li>N = mantissa  base esponente </li></ul><ul><ul><li>Ricorda le notazioni: </li></ul></ul><ul><ul><ul><li>standard 3.5 × 10 4 3.5E+4 </li></ul></ul></ul><ul><ul><ul><li>scientifico 0.35 × 10 5 0.35E+5 </li></ul></ul></ul><ul><li>Nei sistemi di elaborazione </li></ul><ul><ul><li>Base = 2 </li></ul></ul><ul><ul><li>Mantissa ed esponente sono rappresentati in binario </li></ul></ul>
  47. 47. Floating-point <ul><li>Vantaggi: </li></ul><ul><ul><li>grande intervallo di valori rappresentabili </li></ul></ul><ul><ul><li>errore relativo fisso </li></ul></ul><ul><li>Svantaggi: </li></ul><ul><ul><li>operandi non allineati per cui le operazioni aritmetiche risultano molto complesse </li></ul></ul><ul><ul><li>errore assoluto variabile e dipendente dal valore del numero </li></ul></ul><ul><li>E’ la rappresentazione utilizzata da tutti i calcolatori elettronici per rappresentare i numeri frazionari ed è stata standardizzata dall’IEEE. </li></ul>
  48. 48. Formato IEEE-P754 <ul><li>Standard IEEE per il floating-point: </li></ul><ul><ul><li>Rappresentazione binaria di </li></ul></ul><ul><ul><ul><li>mantissa </li></ul></ul></ul><ul><ul><ul><li>esponente </li></ul></ul></ul><ul><ul><ul><li>segno </li></ul></ul></ul><ul><li>Singola precisione: 32 bit ( float ) </li></ul><ul><li>Doppia precisione: 64 bit ( double ) </li></ul>23 bit 8 bit 1 bit 52 bit 11 bit 1 bit precisione: circa 7 cifre decimali precisione: circa 17 cifre decimali esponente segno mantissa esponente segno mantissa
  49. 49. Overflow e Underflow <ul><li>A causa della precisione variabile è possibile avere errori di rappresentazione: </li></ul><ul><ul><li>numeri troppo grandi: overflow </li></ul></ul><ul><ul><li>numeri troppo piccoli: underflow </li></ul></ul><ul><li>Esempio: IEEE P754 </li></ul>0 -10 38 -10 -38 10 -38 10 38 overflow underflow
  50. 50. Rappresentazioni di dati non numerici <ul><li>Qualunque insieme finito di oggetti può essere codificato tramite valori numerici associando ad ogni oggetto un codice (ad esempio un numero intero). </li></ul><ul><li>Nel sistema numerico binario per rappresentare K oggetti distinti occorre un numero minimo di bit pari a: </li></ul><ul><li>N =  log 2 K  </li></ul>
  51. 51. Caratteri <ul><li>E’ sicuramente il tipo di informazione più scambiata: occorre pertanto una codifica standard. </li></ul><ul><ul><li>la più usata fa riferimento al codice ASCII (American Standard Code for Information Interchange) </li></ul></ul><ul><ul><li>in passato era molto diffuso il codice EBCDIC (Extended BCD Interchange Code) </li></ul></ul><ul><ul><li>codice UNICODE </li></ul></ul>
  52. 52. Codice ASCII <ul><li>E’ usato anche nelle telecomunicazioni. </li></ul><ul><li>Usa 8 bit per rappresentare: </li></ul><ul><ul><li>i 52 caratteri alfabetici ( a ÷ z , A ÷ Z ) </li></ul></ul><ul><ul><li>le 10 cifre ( 0 ÷ 9 ) </li></ul></ul><ul><ul><li>i segni di interpunzione ( ,;:!?&%=+-/ ecc.) </li></ul></ul><ul><ul><li>un gruppo di caratteri di controllo tra cui: </li></ul></ul><ul><li>CR ( 13 ) Carriage Return LF,NL ( 10 ) New Line, Line Feed FF,NP ( 12 ) New Page, Form Feed HT ( 9 ) Horizontal Tab VT ( 11 ) Vertical Tab </li></ul><ul><li>NUL ( 0 ) Null BEL ( 7 ) Bell EOT ( 4 ) End-Of-Transmission </li></ul>
  53. 53. Codice ASCII <ul><li>Ad esempio per rappresentare il messaggio “Auguri a tutti!” è necessaria la seguente sequenza: </li></ul><ul><li>01000001 A 00100000 spazio 01110101 u 01110100 t 01100111 g 01110101 u 01110101 u 01110100 t 01110010 r 01110100 t 01101001 i 01101001 i 00100000 spazio 00100001 ! 01100001 a </li></ul>

×