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 R(x) • rappresentazione in cifre (sistema (sistema posizionale) posizionale) di y • codifica in bit delle cifre Overflow e underflow • overflow: overflow: tentativo di rappresentare un numero esterno all’ all’intervallo – Impossibilità Impossibilità di rappresentare il numero Utilizzando la numerazione posizionale in base 2 un numero M espresso su n bit potrà potrà assumere valori compresi tre 0 ≤ M ≤2n-1 • underflow: 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’ un’approssimazione ε 2 Parametri di un sistema di rappresentazione • • • • intervallo numerico e tipo del numero x da rappresentare regola di trasformazione y = R(x 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 < bn • b è la base di numerazione – in pratica 2, 8, 16 … ma anche 10 • rappresentazione ad n cifre : – Cn-1 Cn-2 ....C0 , dove 0 ≤ Ci < b • condizione di overflow: 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 1 riporto 1 1 1 1 1 1 1 0 1 0 1 0 0 1 0 0 1 0 + Sottrazione in binario Anche la sottrazione segue le stesse regole della sottrazione tra 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 AiAi-Bi = Si Bi = Borrow o Prestito 5 esempio 1 1 0 1 1 0 1 1 0 0 1 0 1 - borrow 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. 910=10012 710=01112 1 riporto 1 1 0 0 1 0 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. 510=01012 710=01112 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. 00101101 01011010 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. 00101101 00010110 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