Document

annuncio pubblicitario
Rappresentazione dei numeri
PH. 3.1, 3.2, 3.3
1
Tipi di numeri
Numeri interi, senza segno
calcolo degli indirizzi
numeri che possono essere solo non negativi
Numeri con segno
positivi
negativi
Numeri in virgola mobile
calcoli numerici
differenti gradi di precisione
precisione singola (IEEE)
doppia precisione (IEEE)
precisione quadrupla
2
Rappresentazione dei numeri
Notazione posizionale
Rappresentazione in base 2 degli interi
Conversione binario-decimale degli interi
Rappresentazione in base 2 dei numeri frazionari
Conversione binario-decimale dei numeri frazionari
Rappresentazione in base 16
3
Sistemi di numerazione posizionali
La base rappresenta il numero di cifre diverse utilizzate per
rappresentare i numeri (cardinalità dell'alfabeto)
Il sistema di numerazione in base 10 usa 10 cifre:
{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }
Il sistema di numerazione in base 8 (ottale) usa 8 cifre:
{ 0, 1, 2, 3, 4, 5, 6, 7 }
Il sistema di numerazione in base 2 (binario) usa 2 cifre:
{ 0, 1 }
Il sistema di numerazione in base 16 (esadecimale) usa 16
cifre:
{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F }
4
Notazione posizionale
(1)
Nei sistemi di numerazione il peso di ogni cifra dipende
dalla posizione:
L’intero 853 (in base 10) vale:
8 centinaia (8 · 102 = 8 · 100 ) +
5 decine (5 · 101 = 5 · 10) +
3 unità (3 · 100 = 3 · 1)
L’intero 675 (in base 10) vale:
6 centinaia (6 · 102 = 6 · 100 ) +
7 decine (7 · 101 = 7 · 10) +
5 unità (5 · 100 = 5 · 1)
5
Notazione posizionale
(2)
In generale, un numero formato da una sequenza di
cifre in una base b :
c( n −1) c( n − 2) ...c2 c3c0
ha un valore determinato dalla somma dei pesi
(potenze della base) per il valore della cifra:
n −1
i =0
(ci b )
i
ad esempio, per la rappresentazione di 745 si ha che:
n −1
i =0
(c=i bi ) c2 +102
c1 +101 c0 =100
7 +100 4+ 10 5 1
6
IL sistema binario
(1)
Si usa la base 2 (numeri binari):
Quindi si usano solamente due cifre, indichiamole con 0
e1
Per esplicitare la base utilizzata, usiamo un pedice
I numeri in base 10 saranno scritti come 85310 e 67510
I numeri in base 2 saranno scritti come 1002 e 112
7
IL sistema binario
(2)
Si consideri un numero binario:
c( n −1) c( n − 2) ... c2 c3c0
il valore del numero è la somma dei pesi di ogni
cifra:
n −1
i =0
(ci 2i )
 bit meno significativo - il bit di posizione 0 (peso
minore)
 bit più significativo – il bit di posizione 31 (peso
maggiore)
8
IL sistema binario
(3)
Ad esempio, il valore in base 10 del numero binario 10112 è:
n −1
i =0
(ci ÷
=bi )
+x
c3 23 +
c2 22 +(
c1 21 c0 20
=Β 1 8 +↵
0 4 +Α
1 2 +↵
11
= 11
9
Conversione decimale  binario

Procedimento mediante divisioni ripetute;
ad esempio per ottenere il numero binario
equivalente al numero decimale 11, si procede:
11/2
=
5
resto 1 5/2
=
2
resto 1 2/2
=
1
resto 0 1/2
=
0
resto 1 1
0
1
1
10
Sistema esadecimale
 Il sistema di numerazione in base 16 (esadecimale)
usa 16 cifre:
 { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, E, F }
 A vale 10, . . . ., F vale 15
n −1
 Il valore è dato da:
i =0
(ci (16)i )
 Esempio, il valore di (1A5)16 è :
n −1
i =0
(ci π
=bi )
c+2 162
c+1 161 c0 160
=Β 1 256 +↵
10 16 +Α
5 1 =421
11
Da base 16 a base 2 (e viceversa)
Per convertire da base 16 a base 2 basta:
convertire una cifra esadecimale alla volta nella
corrispondente rappresentazione in base 2
Esempio: per convertire 1AC516 in base 2:
1 A C 5
0001 1010 1100 0101
Per convertire da base 2 a base 16 basta:
convertire a gruppi di 4 bit per volta partendo dai quattro bit
meno significativi
Esempio: per convertire 100 1010 0100 1110 in base 16:
0100 1010 0100 1110
4 A 4 E
12
Notazione posizionale per i frazionari
(1)
Per i numeri con una parte frazionaria il meccanismo è lo
stesso
vengono usate posizioni e potenze negative della base
c( n −1) c( n − 2) ... c2 c3c0 . c−1c−2 ... c− m
n −1
i =0
(c+i bi )
−m
i =−1
(ci bi )
 Esempio, per rappresentare il numero 853.43 risulta:
8+ 102 5+x
101 3 +100
4 + 10−1 3 10−2
13
Conversione numeri frazionari
Procedimento che a partire da una frazione F < 1 ottiene
la rappresentazione di F in binario (o una approssimazione)
Sequenza ripetuta di moltiplicazioni:
Moltiplichiamo F per 2
Si ottiene una parte intera (che può essere 0 oppure 1)
ed una parte decimale F1
La parte intera rappresenta il primo bit più significativo
mentre F1 viene moltiplicato per 2
Si ottiene una parte intera (che può essere 0 oppure 1)
ed una parte decimale F2
La parte intera rappresenta il secondo bit più
significativo mentre F2 viene moltiplicato per 2
… fino a quando Fi vale 0 oppure decidiamo di
fermarci…
14
Conversione numeri frazionari
• Esempio, convertire 0.81 :
0 . 1
0.81 ⋅ 2
=
1.62
parte int 1 0.62 ⋅ 2
=
1.24
parte int 1 0.24 ⋅ 2
=
0.48
parte int 0 0.48 ⋅ 2
=
0.96
parte int 0 0.96 ⋅ 2
=
1.92
parte int 1 0.92 ⋅ 2
=
1.84
parte int 1 Sequenza ripetuta di
moltiplicazioni, . . . si prende la
parte intera
1
0
0
1
1
15
Conversione numeri frazionari
Il processo di conversione di una frazione non
necessariamente termina
Una frazione decimale con un numero finito di cifre può
avere un numero infinito di cifre nella rappresentazione
binaria
possiamo terminare il procedimento quando
riteniamo di aver raggiunto una precisione
sufficiente
16
Interi con segno
Interi con segno
17
Interi con segno
Finora abbiamo solamente considerato la rappresentazione
di interi positivi, per rappresentare interi con segno:
tre possibili rappresentazioni sono:
la rappresentazione con modulo e segno
la rappresentazione in complemento a uno
la rappresentazione in complemento a due
18
Rappresentazione con modulo e
segno
• La rappresentazione in modulo e segno usa il bit
più significativo per indicare il segno:
(+) se bit31 = 0,
(-) se bit31 = 1
Il valore del numero risulta essere:
N=
n−2
i =0
N =−
n−2
i =0
(ci 2i ) se cn −1 = 0
(ci 2i ) se cn −1= 1
19
Alcuni problemi del “modulo e segno”
Addizione e sottrazione complicata da
segni dei numeri
modulo dei numeri
Doppia rappresentazione dello zero:
zero
infatti lo zero può essere rappresentato (es.: su 8
bit)
sia da 0 000 0000
che da 1 000 0000
Non va bene ! Vorremmo…
una rappresentazione che faciliti la progettazione
della ALU
che non deve essere complicata da problemi dovuti
alla rappresentazione
20
Rappresentazione in complemento 2
Rappresentazione in complemento 2
21
Rappresentazione in complemento 2
Dato un numero in base 2 :
c( n −1) c( n − 2) ... c3 c2 c0
• Il valore del numero espresso in complemento a due è :
V = − cn −1 2
n −1
+
n−2
i =0
(ci b )
i
• Il bit più significativo assume peso negativo !
22
Rappresentazione in complemento 2
Poiche’ è :
−cn−1⋅2
n−1
n−2
i
 ∑  ci⋅b 
i=0
• Il numero è positivo se il bit più significativo vale 0
• Il numero è negativo se il bit più significativo vale 1
23
Rappresentazione in complemento 2
• Esempio, il numero 1 1 0 1 su 4 bit vale :
− 1 8 + 1 4 + 0 2 + 1 1 = −8 + 4 + 1 = −3
• Esempio, i numeri in complemento 2 su 4 bit :
0 1 1 1
0 1 1 0
0 1 0 1
0 1 0 0
0 0 1 1
0 0 1 0
0 0 0 1
0 0 0 0
7
6
5
4
3
2
1
0
1 0 0 0
1 0 0 1
1 0 1 0
1 0 1 1
1 1 0 0
1 1 0 1
1 1 1 0
1 1 1 1
­8
­7
­6
­5
­4
­3
­2
­1
24
Conversione da decimale a binario
• Supposto X numero decimale da convertire
• a) Fissare il numero n di cifre binarie da usare per la
rappresentazione del numero convertito in binario
• b) se X è positivo :
• si converte X in binario su gli n-1 bit meno
significativi
• si pone il bit più significativo a 0
• c) se X è negativo :
• si converte in binario 2n-1 + X su gli n-1 bit meno
significativi
• si pone il bit più significativo a 1
25
Conversione da decimale a binario
• Esempio: convertire il numero X = -4 su n = 5 bit
• convertiamo 2n-1 + X = 24 – 4 = 16 – 4 = 12 su n-1 = 4
bit
• otteniamo il risultato parziale: ? 1 1 0 0
• mettiamo il bit più significativo (il quinto) a 1
• otteniamo il risultato finale:
11100
26
Lavorare con il complemento a due
Espansione:
ad es. passare da numeri a 16 bit a numeri a 32 bit
richiesto per operazioni con registri (32 bit) e operazioni
immediate (16 bit)
Estensione del segno
i 16 bit meno significativi restano invariati
copia il segno (bit più significativo) nei rimanenti 16 bit
0000 0000 0000 0010
2
0000 0000 0000 0000 0000 0000 0000 0010
1111 1111 1111 1110
 -2
