Lezione 3 L’artimetcia binaria: i numeri relativi i numeri frazionari I numeri relativi • Si possono rappresentare i numeri negativi in due modi – con modulo e segno – in complemento a 2 1 Modulo e segno • Si stabilisce il numero di bit usato per rappresentare i numeri • si aggiunge un bit a sinistra della sequenza • per convenzione se tale bit è 0 il numero si considera positivo • se 1 negativo • gli altri bit rappresentano il modulo del numero Complemento a 2 • stabilito il numero di bit per rappresentare un numero • si aggiunge un bit a sinistra di valore 0 • se il numero è negativo – si permuta ogni 0 con un 1 e viceversa – si somma 1 • Nota: se il bit più significativo è 1 allora il numero è negativo 2 Numeri relativi • La rappresentazione con complemento permette di eseguire somme in modo più semplice • la rappresentazione con segno permette di eseguire prodotti in modo più semplice Nota • Se si usano n bit per rappresentare un numero (con segno o in complemento) allora ne rimangono n-1 per rappresentare il modulo • fare attenzione alla magnitudine del numero negativo in decimale rispetto ai bit rimasti • es. con 6 bit si può rappresentare fino a ? 32 e non fino a 64 3 Esercizio • Quando si vuole aumentare il numero di bit con i quali rappresentare i numeri relativi di n bit • se positivi basta aggiungere n bit a 0 a sinistra • se negativo con segno basta gestire l’ultimo bit di segno • se negativo in complemento a 2 si devono aggiungere n bit a 1 (perché si aggiungono pari a 0 e poi vanno invertiti) Esercizio • Determinare (senza convertire in decimale) la relazione di ordine (<>=) di due numeri binari relativi. 4 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 • Se sommando due numeri positivi il bit di segno è a 1 (cioè si è avuto overflow nella somma di n-1 bit e si va a intaccare il bit di segno)(il risultato deve avere segno 0) • se sommando due numeri negativi il bit di segno è 0 5 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 • Quando sommando due numeri concordi su n bit risulta che la somma dei moduli di n-1 bit genera un riporto sul bit n 6 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 + + + 7 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: • +*+=+ • +*-=-*+=• -*-=+ – se il segno è negativo 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 si assegna 1 al bit di segno, 0 altrimenti 8 I numeri frazionari • Si usa il simbolo “.” per separare la parte frazionaria da quella intera • 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+ … c1*B 1+c 0*B 0 + c-1*B -1+c -2*B -2+ … +c -m*B -m 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: – rappresentazione fixed-point (virgola fissa) – rappresentazione floating-point (virgola mobile) 9 Virgola fissa • Si stabilisce di utilizzare un certo numero di bit per rappresentare la parte intera e il rimanente per la parte frazionaria • es. parole di 8 bit di cui 6 per la parte intera e 2 per quella frazionaria 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 10 Conversione decimale a binario • Si considera separtamente 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 per determinare gli altri bit ci si ferma quando o si ha parte frazionaria nulla o si sono utilizzati tutti i bit a disposizione 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 nuemro è negativo si esegue la complementazione (dell’intero numero) 11 Virgola mobile • Si usa la notazione esponenziale: ?m * b e • • • • 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 12 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 13