ppt - Alberto Ferrari

annuncio pubblicitario
Rappresentazioni numeriche
Sistemi posizionali, numeri binari,
complemento a due
Conversione dalla base 10 alla base 2
 Dato un numero N la sua rappresentazione in base
due sarà del tipo
ck ck-1ck-2 … c1c0
(dove “ci” è una cifra binaria)
 Per convertire un numero in base dieci nel
corrispondente in base due si devono trovare i resti
delle divisioni successive del numero N per due
Conversione dalla base 10 alla base 2
 Esempio: il numero 610:
6/2 = 3 resto 0
3/2 = 1 resto 1
1/2 = 0 resto 1
 Leggendo i resti dal basso verso l’alto, si ha
che la rappresentazione binaria del numero
610 è 1102
Conversione dalla base 10 alla base 2
 Esempio: il numero 34510:
345/2 = 172 resto 1
172/2 = 86 resto 0
86/2 = 43 resto 0
43/2 = 21 resto 1
21/2 = 10 resto 1
10/2 = 5 resto 0
5/2 = 2 resto 1
2/2 = 1 resto 0
1/2 = 0 resto 1
 Leggendo i resti dal basso verso l’alto (in quanto si
ottengono a partire dalla cifra meno significativa,
l’unità), si ha che rappresentazione binaria del
numero 34510 è 1010110012
Conversione dalla base 2 alla base 10
 Sia cm cm-1cm-2 … c1c0 un numero rappresentato in base
2, usiamo:
cm x 2m + cm-1 x 2m-1 + cm-2 x 2m-2 + … + c1 x 21 + c0 x 20 = N
 Esempio: 1010110012
1 x 28 + 0 x 27 + 1 x 26 + 0 x 25 + 1 x 24 + 1 x 23 +
0 x 22 + 0 x 21 + 1 x 20
=
256 + 64 + 16 + 8 + 1
=
345
Altri basi: ottale, esadecimale
 Sistema ottale
 Utilizza una notazione posizionale basata su otto
cifre (0,1,…,7) e sulle potenze di 8
 Esempio: 1038 = 1 x 82 + 0 x 81 + 3 x 80 = 67
 Sistema esadecimale
 Utilizza una notazione posizionale basata su sedici
cifre (0,1,…,9,A,B,C,D,E,F) e sulle potenze di 16


Esempio: 10316 = 1 x 162 + 0 x 161 + 3 x 160 = 259
Esempio: AC416 = 10 x 162 + 12 x 161 + 4 x 160 = 2756
Operazioni su numeri binari
 Vediamo solo il caso della addizione nella
codifica binaria:
Si mettono in colonna i numeri da sommare
 Si calcola il riporto ogni volta che la somma parziale
supera il valore 1

 Addizione:
0 + 0 = 0 con riporto 0
0 + 1 = 1 con riporto 0
1 + 0 = 1 con riporto 0
1 + 1 = 0 con riporto 1
Operazioni su numeri binari
 Addizione:
0 + 0 = 0 con riporto 0
0 + 1 = 1 con riporto 0
1 + 0 = 1 con riporto 0
1 + 1 = 0 con riporto 1
 Esempi:
1+
1=
10
101+
11=
1000
10110101+
1000110=
11111011
111+
11=
1010
Codici a lunghezza fissa
 Se si usa un numero prestabilito di cifre si ha
un codice a lunghezza fissa
 In questo modo si pone anche un limite al
numero massimo rappresentabile
 Esempio: qual è il numero più grande
rappresentabile con 4 cifre?
In base 10:
 In base 2:
 In base 16:
 In base 8:

9999
1111
FFFF
7777
(=1510)
(=6553510)
(=409510)
Codici a lunghezza fissa
 Numeri maggiori di quello massimo
rappresentabile causano problemi di overflow

Ovvero per essere rappresentati richiedono più cifre
di quelle a disposizione
 Esempio: 4 cifre
 In base 10:
9999 + 1
 In base 2:
1111 + 1
 In base 16:
FFFF + 1
 In base 8:
7777 + 1
= 1000010
= 100002 (=1610)
= 1000016 (=6553610)
= 100008 (=409610)
Codici a lunghezza fissa
 In generale, con N cifre a disposizione e base b
