Informa/ca Appun/ della lezione 2 Codifica binaria Il processore, abbiamo de>o, lavora solo con segnali ele>rici Segnali ele>rici a valori al/ di tensione vengono fac corrispondere al numero 1 Segnali ele>rici a valori bassi di tensione vengono fac corrispondere al numero 0 Questa si chiama codifica binaria Da questo punto di vista, il calcolatore opera solo con due cifre: 0 e 1 Tu>a l informazione che un calcolatore elabora viene espressa con queste due cifre, per mezzo della codifica binaria 1
Numerazione: le basi Noi siamo abitua/ a una numerazione basata su 10 cifre: da 0 a 9 La base della nostra numerazione è il 10: 147 = 7 x 10 0 + 4 x 10 1 + 1 x 10 2 La base del sistema binario è il 2: 1011 = 1 x 2 0 + 1 x 2 1 + 0 x 2 2 + 1 x 2 3 Se si svolge il calcolo si ocene il numero che, in base 10, corrisponde a 1011 in base 2. Base 2 - > Base 10 1011 2, ossia 1011 in base 2, a che numero in base 10 corrisponde? S/amo cercando la x tale che: 1011 2 = x 10 Basta ricordarsi la definizione di base 2: 1011 = 1 x 2 0 + 1 x 2 1 + 0 x 2 2 + 1 x 2 3 = 11 Perciò 1011 in base 2 vuol dire 11 in base 10: 1011 2 = 11 10 Il nostro 11 è per il calcolatore 1011 2
Base 10 - > Base 2 Il metodo per esprimere in base 2 un numero dato in base 10 è il seguente Cerchiamo la x tale che: 25 10 = x 2 Si procede con una sequenza di divisioni per 2, fintantoché il quoziente non diventa 0, e scrivendo la sequenza dei res/ in ordine inverso Come si scrive 25 in base 2? 25 : 2 = 12 con resto 1 12 : 2 = 6 con resto 0 6 : 2 = 3 con resto 0 3 : 2 = 1 con resto 1 1 : 2 = 0 con resto 1 Una volta o>enuto il quoziente pari a 0, scriviamo i res/ in ordine inverso: 25 10 = 11001 2 3
Verifica del metodo 11001 è davvero la codifica in base 2 di 25? Basta svolgere i calcoli basa/ sulla definizione di sistema binario 11001 2 = 1 x 2 0 + 1 x 2 3 + 1 x 2 4 = 1 + 8 + 16 = 25 10 (gli addendi con lo 0 sono sta/ omessi perché ovviamente non influiscono sulla somma) Numeri binari in memoria In un calcolatore, i numeri binari sono /picamente memorizza/ in sequenze di caselle (note anche come parole) di lunghezza fissa dipendente dalla stru>ura del calcolatore stesso. Ad esempio, una parola di 4 bit può contenere il numero 0101 2 0 1 0 1 4
Combinazioni possibili di numeri Una parola di 4 bit può contenere 2 4 = 16 numeri binari diversi: da 0000 a 1111 In generale, una parola di n bit può contenere 2 n numeri binari diversi Dimensioni delle memorie 8 bit = 1 Byte (1B) 2 10 Byte = 1024 Byte = 1 KiloByte (1KB) 2 20 Byte = 1048576 Byte = 1 MegaByte (1MB) 2 30 Byte = 1073741824 Byte = 1 GigaByte (1GB) 2 40 Byte = 1099511627776 Byte = 1 TeraByte (1TB) 5
Dimensioni delle memorie (2) Oramai è sempre più diffusa la seguente approssimazione: 1000 (10 3 ) Byte (o bit) = 1 KiloByte o KiloBit (1KB o 1Kb) 1000000 (10 6 ) Byte (o bit) = 1 MegaByte o MegaBit (1MB o 1Mb) 1 miliardo (10 9 ) Byte (o bit) = 1 GigaByte o GigaBit (1GB o 1Gb) 1000 miliardi (10 12 ) Byte (o bit) = 1 TeraByte o TeraBit (1TB o 1Tb) Interpretazioni possibili dei numeri Se non ci preoccupiamo del segno dei numeri, e li consideriamo sempre posi/vi, la sequenza che va da 0000 2 a 1111 2 corrisponde ai numeri da 0 10 a 15 10 In generale, data una parola da n bit e interpretando i numeri binari come numeri senza segno, solo posi/vi, i numeri esprimibili con tale parola vanno da 0 a 2 n - 1 6
Numeri con segno Se vogliamo introdurre anche i numeri nega/vi, una possibililità è di usare il primo bit a sinistra per esprimere il segno del numero: 0 sta per +, 1 sta per - Con questa convenzione, chiamata modulo e segno, 1010 2 = - 2 10, e 0111 2 = 7 10 In generale, con una parola di n bit si possono esprimere i numeri compresi tra (2 n- 1 1) e 2 n- 1 1 Complemento a due La rappresenazione modulo e segno ha un inconveniente: ci sono due rappresentazioni per 0 10 : ad esempio, se si hanno parole da 4 bit, sia 0000 2 sia 1000 2 corrispondono a 0 10 Con la rappresentazione in complemento a due si ovvia a questo problema: 0 10 si rappresenta solo con 0000 2, +1 10 come al solito con 0001 2 mentre per o>enere la rappresentazione binaria di - 1 10, si procede come segue 7
Da numero posi/vo a nega/vo (1) Data la rappresentazione binaria di +1 10 : 0001 2 La rappresentazione di si ocene così: si invertono tuc i bit si somma 1 Quindi, la rappresentazione in complemento a due di - 1 10 è: 1111 2 Da numero posi/vo a nega/vo (2) Analogamente per +2 10 : 0010 2 La rappresentazione in complemento a 2 di per - 2 10 è: 1110 2 E così via fino a u/lizzare tu>e le configurazioni di bit possibili della parola Con una parola da n bit, in complemento a due si possono rappresentare i numeri compresi tra tra 2 n- 1 e 2 n- 1 1 (da notare che c è un numero in più grazie al fa>o che 0 10 ha un unica rappresentazione) 8
Metodo alterna/vo L inversione di tuc i bit e la somma di 1 cos/tuiscono un metodo per scoprire, dato un numero posi/vo +n 2, la codifica binaria del suo opposto: n 2 (o anche viceversa: dato - n 2, scoprire +n 2 ) In alterna/va, si può usare la seguente regola: partendo da destra, lascia tu>o inta>o fino al primo 1 incluso, poi inver/ tu>o il resto Somma di numeri binari Sui numeri binari si effe>uano le classiche operazioni aritme/che esa>amente come per i numeri in base 10 In par/colare, la somma si esegue bit per bit, con le seguen/ regole: 0 + 0 = 0 1 + 0 = 0 + 1 = 1 1 + 1 = 0 con carry (o riporto) di 1 a sinistra 9
Overflow Si ha un overflow quando si sommano 2 numeri contenu/ in parole da n bit e il risultato non riesce ad essere rappresentato in n bit Ad esempio: 0111 + 0110 = 1101 Questa somma non è valida perché sommando due numeri posi/vi su 4 bit si ocene un numero nega/vo, il che è assurdo. Il risultato corre>o sarebbe 01101 ma per poterlo rappresentare servono 5 bit invece che 4. Una tecnica per controllare se c è overflow è di vedere i ripor/ alla posizione più a sinistra e della posizione a sinistra di essa (vedi le stelle): se i ripor/ sono diversi c è overflow. In questo caso c è riporto alla posizione del quarto bit da destra ma non alla sua sinistra, e infac c è overflow. So>razione Con il complemento a due, la so>razione non è altro che sommare con un numero nega/vo 6 4 equivale a calcolare 6 + (- 4): 6 10 = 0110 2 4 10 = 0100 2-4 10 = 1100 2 2 10 = 0010 2 10