1111 1111 1111 1111 1111 1111 1111 1110
27
Addizione binaria
PH 3.3
28
Esempio di addizione
•
Supponiamo di addizionare i due numeri binari
01100 (1110) e 10010 (1810) :
0 0 1 0
riporti
0 1 0 1 1 +
1 0 0 1 0 =
1 1 1 0 1
29
Aritmetica complemento a due
Operazione di negazione
Negazione nell'aritmetica complemento a 2 :
dato un numero A in rappresentazione binaria
complemento a due
vogliamo ottenere –A (sempre in rapp.zione binaria)
Per ottenere la rappresentazione in complemento due di -A
(1) si complementa ogni cifra binaria di A
(2) si aggiunge 1 alla sequenza di bit cosi ottenuta
30
Operazione di negazione
 Esempio, si vuole ottenere la negazione del numero
A = -62
(nella rappresentazione binaria complemento 2 su 8
bit)
 la rappresentazione su 8 bit di –62 è :
1 1 0 0 0 0 1 0
` il suo complemento bit a bit è :
0 0 1 1 1 1 0 1
` sommando 1 si ottiene il risultato :
0 0 1 1 1 1 1 0
31
Operazione di negazione, giustificazione
• Supponiamo che A (in complemento a 2) sia il numero
da negare, il suo valore è:
A = −cn −1 2n −1 +
n−2
i =0
(ci 2i )
• Costruiamo B (negazione di A) complementando i bit di A
ed aggiungendo 1, otteniamo:
B = −c n −1 2n −1 + 1 +A
n−2
( c i 2i )
i =0
• Calcoliamo A + B; se vale A + B = 0 allora B = -A
A + B = −(cn −1 +xc n −1 ) 2n −1 + 1 +
n−2
i =0
(ci +2
c i ) 2i
32
Operazione di negazione, giustificazione
Osservando che :
(c + c ) = 1
Dall'espressione:
A + B = −(cn −1 +xc n −1 ) 2n −1 + 1 +
n−2
i =0
(ci +2
c i ) 2i
Ricaviamo :
A + B = −2n −1 + 1 +
n−2
2i = −2n −1 + 1 + (2n −1 − 1) = 0
i =0
33
Operazione di negazione,
osservazioni
• Supponiamo di negare il numero A = 0
(rappresentazione in complemento a 2 su 5 bit)
la rappresentazione:
0 0 0 0 0
il complemento bit a
bit:
1 1 1 1 1
sommando 1 :
1 1 1 1 1
il bit di riporto
viene ignorato !
10 10 10 10 11 +
1 0 0 0 0 0
34
Operazione di negazione,
osservazioni
Se si prova a negare
−2n−1
ne risulta:
la rappresentazione:
1 0 0 0 0
il complemento bit a
bit:
0 1 1 1 1
sommando 1 :
0 1 1 1 1
la negazione del
numero non può essere
rappresentata in
complemento a 2 !
10 10 10 10 11 +
1 0 0 0 0
35
Operazione di negazione,
osservazioni
• Il massimo positivo è : −2 n−1
corrispondente a :
0 1 1
• Il massimo negativo è
:
corrispondente a :
−1
.
.
.
1 1 1 1
− 2n−1
1 0 0
.
.
.
0 0 0 0
• Un numero negativo in più rispetto ai numeri positivi
• Assimetria inevitabile, dovendo rappresentare: i positivi,
lo zero, e i negativi con un numero 2n di configurazioni
possibili
36
La regola di overflow
• Nella somma di interi con segno rappresentati in
complemento due si verifica un OVERFLOW se e solo se:
• la somma di due interi positivi dà come
risultato un intero negativo
• la somma di due interi negativi da come
risultato un intero positivo
• La somma di due operandi con segno opposto non può
dare overflow; infatti: la somma è minore o uguale, in
valore assoluto, di uno degli addendi; es. -10 + 4 = -6
37
Somma e overflow (1)
• Somma dei numeri 5 e 4 su n=4 bit ( max rappr. 23-1=7 )
0 1 0 1 +
overflow, la somma di
due numeri positivi non
può dare un negativo !
0 1 0 0 =
1 0 0 1
38
Somma e overflow (2)
• Somma dei numeri -6 e -7 su n=4 bit ( min rappr. -23 = -8 )
1 0 1 0 +
1 0 0 1 =
l’ultimo bit di riporto
viene ignorato
1
0 0 1 1
overflow, la somma di
due numeri negativi
non può dare un
positivo !
39
Sottrazione
Per calcolare A – B si osserva che
A – B = A + (-B)
procedimento:
negazione di B
somma A + negazione di B
nella rappresentazione complemento 2 non è
necessario un circuito apposito diverso da quello
della somma per implementare in hardware la
sottrazione !
40
Overflow sottrazione
Sottrazione implementata con negazione e somma
Vale regola overflow somma :
somma di due interi positivi con risultato un intero negativo
somma di due interi negativi con risultato un intero positivo
Sottrazione :
operandi con lo stesso segno  NO overflow
operandi segno diverso:
se risultato segno diverso dal minuendo  SI overflow
Riassunto condizioni overflow
operazione
A+B
A+B
A-B
A-B
A
≥0
<0
≥0
<0
B
≥0
<0
<0
≥0
risultato
<0
≥0
<0
≥0
41
Esempio overflow in sottrazione
A – B = 5 – (-3) = A + (-B) = + 8
A = 5  rappr. su 4 bits
B = -3  rappr. complemento 2
A=0101
B=1101
-B=0011
0 1 0 1 +
0 0 1 1 =
A positivo, B negativo
risultato negativo
 overflow
1 0 0 0
42
Scarica