il più grande numero (intero positivo)
rappresentabile si può esprimere come
bN – 1
 Esempio: N=4
In base 10:
 In base 2:
 In base 16:
 In base 8:

9999
1111
FFFF
7777
= 104 - 1
= 24 - 1
= 164 - 1
= 84 - 1
Codici a lunghezza fissa

Esempio di overflow nel sistema binario
dovuto a operazioni aritmetiche:



5 + 4 = 9 (in sistema decimale)
abbiamo usato solo un cifre decimale per il
risulto
Ricordiamo: 510 = 1012
101+
100=
1001
(in sistema binario)
,
410 = 1002
Errore: overflow
(non può essere codificato
910 = 10012 con tre bit)
Rappresentazione dei numeri
 In realtà, una semplice codifica binaria come
quella discussa fino ad ora non è sufficiente,
per due motivi:
Numeri negativi
 Numeri con la virgola

 Per questi numeri vengono utilizzate delle
rappresentazioni differenti

Per esempio “complemento a due” per
rappresentare i numeri negativi
Rappresentazione dei numeri negativi
 Si può pensare di usare un bit per il segno
 “0” identifica “+”
 “1” identifica “-”
 Gli altri bit vengono usati per codificare il
valore assoluto (modulo) del numero
Rappresentazione dei numeri negativi
 Con 3 bit avremo:
Problemi:
000
+0
001
+1
010
+2
011
+3
100
-0
101
-1
110
-2
111
-3


Il numero 0 ha due
rappresentazioni
Per l’operazione di
somma si deve tener
conto dei segni degli
addendi
0010+
1011=
1101
(+2)
(-3)
(-5 ERRATO)
Rappresentazione dei numeri negativi
 Complemento a due:
 Il bit più significativo rappresenta il segno del numero: 0 per i
numeri positivi e 1 per i numeri negativi
 La rappresentazione di un numero positivo si ottiene
codificando il valore assoluto del numero con i bit restanti
 La rappresentazione di un numero negativo si ottiene in tre
passi:



Si rappresenta in complemento a due il numeri positivo con lo
stesso valore assoluto del numero negativo da codificare
Si invertono tutti i bit in tale rappresentazione (01,10)
Si somma uno al risultato ottenuto al passo precedente
Complemento a due
 Esempio (con 4 bit a disposizione):
 La codifica di +5 è 0101
 La codifica del numero –5 avviene in tre passi:
La rappresentazione in complemento a due di +5 è 0101
 Invertendo tutti i bit si ottiene 1010
 Sommando 1 si ottiene 1011, la rappresentazione in
complemento a due di -5

Complemento a due
 Per ottenere un numero con segno data la sua
rappresentazione in complemento a due:
Se il primo bit è 0 il numero è positivo: per
calcolarne il valore assoluto si esegue la conversione
da binario a decimale
 Se il primo bit è 1 il numero è negativo:

Si ignora il primo bit
 Si invertono i restanti bit
 Si converte il numero da binario a decimale
 Si somma uno al numero ottenuto per ottenere il valore
assoluto del numero negativo

Complemento a due
 Esempio: 1011
 Si esclude il primo bit
 Invertendo 011 si ottiene 100 che è codifica di 4
 Va aggiunto 1 per ottenere il valore assoluto 5
 Il risultato è quindi -5
Esercizio
 Esercizio: Rappresentare -3510 in complemento a 2
001000112 = +3510
Complemento a uno
11011100 +
1 =
-----------11011101
Complemento a due
 Con 3 bit avremo:
Esempi di addizione:
000
+0
001
+1
010
+2
011
+3
100
-4
101
-3
110
-2
111
-1
0010+
1011=
1101
(+2)
(-5)
(-3)
0111+
1011=
0010
(+7)
(-5)
(+2)
Nel secondo
esempio, l’overflow
è ignorato
Codifica dei numeri
 Codificare il numero 13210 nella
corrispondente rappresentazione binaria
 Ordinare in modo crescente i seguente
numeri: 10410 , 128 , 1000100002 , 1001110
 Codificare il numero negativo –1210 nella
rappresentazione in complemento a due
Concludendo …
 « There are only 10 types of people in the world:
those who understand binary and those who don't »
 « Ci sono solamente 10 tipi di persone nel mondo:
chi comprende il sistema binario e chi no »
Scarica