Lezione 4 L’artimetica binaria: I numeri relativi e frazionari Sommario ? I numeri relativi ? I numeri frazionari ? I numeri in virgola fissa ? I numeri in virgola mobile 1 Cosa sono inumeri relativi? ? I numeri relativi sono numeri dotati di segno ? il segno può essere + o ? il segno ha conseguenza su le operazioni aritmetiche fra i numeri relativi I numeri relativi ? Si possono rappresentare i numeri negativi in diversi modi ? noi tratteremo: ? rappresentazione con modulo e segno ? rappresentazione in complemento a 2 2 Modulo e segno ? Si stabilisce convenzionalmente il numero di bit usato per rappresentare i numeri ? si aggiunge un bit a sinistra della sequenza (il bit più significativo) e per convenzione: ? se il bit piu’ significativo è 0 il numero si considera positivo ? se il bit piu’ significativo è 1 il numero si considera negativo ? gli altri bit rappresentano il modulo del numero Esempio ? Numeri binari di 7 bit: ? 1001001(2)=73 (10) ? Numero relativo positivo ? 01001001(2)=+73 (10) ? Numero relativo negativo ? 11001001(2)=-73 (10) 3 Complemento a 2 ? Si stabilisce convenzionalmente il numero di bit usato per rappresentare i numeri ? si aggiunge sempre un bit a sinistra (bit più significativo) di valore 0 ? se il numero è positivo si lascia invariato ? se il numero è negativo si esegue la procedura di complementazione Procedura di complementazione ? si scambia ogni 0 con un 1 e viceversa, cioè si sostituisce ad ogni 0 la cifra 1 e ad ogni 1 la cifra 0 ? si somma il numero 1 al risultato ? Nota: se un numero è rappresentato in complemento a due ed il bit più significativo (MSB) è 1 allora si tratta di un numero è negativo 4 Quale rappresentazione conviene? ? La rappresentazione con segno permette di eseguire prodotti in modo più semplice ? La rappresentazione con complemento permette di eseguire somme e sottrazioni in modo più semplice Quanti bit sono usati ? Se si usano n bit per rappresentare complessivamente un numero (con segno o in complemento) allora ne rimangono n-1 per rappresentare il modulo ? Attenzione alla magnitudine del numero relativo ? con 6 bit si possono rappresentare numeri in un intervallo di ?32 e non oltre (non fino a 64). 5 Aumentare il numero di bit per la rappresentazione in complemento a 2 ? Se vogliamo passare da una rappresentazione di un numero in complemento a 2 con 6 bit ad una con 8 bit ? si elimina il bit di segno ? si distinguono poi i seguenti casi: • se il numero è positivo si aggiunge in testa 00 • se il numero è negativo si aggiunge in testa 11 ? si aggiunge il bit di segno ? infatti nel caso negativo è come se si fosse aggiunto 00 al modulo e successivamente avessimo eseguito la procedura di complementazione Aumentare il numero di bit per la rappresentazione in modulo e segno ? Se vogliamo passare da una rappresentazione di un numero in modulo e segno con 6 bit ad una con 8 bit ? si elimina il bit di segno ? si aggiunge in testa 00 ? si aggiunge il bit di segno 6 Aritmetica dei numeri relativi ? Somma in complemento a due: ? stesso algoritmo per somma di numeri senza segno ? la somma viene fatta su tutti i bit, anche quelli di segno ? si trascura il riporto oltre il bit di segno Condizione di overflow in complemento ? Si ha condizione di overflow nella rappresentazione in complemento a 2 quando: ? sommando due numeri negativi il bit di segno è 0 ? sommando due numeri positivi il bit di segno è a 1 infatti questo implica che si è avuto overflow nella somma di n-1 bit e si è andati con il riporto sul bit di segno. In condizioni normali il risultato deve essere positivo e avremmo dovuto avere quindi il bit di segno a 0. 7 Aritmetica dei numeri relativi ? Somma con segno: ? si esegue in modo diverso a seconda del segno e del modulo dei numeri ? il segno del risultato si calcola separatamente a partire dal confronto dei segni e dei moduli dei due numeri ? le regole per la somma sono: Segno X Segno Y Confronto Risultato + + |X|+|Y| + |x|>|Y| |X|-|Y| + |X|<|Y| |Y|-|X| + |x|>|Y| |X|-|Y| + |X|<|Y| |Y|-|X| |X|+|Y| Segno + + + - Condizione di overflow con segno ? Si ha condizione di overflow nella rappresentazione in complemento a 2 quando: ? sommando due numeri concordi su n bit risulta che la somma dei moduli di n-1 bit genera un riporto sul bit n 8 Aritmetica dei numeri relativi ? Sottrazione in complemento a 2: ? considerando X-Y come X+(-Y) ci si riporta al caso di somma Aritmetica dei numeri relativi ? Sottrazione con segno: ? si fa riferimento alla seguente tabella Segno X Segno Y Confronto Risultato + + |x|>|Y| |X|-|Y| + + |X|<|Y| |Y|-|X| + |X|+|Y| + |X|+|Y| |x|>|Y| |X|-|Y| |X|<|Y| |Y|-|X| Segno + + + 9 Aritmetica dei numeri relativi ? Moltiplicazione con complemento: ? si ricavano i moduli dei due fattori • se il numero è negativo si complementa ? si moltiplicano i moduli ? si ricava il segno del risultato secondo la: •+x+=+ •+x-=-x+=•-x-=+ ? se il segno è negativo allora si complementa il risultato Aritmetica dei numeri relativi ? Moltiplicazione con segno: ? si moltiplicano i moduli dei due fattori ? si determina il segno del risultato secondo la: • +*+=+ • +*-=-*+=• -*-=+ ? se il segno è negativo allora si assegna 1 al bit di segno, 0 altrimenti 10 Cosa sono inumeri frazionari? ? I numeri frazionari vengono usati per rappresentare i numeri razionali ? Con i numeri frazionari si possono indicare quantità anche inferiori all’unità ? Sono caratterizzati da un simbolo detto punto frazionario “.” ? Si usa il simbolo “.” per separare la parte frazionaria da quella intera I numeri frazionari ? In base 10, il peso associato alle cifre a destra del “.” vale 10-i ? In generale dato un numero in base numerica B: cn cn-1… c1 c0 . c-1 c-2 … c-(m-1) c-m dove la cifra ci assume uno di B possibili valori ? il valore in base decimale è dato da cn*Bn+cn-1*Bn-1+ … c 1*B 1+c0*B 0 + c-1*B -1+c -2*B -2+ … +c-m *B -m 11 Rappresentazione binaria dei numeri frazionari ? Gli unici simboli che un elaboratore tratta sono quelli del sistema binario cioè {0,1} ? per rappresentare il simbolo “.” si usa una convenzione ? Rappresentazioni numeri frazionari: ? rappresentazione fixed-point (virgola fissa) ? rappresentazione floating-point (virgola mobile) Virgola fissa ? Si stabilisce convenzionalmente di utilizzare un certo numero di bit per rappresentare la parte intera e il rimanente per la parte frazionaria ? Ex. Si stabilisce di usare parole di 8 bit di cui 6 per la parte intera e 2 per quella frazionaria 12 Esercizio ? Quale è l’intervallo di numeri rappresentabili in virgola fissa utilizzando m bit per la parte intera e n bit per la parte frazionaria ? per numeri assoluti ? per numeri relativi in modulo e segno/complemento a 2 Conversione decimale a binario ? Si considera separatamente la parte intera da quella frazionaria ? la conversione di quella intera segue l’algoritmo già presentato ? per la parte frazionaria: ? si moltiplica la parte frazionaria per 2 ? la parte intera risultante (o 0 o 1) è il bit più significativo ? si reitera utilizzando solo la parte frazionaria per determinare gli altri bit ? ci si ferma quando o si ha parte frazionaria nulla o si sono utilizzati tutti i bit a disposizione 13 Esempio ? Conversione di 22.412 in binario con 5 bit per la parte intera e 5 per la parte frazionaria: 22/2? 0 11/2? 1 5/2? 1 2/2? 0 1/2? 1 0.412x2=0.824 ? 0 0.824x2=1.648 ? 1 0.648x2=1.296 ? 1 0.296x2=0.592 ? 0 0.592x2=1.184 ? 1 ? risultato: 10110.01101 Numeri Frazionari Relativi ? Per rappresentare numeri frazionari relativi si può usare la notazione con segno o con complemento ? per quella con segno una volta determinata la parte intera del numero gli si attribuisce il bit di segno ? per quella a complemento a due se il numero è negativo si esegue la complementazione (dell’intero numero, compresa cioè la parte frazionaria) 14 Virgola mobile ? Si usa la notazione esponenziale: ? m * be ? dove m è detto mantissa e e esponente ? la mantissa per convenzione è un numero in [0,1] ? la base è 2 ? si rappresenta come: segno esponente modulo della mantissa ? dove la rappresentazione dell’esponente è con segno o con complemento Virgola mobile ? Valori caratteristici: ? segno: 1 bit ? esponente: 7 bit ? mantissa: 16 bit ? Totale: 3 byte 15 Forma Normale ? Dato che un numero in notazione esponenziale ammette più di una rappresentazione se ne sceglie per convenzione una: ? il modulo ha valore assoluto minore di 1 ? Pertanto: ? 234,45=0,23445 x 103 ? 0,00856=0,856 x 10 -2 ? 1011.101=0.1011101 x 2+4 ? 0.00011=0.11 x 2-3 Esercizio ? Calcolare l’intervallo dei numeri rappresentabili in virgola mobile impiegando 1 bit per l’esponente, m bit per l’esponente (rappresentato in modulo e segno) e n bit per la mantissa 16