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