Sistemi di Numerazione e Algebra Booleana

Sistemi di Numerazione
e
Algebra Booleana
Laura Farinetti
Claudio Fornaro
Antonio Lioy
Massimo Poncino
Dipartimento di Automatica e Informatica
Politecnico di Torino
Sistemi di numerazione
Il sistema di numerazione usuale e
posizionale (unita, decine, centinaia, : : :)
decimale (cifre = 0,1,2,3,4,5,6,7,8,9)
In altre parole:
208 = 2 10 + 0 10 + 8 10
2
1
0
Altri sistemi di numerazione di interesse sono anch'essi posizionali, ma con base diversa da 10.
sistema
binario
ottale
esadecimale
base
cifre
2
01
8
01234567
16 0 : : : 9 A B C D E F
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
SN-AB.1
Conversione decimale ! base N
Si eettuano divisioni successive del numero dato per
la base N; i resti delle singole divisioni, presi alla
rovescia, rappresentano le cifre del numero nella base
N.
Esempio: convertire 107 in base 2, 5 e 16.
10
107 53 26 13 6 3 1 0
1 1 0 1 0 1 1
107 21 4 0
2 1 4
; quozienti
; resti
; quozienti
; resti
107 6 0 ; quozienti
11 6
; resti
I resti sono in base 10, quindi devono essere convertiti in base N: (11) = (B) .
2
16
Quindi 107 = (1101011)
= (412)
= (6B )
10
2
5
16
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
SN-AB.2
Esercizi - conversione decimale ! base N
Convertire i seguenti numeri decimali nelle basi specicate:
345 in base 2
345 in base 8
345 in base 16
989 in base 5
417 in base 7
615 in base 9
426 in base 2
1042 in base 11
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
[R. 101011001]
[R. 531]
[R. 159]
[R. 12424]
[R. 1134]
[R. 753]
[R. 110101010]
[R. 868]
SN-AB.3
Esercizi - conversione decimale ! base N
Convertire i seguenti numeri decimali nelle basi specicate:
6666 in base 16
4596 in base 4
687 in base 16
595 in base 5
111 in base 2
656 in base 5
811 in base 16
1101 in base 8
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
[R. 1A0A]
[R. 1013310]
[R. 2AF]
[R. 4340]
[R. 1101111]
[R. 10111]
[R. 32B]
[R. 2115]
SN-AB.4
Conversione base N ! decimale
Partendo dalla cifra piu signicativa, si moltiplica
la cifra per il valore della base, elevata alla potenza
corrispondente alla posizione.
Esempio: convertire (302) in base 10.
La cifra meno signicativa indica il coeciente di 7 ,
quella piu signicativa il coeciente di 7 , per cui
7
0
2
(302) = 3 7 + 0 7 + 2 7
= 3 49 + 0 7 + 2 1
= 147 + 0 + 2
= 149
7
2
1
0
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
SN-AB.5
Esercizi - conversione base N ! decimale
Convertire in base 10 i seguenti numeri espressi nelle
basi indicati:
(1000101)
(477)
2
8
[R. 69]
[R. 319]
(40F )
16
[R. 1039]
(3074)
5
(5778)
[R. Impossibile]
9
[R. 4283]
(126)
9
(781)
16
(3B8)
13
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
[R. 105]
[R. 1921]
[R. 658]
SN-AB.6
Esercizi - conversione base N ! decimale
Convertire in base 10 i seguenti numeri espressi nelle
basi indicati:
(10010)
8
[R. 4104]
16
[R. 746]
(2EA)
(369F 1)
(5669)
11
(94598)
(889)
15
10
12
[R. Impossibile]
[R. 7456]
[R. 94598]
[R. 1257]
(1110)
3
(1357)
[R. 1065]
8
[R. 751]
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
SN-AB.7
Conversione base N ! base M
In generale conviene fare la conversione da base N a
base 10, seguita dalla conversione da base 10 a base
M.
Nel caso particolare in cui si debba passare dalla base
2 alle basi 8 o 16 (o viceversa), il calcolo e semplicato perche:
ogni cifra ottale (0, : : : , 7) e esprimibile nella
corrispondente codica binaria (000, : : : , 111) su
3 cifre binarie
ogni cifra esadecimale (0, : : : , F) e esprimibile
nella corrispondente codica binaria (0000, : : : ,
1111) su 4 cifre binarie
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
SN-AB.8
Esempi - conversione base N ! base M
Convertire (01001010100010110) in ottale
Partendo dalla cifra meno signicativa si considerano
la cifre binarie rispettivamente a gruppi di 3:
2
01 001 010 100 010 110
# #
#
1 1
#
2
#
4
#
2
6
Quindi: (01001010100010110) = (112426)
2
8
Convertire (A3D) in binario
Scriviamo le singole cifre esadecimali come numeri
binari di 4 cifre:
16
(A)
#
(D)
(3)
16
#
16
#
16
(1010) (0011) (1101)
2
2
Quindi: (A3D) = (101000111101)
16
2
2
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
SN-AB.9
Esercizi - conversione base N ! base M
Convertire i seguenti numeri nelle basi indicate:
(10010101001010) in base 8
[R. 22512]
(11110101101000) in base 16
[R. 3D68]
(13277) in base 2
[R. 1011010111111]
(B0E 9) in base 2
[R. 1011000011101001]
(214) in base 2
[R. 111011]
(354) in base 6
[R. 510]
(821) in base 12
[R. 477]
(821) in base 8
[R. 1233]
(821) in base 16
[R. 29B]
2
2
8
16
5
7
9
9
9
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
SN-AB.10
Esercizi - conversione base N ! base M
Convertire i seguenti numeri nelle basi indicate:
(AC 29B) in base 8
16
(34772) in base 16
8
(1011) in base 13
9
(312) in base 4
16
(1492) in base 15
11
(C 14) in base 16
15
(C 14) in base 8
15
(558) in base 12
9
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
[R. 2541233]
[R. 39FA]
[R. 44B]
[R. 30102]
[R. 87B]
[R. A9F]
[R. 5237]
[R. 322]
SN-AB.11
Addizioni e sottrazioni in binario
Si eettuano secondo le regole del sistema decimale,
ossia sommando (sottraendo) le cifre di pari peso
Si suppone di non avere limitazione sul numero di
cifre binarie (bit) disponibili.
Esempio: eettuare la somma binaria 11110+10100
1
1
1
1 1 1 1 0 +
1 0 1 0 0
1 1 0 0 1 0
Esempio: eettuare la dierenza binaria 1011 ; 0110
1
1 0 1 1 0 1 1 0
0 1 0 1
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
SN-AB.12
Carry e Borrow
Come nelle usuali operazioni su numeri decimali, si
puo avere un riporto sul bit di peso immediatamente
superiore, o un prestito dal bit di peso immediatamente superiore.
Nella numerazione binaria questi sono detti rispettivamente carry e borrow.
Le somme (dierenze) bit a bit possono essere denite come segue:
0+0=0
1+0=1
0+1=1
1 + 1 = 0 (carry=1)
0;0=0
1;0=1
1;1=0
0 ; 1 = 1 (borrow=1)
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
SN-AB.13
Esercizi - somme e sottrazioni in binario
Eettuare le seguenti operazioni in binario puro:
(34) + (77)
[R. 1101111]
(225) + (63)
[R. 100100000]
(229) + (111)
[R. 101010100]
(10) ; (6)
[R. 100]
(39) ; (14)
[R. 11001]
(32) ; (7)
[R. 11001]
(84) ; (37)
[R. 101111]
(18) ; (7)
[R. 1011]
(25) ; (15)
[R. 1010]
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
SN-AB.14
Overow
Nel caso in cui si abbia un numero limitato di bit a
disposizione (come avviene nella realta), si possono
avere due casi particolari:
carry sul bit piu signicativo (MSB)
borrow dal bit piu signicativo (MSB)
In entrambi i casi il numero di bit ssato non e sufciente per rappresentare il risultato.
Questa condizione si dice condizione di overow.
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
SN-AB.15
Esempi - overow
Considerando numeri binari di 4 bit, eettuare la
somma 9 + 7
(9) = (1001)
(7) = (0111)
10
2
10
2
1 0 0 1 +
0 1 1 1
1 0 0 0 0
Il risultato non e rappresentabile su 4 bit: overow.
Considerando numeri binari di 4 bit, eettuare la
dierenza 4 ; 7
(4) = (0100)
(7) = (0111)
10
2
10
2
(1) 0 1 0 0 0 1 1 1
1 1 0 1
Il risultato non e rappresentabile su 4 bit: overow.
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
SN-AB.16
Rappresentazione in modulo e segno
E' uno dei modi per rappresentare numeri interi relativi su un numero ssato di bit.
Dati N bit, il bit piu signicativo indica il segno, ed i
restanti N-1 il valore assoluto del numero, in binario
puro.
S
modulo
0: segno +
1: segno ;
In questa notazione esistono due rappresentazioni
del numero 0:
0
1
0:::0
0:::0
;! +0
;! ;0
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
SN-AB.17
Esercizi - modulo e segno
Rappresentare in modulo e segno su 4 bit il massimo
e minimo valore, le due rappresentazioni dello 0, i
numeri +5 e ;1.
Soluzione:
minimo numero = 1111 = ;7
massimo numero = 0111 = +7
;0 = 1000
+0 = 0000
+5 = 0101
;1 = 1001
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
SN-AB.18
Rappresentazione in complemento a due
Conversione da decimale a complemento a due:
se il numero e positivo, la corrispondente rappresentazione in C.A. 2 e costituita dal modulo del
numero in binario a cui viene aggiunto il bit di
segno con valore zero (MSB)
0
modulo
se il numero e negativo:
{ si scrive il corrispondente numero positivo in
rappresentazione C.A. 2
{ si complementano tutti i bit
{ si somma 1
Le ultime due operazioni rappresentano l'operazione
di \complemento a due" di un numero binario
Osservazioni:
i numeri negativi hanno sempre bit di segno = 1
esiste una sola rappresentazione dello 0: (0 : : : 0)
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
SN-AB.19
Rappresentazione in complemento a due
Un modo alternativo per calcolare il \complemento
a due" di un numero binario negativo e il seguente:
Considerando il numero da destra a sinistra eseguo
le seguenti operazioni:
copio tutti gli zeri no a trovare il primo uno
copio l'uno
complemento i restanti bit
Esempio:
01 : : : 01 : : : 01
10 : : : 10 : : : 10
1
0:::0
1
1
0:::0
0:::0
0:::0
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
SN-AB.20
Esempi - complemento a due
Rappresentare in complemento a due su 5 bit il numero (+8)
10
codico il modulo in binario (+8) = (1000)
il numero e positivo, quindi il bit di segno e 0
10
2
(+8) = (01000)CA
10
2
Rappresentare in complemento a due su 5 bit il numero (;11)
10
codico il modulo in binario (+11) = (01011)
complementando i bit si ha (10100)
sommando +1 (cioe 00001), si ha:
(;11) = (10101)CA
10
2
2
10
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
2
SN-AB.21
Conversione da complemento a due a
decimale
se il numero e positivo (MSB=0), si converte come un numero binario puro
se il numero e negativo (MSB=1):
{ si sottrae 1
{ si complementano tutti i bit
{ si converte il numero cos ottenuto considerandolo come un numero binario puro
I primi due punti possono essere attuati anche
applicando l'operazione di complemento a 2 al
numero, infatti ((numero)CA )CA =numero
2
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
2
SN-AB.22
Conversione da complemento a due a
decimale - esempio
Scrivere il numero decimale corrispondente al numero 100101 in complemento a due su 6 cifre
Il numero (100101)CA e negativo, percio
2
prima sottraggo 1, ottenendo (100100)
complementando i bit ottengo (011011)
converto considerando il numero in binario puro:
(011011) = 1 2 + 1 2 + 1 2 + 1 2 = (27)
2
2
2
4
3
1
0
10
Quindi il numero decimale corripsondente e ;27.
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
SN-AB.23
Limiti delle rappresentazioni
Fissato il numero N di bit disponibili, e possibile
rappresentare i seguenti numeri:
binario puro
modulo e segno
complemento a due
N
0 : : : (2
;(2N ;1 ; 1)
:::
;(2N ;1)
; 1)
;0+0
:::0:::
:::
+ (2
+ (2
N ;1 ; 1)
N ;1 ; 1)
Ad esempio, su 5 bit e possibile rappresentare i seguenti numeri:
in binario puro : da 0 a 31
in modulo e segno : da ;15 a +15
in complemento a due: da ;16 a +15
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
SN-AB.24