8 per pagina
Transcript
8 per pagina
Rappresentazione dell’informazione Argomenti trattati: • numeri: naturali, interi, reali e le operazioni I calcolatori gestiscono dati di varia natura: testi, immagini, suoni, filmati, aritmetiche nell’hardware, • caratteri: diversi codici di rappresentazione, • codici di correzione degli errori, • organizzazione della memoria, nei calcolatori rappresentati con sequenze di bit: mediante un’opportuna codifica presentiamo le codifiche dei dati gestite dall’hardware: numeri (e caratteri). (Architettura degli Elaboratori) Numeri binari 1 / 28 (Architettura degli Elaboratori) Codifica: Teoria generale Numeri binari 2 / 28 Proprietà di una codifica: • insieme dei dati rappresentabili (D), • alfabeto (A = {0, 1}): insieme di simboli, • compatta: si limita in numero di byte necessari, • codifica (D → A∗ ): mappa tra dati e le • pratica: facilitare la computazione, sequenze di bit • fedele: codifiche senza perdita di informazione, o con poca informazione persa. In una codifica di lunghezza costante, con n bit si rappresentano sino a 2n dati diversi. Esigenze contrapposte: si cerca un compromesso. Esistono codifiche a lunghezza variabile (dati diversi occupano un diverso numero di bit). (Architettura degli Elaboratori) Numeri binari 3 / 28 (Architettura degli Elaboratori) L’aritmetica dei calcolatori Binary • come eseguire le operazioni 1's place d2 d1 d0 .1's place .01's place .001's place d–1 d–2 d–3 Octal … . … Σ Hexadecimal di × 10i Numeri binari 5 / 28 Notazione binaria Numeri binari 1 0 1 0 0 0 3 7 2 1 2 0 0 1 7 D . 1 (Architettura degli Elaboratori) Numeri binari 6 / 28 Conversioni di base: da 2 a 10 Il calcolatore utilizza base 2 • un segnale digitale rappresenta una cifra • semplificazione dell’hardware Alternativa: BCD (Binary Coded Decimal) • si rappresenta una sequenza di cifre decimali, • ogni cifra rappresentata da 4 bit, • vantaggi nessun arrotondamento per numeri con virgola, • svantaggi complica i circuiti per le operazioni, usa più bit dello stretto necessario. (Architettura degli Elaboratori) 1 7 × 162 + 13 × 161 + 1 × 160 1792 + 208 +1 i = –k (Architettura degli Elaboratori) 1 2 × 103 + 0 × 102 + 0 × 101 + 1 × 100 2000 + 0 +0 +1 d–k n Number = 1 3 × 83 + 7 × 82 + 2 × 81 + 1 × 80 1536 + 448 + 16 + 1 Decimal dn 1 1 × 210 + 1 × 29 + 1 × 28 + 1 × 27 + 1 × 26 + 0 × 25 + 1 × 24 + 0 × 23 + 0 × 22 + 0 × 21 + +0 + 16 +0 +0 +0 + 1024 + 512 + 256 + 128 + 64 Notazione posizionale: il peso di una cifra dipende dalla sua posizione: 10's place 4 / 28 La stessa idea con basi diverse • come codificare i numeri: naturali, interi, reali. 100's place Numeri binari Due possibili metodi (algoritmi). 1) Sommare il peso delle singole cifre. 101110110111two = 211 + 29 + 28 + 27 + 25 + 24 + 22 + 21 + 20 = 2048+512+256+128+32+16+4+2+1 = 2999ten Intuitivo ma poco efficiente. 7 / 28 (Architettura degli Elaboratori) Numeri binari 8 / 28 Ambiguità “Esistono 10 tipi di persone: quelle che capiscono la notazione binaria e quelli che non la capiscono.” Se si usano diverse basi, bisogna specificare la base utilizzata. Diverse modi, ma in genere: un pedice alla fine della sequenza di cifre. Esempi: 257ten , (257)10 , 257eight , 257H. Alternative: lettere all’inizio della sequenza di cifre: H328C, HABCD, 0xABCD, O127 (Architettura degli Elaboratori) 1 0 1 1 Numeri binari 9 / 28 Secondo metodo di conversione Si convertono le sottosequenze iniziali della sequenza. Per convertire 101110110111two : 1two = 1ten 10two = 2ten 101two = 5ten = 2 ∗ 2 + 1 1011two = 11ten = 5 ∗ 2 + 1 Ad ogni passo: “nuovo valore” = “valore precedente” ∗ 2 + “nuova cifra” (Architettura degli Elaboratori) 2o metodo di conversione: esempio 1 0 1 1 0 1 1 Result Due possibili metodi (algoritmi): 1 + 2 × 749 = 1499 1 + 2 × 374 = 749 1) Scomporre in potenze di 2 0 + 2 × 187 = 374 1 + 2 × 93 = 187 1492 = 1024 + 468 = 1024 + (256 + 212) = 1024 + (256 + (128 + 84) . . . = 1024 + 256 + 128 + 64 + 16 + 4 = 210 + 28 + 27 + 26 + 24 + 22 1 + 2 × 46 = 93 0 + 2 × 23 = 46 1 + 2 × 11 = 23 1 + 2 × 5 = 11 1+2×2=5 Metodo intuitivo ma poco pratico. 0+2×1=2 1+2×0=1 Start here Metodo applicabile per convertire da una qualsiasi (Architettura degli Elaboratori) Numeri binari base in base 10. 11 / 28 Altro metodo: serie di divisioni - resti Remainders 13 / 28 746 0 373 0 186 1 93 0 46 1 23 0 11 1 5 1 2 1 1 0 0 1 1 0 1 1 1 0 1 0 1 0 0 = 149210 (Architettura degli Elaboratori) Numeri binari 14 / 28 Conversioni Da base 2 a base 16 (8) • dividere la sequenza di cifre in gruppi di 4 (3), • trasformare ciascun gruppo in una cifra. A volte necessario rappresentare numeri binari di decine di cifre. Rappresentazioni ottale e esadecimale sono comode: • un insieme di cifre simile a quello della notazione decimale; • più compatte della notazione binaria; • esiste un metodo semplice e veloce per convertire di base. La notazione esadecimale richiede cifre extra: A (10), B (11), C (12), D (13), E (14), F (15). Numeri binari 12 / 28 Serie di divisioni - resti: esempio Base 8 (ottale) o 16 (esadecimale) (Architettura degli Elaboratori) Numeri binari 1492 Metodo applicabile per convertire da base dieci ad una qualsiasi base (serie di divisione per la “base”). Numeri binari (Architettura degli Elaboratori) Quotients Dividendo un numero (decimale) per 2 ottengo: • l’ultima cifra binaria, • il numero rappresentato dalle rimanenti cifre. Con un serie di divisioni per 2 valuto tutte le cifre. (Architettura degli Elaboratori) 10 / 28 Conversione da base 10 a base 2 1 1 + 2 × 1499 = 2999 Numeri binari Da base 16 (8) a base 2 • trasformare ciascuna cifra in sequenza di 4 (3) cifre binarie, • riunire le sequenze cosı̀ ottenute. 15 / 28 (Architettura degli Elaboratori) Numeri binari 16 / 28 Esempi L’aritmetica del calcolatore Tre diverse classi di numeri: naturali (unsigned), interi (signed), reali (floating point). Rappresentati con un numero fisso di cifre. • Naturali e interi: 16 – 32 – 64 bit. • Reali (frazionari): 32 – 64 – 128. Example 1 1 Hexadecimal 9 8 4 . . . B 6 0001100101001000 101101100 Binary 1 Octal 4 5 1 0 5 5 4 Example 2 Hexadecimal 7 Binary B A 3 . . . C B 4 0111101110100011 101111000100 7 Octal (Architettura degli Elaboratori) 5 6 4 3 5 7 0 4 Numeri binari 17 / 28 Errore di overflow Operazioni aritmetiche nell’hardware Errore di overflow: il risultato di un operazione è più grande del massimo valore rappresentabile. Esempio: la somma o il prodotto di due numeri di cui uno uguale al massimo numero rappresentabile. L’hardware segnala eventuali gli errori di overflow, Esempio: nella somma di due numeri naturali, l’hardware controlla se le cifre più significative generano un riporto. (Architettura degli Elaboratori) Numeri binari 19 / 28 Operazioni aritmetiche (Architettura degli Elaboratori) 21 / 28 Numeri binari 20 / 28 Divisione: • serie di sottrazioni; • in hardware: serie di sottrazione o, per i numeri floating-point, calcolo dell’inverso e prodotto. (Architettura degli Elaboratori) Interi Due principali rappresentazioni: • segno e valore assoluto 9dieci = 0 0001001 −9dieci = 1 0001001 • complemento a 2 9dieci = 0 0001001 −9dieci = 1 1110111 Complemento a 2: i numeri positivi rappresentati come in binario puro, l’opposto si ottiene invertendo le cifre e sommando 1. La rappresentazione maggiormente usata perché semplifica l’hardware, l’ALU (Arithmetic Logic Unit). (Architettura degli Elaboratori) Numeri binari Operazioni aritmetiche Moltiplicazione: • serie di somme; • in hardware: stessa idea ma parallelizzata, più somme contemporaneamente, meno cicli di somme (Dadda and Wallace multipliers). Numeri binari L’hardware implementa le 4 operazioni aritmetiche. Gli algoritmi (metodi) validi per base dieci restano validi per base due. Per motivi di efficienza, l’hardware usa algoritmi più sofisticati. Addizione: • somme e riporti; • in hardware: bisogna gestire il problema della propagazione del riporto. Sottrazione: • sottrazioni e prestiti; • in hardware: si calcola l’opposto e esegue un addizione, soluzione utile perché viene usata la notazione complemento a due per i negativi. (Architettura degli Elaboratori) Conseguenze. • L’insieme dei numeri rappresentabili è limitato. Massimo rappresentabile. • Per i numeri reali, il calcolatore da risultati approssimati. (le rappresentazioni sono approssimate, le operazioni introducono errori). • Più formati per numeri e operazioni. (Architettura degli Elaboratori) Numeri binari 18 / 28 23 / 28 Numeri binari 22 / 28 Numeri frazionari (con virgola) I pesi delle cifre dopo la virgole sono potenze negative di due. 1, 011 = 1∗20 +0∗2−1 +1∗2−2 +1∗2−3 = 1+1/4+1/8 Solo i numeri nella forma z/2n sono rappresentabili con un numero finito di cifre; esempio : 0, 4 scritto in base due diventa un numero periodico. (Architettura degli Elaboratori) Numeri binari 24 / 28 Notazione floating-point Floating-point nel calcolatore Per i numeri frazionari si usa la notazione floating-point (scientifica) (esponente– mantissa). Il numero X è rappresentato da una coppia (m, e) Un numero reale X viene rappresentato da una sequenza di bit spezzata in due parti: • una parte per la mantissa m, notazione normalizzata, la virgola in posizione fissa (es. dopo la prima cifra) non viene rappresentata, • una parte per l’esponente e (numero intero) • X = m × 10e • m: mantissa, numero frazionario, (1 ≤ |m| < 10), • e: esponente, numero intero Vantaggi: si rappresentano numeri grandi (e piccoli) sinteticamente, evitando gli zeri non significativi. (Architettura degli Elaboratori) Numeri binari 25 / 28 X = m × 2e L’esponente indica di quante posizioni deve essere spostata la virgola nellaNumeri mantissa. (Architettura degli Elaboratori) binari 26 / 28 Floating-point nel calcolatore Notazione IEEE standard Un numero fisso di bit per m ed e. Un numero finito di valori rappresentabili. A secondo di come partiziono le cifre: • più bit per e ⇒ più ampio l’intervallo • più bit per m ⇒ maggiore precisione (numeri più densi) 3 Negative underflow 1 Negative overflow —10100 2 Expressible negative numbers (Architettura degli Elaboratori) 5 Positive underflow 4 Zero —10—100 0 Numeri binari notazioni diverse, problemi nello scambio dati. • Produttori informatici affidano a Williams Kahan • • • 6 Expressible positive numbers 10—100 • Fino agli anni 80: processori diversi usavano 7 Positive overflow 10100 27 / 28 • la definizione di uno standard, notazione IEEE 754 standard. gestazione molto lunga, Usata in tutti i calcolatori, Turing award. (Architettura degli Elaboratori) Numeri binari 28 / 28