Lezione 3 I numeri relativi

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