1-Rappresentazione dell informazione Informazioni: testi, numeri, immagini, suoni, etc.; Come viene rappresentata l informazione in un calcolatore? Uso di tecnologia digitale: tutto ciò che viene rappresentato con numeri o che opera manipolando numeri, presi da un insieme di valori discreti, ovvero appartenenti a uno stesso insieme ben definito e circoscritto. All interno di un computer le informazioni vengono rappresentate da 2 possibili valori di tensione elettrica {V high, V low }, da un differente stato di polarizzazione magnetica (positiva, negativa), da luce e buio, etc. L'elemento alla base del funzionamento dei computer è il transistor. Questo dispositivo elettronico, in particolari condizioni di operatività, si comporta come un vero e proprio interruttore. Combinando milioni di questi interruttori per implementare funzionalità specifiche e raggruppandoli all'interno di diversi dispositivi elettronici dedicati (circuiti integrati) si costituiscono gli elementi base di un computer (microprocessore, memorie, ecc.).
2-Rappresentazione dell informazione Unità minima di informazione: bit (binary digit). Digit dal latino digitus (dito). Ogni informazione viene trasformata nel calcolatore in una sequenza di bit (forma BINARIA), cioè in una sequenza di 0 e 1. 100011010
Codifica dei numeri È posizionale: il peso attribuito ad ogni cifra è funzione della posizione che occupa. Esempio: numero decimale 1235 1 2 3 5 1 10 3 2 10 2 3 10 1 5 10 0 numero decimale 1235 = 1 10 3 + 2 10 2 + 3 10 1 + 5 10 0
Alfabeto e base I sistemi di numerazione posizionale sono caratterizzati da un alfabeto α ed una base b. Alfabeto (α): è l insieme delle cifre disponibili per esprimere i numeri. Ad ogni cifra corrisponde un valore compreso tra 0 e (b -1). (Ad esempio, nella numerazione decimale l alfabeto è α = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} Base (b): è il numero degli elementi che compongono l alfabeto. Ad esempio, nel caso decimale, b = 10.
Generica numerazione in base p α = {0, 1, 2,, p-1} b = p un numero naturale N in base p è rappresentato da una sequenza di n cifre: a n-1 a n-2 a n-3 a 0 dove a i α i = 0,, n-1 a n-1 è la cifra più significativa (MSB = Most Significant Bit nel caso binario), mentre a 0 è la meno significativa (LSB = Least Significant Bit nel caso binario) Esempi: binario: 0100010011 b=2; α = {0, 1} ottale: 45107 b=8; α = {0,1,2,...7} esadecimale: AB502C b=16; α = {0,1,...,9,A, B,C,D,E,F}
Basi > 10 (es:esadecimale) Nelle basi > 10 (es: esadecimale con b=16), i valori successivi al NOVE non possono essere indicati con la loro notazione decimale, perché avrebbero un altro significato: Ad esempio se scrivessimo: 10 questo rappresenterebbe il valore DIECI nella base 10 ( = 0*10 0 + 1*10 1 ) ma in base 16 questo equivale a 0*16 0 + 1*16 1 cioè 16 in base 10. Per questo motivo nelle basi > 10 i valori decimali dal 10 in poi vengono indicati con delle lettere Nel caso esadecimale avremo: A=10 10, B=11 10, C=12 10, D=13 10, E=14 10 ed F=15 10.
Conversioni di base Da base b a base 10 Per moltiplicazioni successive (partendo dal LSB) Es: 1010 2 = (0 2 0 + 1 2 1 + 0 2 2 + 1 2 3 ) 10 = 10 10 Es: 1AB 16 = (11 16 0 + 10 16 1 + 1 16 2 ) 10 = 427 10 Da base 10 a base b per divisioni successive finché il quoziente è nullo e leggendo i resti in senso inverso (es: 11 10 = 1011 2 ) dividendo divisore quoziente resto 11 2 5 1 5 2 2 1 2 2 1 0 1 2 0 1 Da base 2 a base 8 (raggruppando le cifre a 3 a 3 dal LSB) 10011100 2 10.011.100 2 234 8 Da base 2 a base 16 (raggruppando le cifre a 4 a 4 dal LSB) 10011100 2 1001.1100 2 9C 16
Minimo e massimo rappresentabile Il minimo ed il massimo valore rappresentabile per un numero binario puro N con n cifre a disposizione è: 0 N 2 n 1 Esempio: con 4 bit 0 N 15 10 (0 N 1111 2 ) Minimo numero di bit n per rappresentare un valore dato N è: n = log 2 (N+1) = ceiling = primo intero superiore Es: N= 23 10 n= log 2 (24) = 5 (23 10 10111 2 )
Aritmetica binaria su numeri naturali A B A+B Rip. A-B Prest. 0 0 0 0 0 0 0 1 1 0 1 1 1 0 1 0 1 0 1 1 0 1 0 0 Rip.= riporto per la colonna precedente Prest.= prestito dalla colonna precedente
Somma binaria di numeri naturali Viene eseguita incolonnando i numeri e sommando tra loro i bit incolonnati, partendo dai meno significativi, in ordine di peso crescente. Per la somma di due numeri positivi di lunghezza k possono essere necessari k+1 posti. Se sono disponibili solo k cifre si genera un errore di overflow (o trabocco). 10011 + (19) 10 11001 + (25) 10 00110 = (6) 10 10100 = (20) 10 --------- ----------- 11001 (25) 10 101101 Overflow (infatti 45 non è rappresentabile con solo 5 bit)
Sottrazione binaria di numeri naturali Viene eseguita incolonnando i numeri e sottraendo tra loro i bit incolonnati, partendo dai meno significativi, in ordine di peso crescente. Si suppone che il risultato sia positivo 101100 - (44) 10 100011 = (35) 10 001001 (9) 10
Moltiplicazione di numeri binari naturali Si utilizza la stessa tecnica usata anche per i numeri in base 10 (somma e scorrimento). A = 1011 2 = 11 10 B = 1101 2 = 13 10 A B= 1011 1101 1011 + 0000_ + 1011 + 1011 = 10001111 = 143 10
Divisione di numeri binari naturali Si usa la tecnica usata anche per i numeri in base 10 (differenza e scorrimento). Esempio: 101111 2 = 47 10 11 2 = 3 10 101111 / 11 = 1111 = 15 10 11 0101-11 0101-11 0101 11 010 Resto
Esempio di riporti e prestiti (somma) Esempio binario: 10110 + 111 + 11100 1 1 1+1 1 1 0 1 1 0 + 1 1 1 + 1 1 1 0 0 + 1 1 1 0 0 1 Risultato finale
Esempio di riporti e prestiti (differenza) Esempio binario: 10000 1101 0 1+1x 1+1x 1+1x 1+1 1 0 0 0 0 - X Richiesta prestito 1 1 0 1 = 0 0 0 1 1 Risultato finale
Operazione di scorrimento (shift) Shift verso sinistra Lo scorrimento verso sinistra di tutte le cifre del numero di una posizione con l inserimento di uno zero nella posizione di destra equivale a moltiplicare il numero per la base. Lo scorrimento di k posizioni verso sinistra equivale a moltiplicare il numero per b k. Es: 1011 = 1110 scorrimento di 2 a sinistra 101100 = 44 10 Shift verso destra Lo scorrimento (shift) verso destra di tutte le cifre del numero di una posizione con l inserimento di uno zero nella posizione di sinistra, equivale a dividere il numero per la base (cioè a moltiplicare il numero per b -1 ). Lo scorrimento di k posizioni verso destra equivale a moltiplicare il numero per b -k (cioè dividerlo per b k ) Es: 1010 = 1010 scorrimento di 2 a destra 0010 = 2 10 NB: il resto e dato dai bit usciti a destra (10 2 = 2 10 )
Numeri relativi Z = {-,, -1, 0, +1,, + } Rappresentazione con modulo e segno Il primo bit di un numero intero viene utilizzato come bit di segno (0 positivo, 1 negativo). Gli altri bit indicano il modulo (valore assoluto) del numero. Es. con 6 bit: -10 10-001010 101010 2 Rappresentazione in complemento a 1 I numeri positivi sono rappresentati dal loro modulo ed hanno il bit più significativo a zero. I numeri negativi si ottengono complementando tutti i bit (cioè scambiando 0 con 1, e viceversa). Pertanto hanno il primo bit sempre a 1. Es. con 8 bit: -34 10-00100010 11011101 2 Rappresentazione in complemento a 2 I numeri positivi sono rappresentati dal loro modulo ed hanno il bit più significativo a zero. I numeri negativi si ottengono calcolando il complemento a 1, e poi sommandovi 1. Pertanto hanno il bit del segno sempre a 1. Es. Con 6 bit: -25 10-011001 100110 + 1 10 0111 2
Minimo e massimo rappresentabile in complemento a 2 Il minimo ed il massimo valore rappresentabile per un numero binario (N) in complemento a 2 con n cifre a disposizione è: -2 n-1 N 2 n-1 1 Esempio con 4 bit -8 10 N 7 10 (1000 2 N 0111 2 )
1-Operazione aritmetiche su numeri relativi Somma algebrica Sfrutta la rappresentazione in complemento a 2. Si sommano i numeri per colonna incluso il bit del segno, ignorando l eventuale riporto sul bit del segno. Si può avere un overflow solo se i due numeri da sommare hanno lo stesso segno ed risultato ha il segno opposto. Esempi su 4 bit: 0111 + (7) 1011 + (-5) 1011 = (-5) 1001 = (-7) 1 0010 (2) 1 0100 Overflow
2-Operazione aritmetiche su numeri relativi Sottrazione tra numeri relativi Se i numeri sono rappresentati in complemento a 2 l operazione di sottrazione si effettua mediante somma (vantaggio della rappresentazione in complemento a 2). Moltiplicazione e divisione tra numeri relativi Utilizzare i numeri in valore assoluto ed utilizzare le operazioni viste sui numeri naturali (somma/differenza e scorrimento). Il segno si determina in base al segno degli operandi. L applicazione delle operazioni direttamente sui numeri in complemento è in generale scorretta.
Numeri frazionari Sia: α = {0, 1, 2,, p - 1} b = p Dato un numero frazionario N, la sua rappresentazione in base p è data da una sequenza di k cifre: 0. a -1 a -2... a -k-1 a -k con a -i α i = 1,, k Il valore di N in base p è dato dalla formula: Np = a -1 p -1 + a -2 p -2 + + a -k p -k o, in forma più compatta: Np = i=1,...,k a -i p -i
Conversione numeri frazionari Da base b a base 10 Per moltiplicazioni successive Es: 0.1010 2 = (1 2-1 + 0 2-2 + 1 2-3 + 0 2-4 ) 10 = 0.625 10 Da base 10 a base b per moltiplicazioni successive prendendo la parte intera finché quella frazionaria non è nulla (es: 0.125 10 = 0.001 2 ) Moltiplicando Molt.re risultato p. intera 0.125 2 0.250 0 0.250 2 0.500 0 0.500 2 1.0 1 Moltiplicando Molt.re risultato p. intera 0.800 2 1.600 1 0.600 2 1.200 1 0.200 2 0.400 0 0.400 2 0.800 0 0.800 2 1.600 1 0.800 10 = 0.11001100... 2 = 0.1100 2 Un numero razionale in una base può non esserlo in un altra. Si introduce cosí un errore di troncamento.
1-Rappresentazione di numeri reali Si utilizza la cosiddetta notazione scientifica esponenziale o virgola mobile (floating point) Il numero reale r è espresso come prodotto di una parte intera m, chiamata mantissa, per una base b, elevata ad un esponente n. r = m x b n Es. b = 10; r = - 331.654 = - 0.331654 x 10 3 ; m = 0.331654; n = 3 Es. b = 2: r = 12.510 = 1100.1 2 = 0.11001 x 2 4 ; m = 0.11001 2 ; n = 100 2
2-Rappresentazione di numeri reali Lo standard ANSI/IEEE 754-1985 ha codificato la rappresentazione di un numero reale r come: r = -1 S x 2 e x 1.F S = segno della mantissa (0= +, 1= -); e = EXP M (esponente in eccesso M); F = mantissa frazionaria (modulo e segno) I formati previsti dallo standard sono: Single precision (32 bit) S=1bit; E=8 bit; F=23 bit Double precision (64 bit) S=1 bit; E=11 bit; F= 52 bit Quad precision (128 bit) S=1 bit; E=15 bit; F=112 bit Es. di single precision (M=127): 42.6875 10 = 101010.1011 2 = 1.010101011 2 5 S EXP F S = 0 (1 bit) EXP = 5 + 127 = 10000100 (8 bit) F= 01010101100000000000000 (23 bit)
GRANDEZZE FONDAMENTALI Nome Simbolo Valore bit b 0 o 1 byte B 8 bit kilo k 2 10 = 1024 Mega M 2 20 = 1024k Giga G 2 30 = 1024M Tera T 2 40 = 1024G Peta P 2 50 = 1024T