Elementi di informatica Sistemi di numerazione posizionali Rappresentazione dei numeri Rappresentazione dei numeri nei calcolatori rappresentazioni finalizzate ad algoritmi efficienti per le operazioni in genere codifica a lunghezza fissa l insieme di numeri rappresentati è finito sistemi posizionali ad eccezione dei numeri interi positivi (caso( banale), trasformazione del numero da rappresentare in un altro numero rappresentabile... Codifica dell'informazione 2 1
trasformazione e codifica insieme X dei numeri da rappresentare X è un intervallo di numeri interi o reali insieme Y dei numeri rappresentati Y è un intervallo finito trasformazione di un numero x X in un numero y Y regola di trasformazione: y = R(x) rappresentazione in cifre (sistema( posizionale) ) di y codifica in bit delle cifre Overflow e underflow overflow: : tentativo di rappresentare un numero esterno all intervallo Impossibilità di rappresentare il numero Utilizzando la numerazione posizionale in base 2 un numero M espresso su n bit potrà assumere valori compresi tre 0 M 2 n -1 underflow: : un numero x 0 viene rappresentato da y = 0 ovviamente ha senso solo nel caso in cui X è un intervallo di numeri reali, rappresentati da Y (intervallo finito) con un approssimazione ε 2
Parametri di un sistema di rappresentazione intervallo numerico e tipo del numero x da rappresentare regola di trasformazione y = R(x) condizione di overflow approssimazione ε e condizione di underflow - solo per i reali base di numerazione codifica delle cifre in binario - se la base della numerazione è diversa da 2 NB: se la base della numerazione non è binaria, la codifica del numero in binario è indiretta... I numeri naturali La rappresentazione dei numeri naturali è fondamentale perché tutte le altre si rifanno a questa Numeri rappresentabili: 0 y < b n b è la base di numerazione in pratica 2, 8, 16 ma anche 10 rappresentazione ad n cifre : C n-1 C n-2...c 0, dove 0 C i < b condizione di overflow: : x M 3
Aritmetica dei numeri naturali Algoritmi classici per la realizzazione delle operazioni aritmetiche (noti dalle elementari) le regole sono le stesse per tutti i sistemi di numerazione posizionali (non solo quello decimale): per addizione e sottrazione numeri in colonna e riporto, per moltiplicazione e divisione uso di tavole pitagoriche per le singole cifre un esempio... 1 1 0 0 riporti 4987 + 3232 8219 Addizione in binario L addizione tra due numeri binari segue le stesse regole dell addizione tra due numeri decimali: i due numeri sono incolonnati uno sopra l altro. si effettua la somma delle cifre di pari peso. Tabella di addizione Ai Bi Si Ri 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 Ai+Bi = Si Ri = Carry o Riporto 4
esempio riporto 1 1 1 1 1 1 1 0 1 0 1 0 0 1 1 0 0 1 0 + Sottrazione in binario Anche la sottrazione segue le stesse regole della sottrazione tra due numeri decimali: i due numeri sono incolonnati uno sopra l altro. si effettua la sottrazione delle cifre di pari peso. Tabella della sottrazione Ai Bi Si Bi 0 0 0 0 0 1 1 1 1 0 1 0 1 1 0 0 Ai-Bi = Si Bi = Borrow o Prestito 5
esempio borrow 1 1 0 1 1 0 1 1 0 0 1 0 1 - Overflow Nel caso in cui si abbia un numero limitato di bit a disposizione, si possono avere due casi particolari di errore: Carry sul bit più significativo; Borrow dal bit più significativo. In entrambi i casi il numero di bit fissato non è sufficiente per rappresentare il risultato. Tale condizione si dice di overflow. 6
Esempio di overflow Considerando i numeri binari di 4 bit, effettuare la somma 9 + 7. 9 10 =1001 2 10 =0111 2 7 10 1 riporto 1 0 0 1 0 1 1 1 1 0 0 0 0 + Il risultato non è rappresentabile su 4 bit, quindi si ha overflow Esempio di overflow Considerando i numeri binari di 4 bit, effettuare la sottrazione 5-7. 5 10 =0101 2 7 10 =0111 2 1 borrow 0 1 0 1 0 1 1 1 1 1 1 0 - Il risultato non è rappresentabile su 4 bit, quindi si ha overflow 7
Operazione di scalamento a sinistra Uno scalamento a sinistra di un numero binario equivale ad una moltiplicazione per 2. 0 0 1 0 1 1 0 1 0 1 0 1 1 0 1 0 Inserito uno 0 in fondo Uno scalamento di N posizioni a sinistra equivale a moltiplicare il numero binario per 2 N. Scalamento a destra Uno scalamento a destra di un numero binario equivale ad una divisione per 2. 0 0 1 0 1 1 0 1 0 0 0 1 0 1 1 0 Inserito uno 0 in cima Scalamento a destra Uno scalamento di N posizioni a destra equivale a dividere il numero binario per 2 N. 8