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
Rappresentazione di oggetti
Per rappresentare N oggetti con numeri binari occorrono almeno K bit:
K = dlog (N )e
dove per dX e si intende il numero intero immediatamente superiore od uguale ad X (funzione ceiling).
Ad esempio, per rappresentare 77 oggetti, sono necessari almeno 7 bit (2 = 128), dato che con 6 bit
posso arrivare solo no a 2 = 64.
2
7
6
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
SN-AB.25
Esercizi sulle rappresentazioni
Rappresentare in MS e in CA2 su 8 bit i seguenti
numeri decimali:
+12
;35
+40
;1
;128
+271
+127
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
[R. 0 0001100]
[R. 1 0100011]
[R. 1 1011101]
[R. 0 0101000]
[R. 1 0000001]
[R. 1 1111111]
[R. Impossibile]
[R. 1 0000000]
[R. Impossibile]
[R. 0 1111111]
SN-AB.26
Somma in complemento a due
Dati due numeri X e Y in complemento a due su N
bit, la somma X + Y si calcola sommando aritmeticamente tutti i bit degli addendi, compreso quello di
segno.
L'eventuale carry oltre il bit di segno viene tralasciato.
Esempio: calcolare (;7) + (10) in complemento
a due su 5 bit
(;7) = 11001
(10) = 01010
10
10
10
10
1 1 0 0 1 +
0 1 0 1 0
1 0 0 0 1 1
Il carry nella posizione oltre il bit di segno non viene
considerato ed il risultato e 00011, ossia (3)
10
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
SN-AB.27
Dierenza in complemento a due
Ci si riconduce al caso della somma trasformando la
dierenza nella somma del primo numero con l'inverso del secondo.
Esempio: calcolare (;7) ; (4) in complemento a
due su 5 bit.
Si opera come se l'operazione fosse (;7) + (;4) :
(;7) = 11001
(;4) = 11100
10
10
10
10
10
10
1 1 0 0 1 +
1 1 1 0 0
1 1 0 1 0 1
Tralasciando il carry oltre il bit di segno il risultato
e 10101, ossia (;11)
10
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
SN-AB.28
Overow in complemento a due
Si puo vericare se contemporaneamente:
i due addendi hanno segno concorde
il segno del risultato e diverso dal segno dei due
addendi
s1
s1
s2
overow
se e solo se s2 6= s1
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
SN-AB.29
Esempio - overow
Calcolare (;12) + (;6) in complemento a due su
5 bit:
10
10
(;12) = 10100
(;6) = 11010
10
10
1 0 1 0 0 +
1 1 0 1 0
1 0 1 1 1 0
Si ha carry oltre il bit di segno, che viene ignorato. Il
bit di segno e diverso da quello degli addendi, cioe il
risultato della somma di due numeri negativi sarebbe
positivo, il che e impossibile (overow).
Verica: il risultato sarebbe (;18) , non rappresentabile in complemento a due su 5 bit.
10
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
SN-AB.30
Esercizi - somma e sottrazione in
complemento a due
Eseguire le seguenti operazioni in complemento a due
su 9 bit:
(131) ; (193)
10
10
[R. (;62) = 111000010]
10
(255) ; (256)
10
10
[R. (;1) = 111111111]
10
(;127) + (;130)
10
10
[R. (;257) overow]
10
(255) + (2) + (;127)
10
10
10
[R. (130) = 010000010]
10
(;256) + (2)
10
10
[R. (;254) = 100000010]
10
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
SN-AB.31
Numeri frazionari
Conversione da decimale a binario:
si convertono separatamente parte intera e parte
frazionaria
per la parte intera si segue la procedura di conversione gia vista
per la parte frazionaria si eettuano moltiplicazioni successive per 2 separando la parte intera
(0 o 1) da quella frazionaria cos ottenuta, nche:
{ il risultato della moltiplicazione e 1:000 : : :
{ oppure si raggiunge la precisione richiesta
Esempio: convertire in binario (6:25)
(6) = (110)
10
0.25 0.5 0.0
0 1
10
2
parte frazionaria
parte intera
6:25 = 110:01
.
10
2
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
SN-AB.32
Approssimazione dei numeri frazionari
Si noti che in generale ad un numero frazionario decimale con un numero limitato di cifre puo corrispondere un numero frazionario binario con un numero
innito di cifre. In tal caso ci si ferma quando si
raggiunge la precisione desiderata.
Esempio: convertire in binario (0:3) con la precisione di almeno
10
1
100
0.3 0.6 0.2 0.4 0.8 0.6 0.2
0 1 0 0 1 1 0
" " " " " " "
1
21
1
22
1
23
1
24
1
25
1
26
1
27
(0:3) = 0:0100110 : : :
10
L'errore e minore di
1
100
perche 7 =
1
2
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
1
128
< .
1
100
SN-AB.33
Esercizi - numeri frazionari
Convertire in binario i seguenti numeri
(0:625)
10
(0:03125)
[R. 0:101 ]
2
10
(0:828125)
[R. 0:00001 ]
2
10
[R. 0:110101 ]
2
Calcolare a quale numero decimale corrispondono i
seguenti numeri binari frazionari:
0:1101001
2
1011:0101
[R. (0:8203125) ]
2
11:10011
10
[R. (11:3125) ]
10
2
[R. (3:59375) ]
10
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
SN-AB.34
Rappresentazione in oating-point
Utilizzata per rappresentare numeri frazionari nella
notazione esponenziale:
numero = (mantissa) 2esponente
Il formato piu utilizzato e quello IEEE P754, rappresentato su 32 bit nel seguente modo:
S
8 bit
esponente
23 bit
mantissa (modulo)
L'esponente e rappresentato come numero senza segno su 8 bit in eccesso 127, cioe i valori da -126 a
+127 sono messi in corrispondenza con i valori da 0
a 255, per non dovere gestire anche il segno dell'esponente.
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
SN-AB.35
Floating-point: mantissa
La mantissa e codicata in modulo e segno su 24
bit,
la mantissa e sempre normalizzata nella forma
1:XXXXX
si rappresenta solo la parte frazionaria nei 23 bit
meno signicativi
il peso del MSB del modulo e 2;
il segno e dato dal MSB dei 32 bit
1
La rappresentazione di un numero e quindi nella forma
numero = 1:XXXXX 2 Y Y Y Y 2
(
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
)
SN-AB.36
Conversione decimale ! IEEE P754
Per trasformare un numero decimale N nella sua rappresentazione in oating-point, si deve
trasformarlo in binario
trasformarlo nella forma normalizzata
1:XXXXX 2 Y Y Y Y 2
il segno e 0 per i numeri positivi, 1 per i negativi
l'esponente e pari a 127+ n, dove n e il numero di
(
)
posizioni di cui e stato spostato il punto decimale
dalla forma binaria a quella normalizzata
la parte frazionaria della mantissa normalizzata
(XXXXX ) si memorizza nei 23 bit meno signicativi
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
SN-AB.37
Esempio - oating-point
Convertire in formato oating-point IEEE P754 il
numero 13:25
10
il numero e positivo, per cui il segno e 0
il numero convertito in binario puro e :
1101:01
spostando il punto decimale di 3 posizioni, il numero si normalizza in
1:10101 2
l'esponente in eccesso 127 vale:
127 + 3 = 130 = 10000010
2
2
3
2
La rappresentazione richiesta e:
0 10000010 10101000000000000000000
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
SN-AB.38
Conversione IEEE P754 ! decimale
L'interpretazione di un numero e piuttosto complicata: chiamando s il segno, e l'esponente, ed m la
mantissa, si possono avere i seguenti casi:
e=0, m=0: il valore e (;1)s (0), cioe +0 o -0
e=0, m6=0: il numero e nella forma non norma-
lizata
0 < e < 255: il numero e nella forma
(;1)s 2 e; (1:m)
e=255, m=0: il valore e (;1)s 1, cioe un numero
innitamente grande o piccolo (+1 o ;1)
e=255, m6=0: non e un numero valido (detto
NAN, Not A Number); puo essere usato per codicare informazioni di errore
(
127)
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
SN-AB.39
Esercizi - codica IEEE P754
Rappresentare in formato IEEE P754 i seguenti numeri
5:0
10
;9:25
[R. 0 10000001 0100 : : : 0]
10
12:8125
[R. 1 10000010 0010100 : : : 0]
10
[R. 0 10000010 100110100 : : : 0]
Dati i seguenti numeri in formato IEEE P754, dire
a quale numero decimale corrispondono:
0 10000001 010010 : : : 0
1 10001101 01110 : : : 0
0 01111101 01010 : : : 0
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
[R. 5.125]
[R. 23552.0]
[R. 0.328125]
SN-AB.40
Codici BCD
E' una codica per rappresentare numeri decimali in
binario (Binary Coded Decimal).
Il numero decimale viene suddiviso nelle cifre decimali che lo compongono, e ciascuna di queste convertita in binario puro secondo la corripondenza:
cifra
0
1
2
3
4
5
6
7
8
9
codice
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
SN-AB.41
Esempi - codici BCD
Esempio: convertire il numero 1592 in codice BCD.
1
5
#
9
#
2
#
#
0001 0101 1001 0010
Quindi 1592 = 0001010110010010BCD .
10
Esempio: ricavare il numero decimale corrispondente
al numero 01011000000001000111BCD
0101 1000 0000 0100 0111
#
5
#
8
#
0
#
4
#
7
Quindi 01011000000001000111BCD = 58047 .
10
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
SN-AB.42
Esercizi - conversione binaro $ BCD
Convertire i seguenti numeri binari in BCD:
1000 1001 0011 0111
[R. 8937]
100 1000 0010 1001
[R. 4829]
1 0010 0011 0010 1001 0001
[R. 123291]
10 1001 0101 0110 0101
[R. 29565]
Convertire i seguenti numeri BCD in binario:
4171
6153
4261
10478
[R. 100 0001 0111 0001]
[R. 110 0001 0101 0011]
[R. 100 0010 0110 0001]
[R. 1 0000 0100 0111 1000]
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
SN-AB.43
Codica dell'informazione non numerica
I calcolatori possono intrinsecamente trattare solo
informazioni binarie. Per trattare numeri relativi
e frazionari abbiamo adottato particolari codiche
(modulo e segno, complemento a due, oating-point).
Piu in generale con i numeri binari posso rappresentare insiemi enumerabili di oggetti, stabilendo una
corrispondenza biunivoca tra oggetti e numeri (codica).
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
SN-AB.44
Codica dell'informazione non numerica
Per rappresentare i caratteri alfabetici esistono alcune codiche standard: ad esempio il codice ASCII (il
piu diuso) codica su 7 cifre binarie tutti i caratteri
alfabetici piu alcuni speciali.
000
010
020
030
040
050
060
070
100
110
120
130
140
150
160
170
nul
bs
dle
can
sp
(
0
8
@
H
P
X
`
h
p
x
001
011
021
031
041
051
061
071
101
111
121
131
141
151
161
171
soh
ht
dc1
em
!
)
1
9
A
I
Q
Y
a
i
q
y
002
012
022
032
042
052
062
072
102
112
122
132
142
152
162
172
stx
nl
dc2
sub
"
*
2
:
B
J
R
Z
b
j
r
z
Codice ASCII (ottale)
003 etx 004 eot
013 vt 014 np
023 dc3 024 dc4
033 esc 034 fs
043 # 044 $
053 + 054 ,
063 3 064 4
073 ; 074 <
103 C 104 D
113 K 114 L
123 S 124 T
133 [ 134 \
143 c 144 d
153 k 154 l
163 s 164 t
173 f 174 &
005
015
025
035
045
055
065
075
105
115
125
135
145
155
165
175
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
enq
cr
nak
gs
%
5
=
E
M
U
]
e
m
u
g
006
016
026
036
046
056
066
076
106
116
126
136
146
156
166
176
ack
so
syn
rs
&
.
6
>
F
N
V
^
f
n
v
~
007
017
027
037
047
057
067
077
107
117
127
137
147
157
167
177
bel
si
etb
us
'
/
7
?
G
O
W
g
o
w
del
SN-AB.45
Codiche
Un codice deve permettere di risalire dalla codica
al simbolo rappresentato: per questo motivo, una
stringa binaria su un certo numero di bit ha piu interpretazioni, a seconda della codica che si considera.
Ad esempio, la stringa binaria 1101010 rappresenta:
il numero 106 in binario puro
il numero -42 in modulo e segno
il numero -22 in complemento a due
il carattere 'j' nella codica ASCII
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
SN-AB.46
Algebra Booleana
Opera su variabili che possono assumere soltanto i
due valori 0 e 1 (variabili Booleane).
Operazioni base:
A
0
0
1
1
AND
B AB
0 0
1 0
0 0
1 1
A
0
0
1
1
OR
B A+B
0 0
1 1
0 1
1 1
NOT
A A
0 1
1 0
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
SN-AB.47
Algebra Booleana
Operazioni estese:
A
0
0
1
1
A
0
0
1
1
NAND
B AB
0 1
1 1
0 1
1 0
EXOR
B AB
0 0
1 1
0 1
1 0
A
0
0
1
1
A
0
0
1
1
NOR
B A+B
0 1
1 0
0 0
1 0
EXNOR
B AB
0 1
1 0
0 0
1 1
N.B. E possibile rappresentare qualunque espressione utilizzando esclusivamente l'operazione NAND oppure l'operazione NOR.
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
SN-AB.48
Funzioni booleane
Funzioni di variabili booleane che assumono soltanto
i valori 0 e 1.
Denite tramite tabelle di verita, nelle quali si indica il valore assunto dalla funzione per ogni possibile
combinazione delle variabili.
Esempio: F (x ; x ) denita da
1
2
x
0
0
1
1
1
x
0
1
0
1
F
0
1
0
1
2
Normalmente rappresentate nella forma di espressioni booleane, in cui le variabili booleane sono combinate tramite i quattro operatori fondamentali
Esempio:
F (x ; x ) = x x + x
1
2
1
2
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
1
SN-AB.49
Costruzione di tabelle di verita
Per costruire la tabella della verita di un'espressione
booleana:
semplicare l'espressione mediante teoremi del-
l'algebra booleana, se possibile
calcolare i termini parziali della funzione riducendoli alle operazioni fondamentali
Esempio: calcolare la tabella di verita della funzione
F (a; b; c) = a b + c
a
0
0
0
0
1
1
1
1
b
0
0
1
1
0
0
1
1
c
0
1
0
1
0
1
0
1
ab ab+c
0
0
0
1
0
0
0
1
0
0
0
1
1
1
1
1
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
SN-AB.50
Circuiti logici
Una funzione booleana puo anche essere rappresentata da un circuito logico, cioe da un insieme di porte
logiche connesse fra loro.
Le porte logiche elementari corrispondono alle operazioni base dell'algebra booleana:
BUF
A
A
B
A
B
A
B
INV
A
QQ
AND
AB
OR
A+B
EXOR
AB
A
A
B
A
B
A
B
QQ
e
e
e
A
NAND
NOR
e
AB
A+B
EXNOR
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
AB
SN-AB.51
Circuiti logici - esempio
Disegnare il circuito logico che rappresenta le funzioni:
F (a; b; c) = a b + c
a
b
c
F =ab+c
F (a; b; c) = a b + b c
a
b
c
e
e r
e
J
J
F =ab+bc
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
SN-AB.52
Teoremi dell'algebra booleana
X
X
X
X
X
X
X
0=0
1=
=
X
=0
Y
=
Y
+X
X
X
+
X
X
Y
:::
+
Y
X
+0 =
X
+
X
=
X
+
X
=1
X
+
Y
=
:::Z
X
+
Y
+::: +
Z)
(X +
X
Y
X
+1 = 1
X
X
X
X
=
Z
Z
=
Y
=
X
Y
=
X
+X
Y
X
X
+Y +
(
Y
+
X
+
=
Y
X
X
Y
(
X
(
X
(X +
Y
)
X
X
Y
+
(
X
X
Z
+
Z)
+
Y
)=
X
+
Y
)=
X
)
(
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
X
=
X
=
X
Y
+
:::Z
Y
Y
+Y) =
X
SN-AB.53
Z
Semplicazione di espressioni booleane
Esempi: semplicare le seguenti espressioni:
f (x; y; z ) = xyz + xyz + yz
= xy(z + z ) + yz
= xy + yz
= y (x + z )
f (x; y; z ) =
=
=
=
x + y + xy + (x + y)xy
x + y + y + (x + y)xy
x + 1 + (x + y)xy
1
f (x; y; z ) =
=
=
=
(x + y )xy + z
xxy + yxy + z
0y+0x+z
z)
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
SN-AB.54
Esercizi - tabelle di verita
Determinare le tabelle di verita delle seguenti funzioni:
f = a(a + b)
[R. f (a; b) a]
1
1
f = (ab + b)c
2
[R. a
0
0
0
0
1
1
1
1
b
0
0
1
1
0
0
1
1
c
0
1
0
1
0
1
0
1
ab
0
0
0
0
0
0
1
1
b ab + b
1 1
1 1
0 0
0 0
1 1
1 1
0 1
0 1
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
c
1
0
1
0
1
0
1
0
f ]
1
0
0
0
1
0
1
0
2
SN-AB.55
Esercizi - tabelle di verita
Determinare le tabelle di verita delle seguenti
zioni:
f (a; b; c) = abc + bc + ac
[R. a b c abc bc ac
0 0 0 1 0 0
0 0 1 0 0 0
0 1 0 0 0 0
0 1 1 0 1 0
1 0 0 0 0 0
1 0 1 0 0 1
1 1 0 0 0 0
1 1 1 0 1 1
fun-
3
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
f ]
1
0
0
1
0
1
0
1
3
SN-AB.56
Esercizi - semplicazione di espressioni
Semplicare le seguenti espressioni:
acd + bcd + acd + ab + bd
[R. ab + d]
(a + c)abc
abc + bcd + bc + bce + bcf
[R. 0]
[R. ab + bc + cd + bce]
(a + c)(a + b + d)(b + c + d)
[R. ab + ac + bc + cd]
abc + cdf + de + ef + bd
[R. b + c + d + e + f ]
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
SN-AB.57
Esercizi - verica dell'equivalenza di
espressioni booleane
E noto che in aritmetica vale la proprieta distributiva
a(b + c) = ab + ac
ma non
a + (bc) = (a + b)(a + c)
Stabilire se le precedenti proprieta sono o non sono
valide nell'algebra di Boole.
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
SN-AB.58
Esercizi - funzioni booleane
Per essere ammessi all'orale di un esame universitario si devono aver superato almeno due scritti di
esonero su tre.
Indicando simbolicamente con le variabili Booleane
A, B e C il superamento del primo, secondo e terzo
scritto
costruire la tavola di verita della funzione
f (A; B; C ) che rappresenta l'ammissione all'orale
scrivere ed eventualmente semplicare f
[R. BC + AC + AB ]
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
SN-AB.59
Esercizi - funzioni booleane
Un impianto chimico e dotato di un sistema di allarme automatico che segnala le situazioni anormali. L'allarme suona quando risulta soddisfatta la seguente condizione:
la temperatura della caldaia e maggiore di 170C
e la pressione e superiore a 2 atmosfere, oppure non auisce combustibile e la temperatura
della caldaia e inferiore a 170C.
Costruire una tabella di verita che indichi quando
l'allarme e in funzione e ricavare la funzione corrispondente.
[R. xy + zx]
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
SN-AB.60
Esercizi - funzioni booleane
Una cassaforte ha quattro lucchetti, a, b, c, d, che
devono essere tutti contemporaneamente aperti afnche la cassaforte possa essere aperta.
Le chiavi sono distribuite fra tre persone, X , Y e Z ,
come segue:
X possiede le chiavi a e d;
Y possiede le chiavi b e d;
Z possiede le chiavi a e c.
Le variabili X , Y e Z siano uguali a 1 se la persona corrispondente e presente con le proprie chiavi,
altrimenti siano uguali a 0.
Costruire la tavola di verita della funzione f (X; Y; Z )
che e uguale a 1 se e solo se la cassaforte e aperta, e
in seguito scrivere f .
[R. Y Z ]
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
SN-AB.61
Esercizi - circuiti logici
Disegnare i circuiti logici che rappresentano le seguenti funzioni:
f (a; b; c) = (a b + b) c
1
f (a; b; c) = a b c + b c + a c
2
f (a; b; c) = (a b) c
3
f (a; b; c; d) = (a b + c) (d + a)
4
f (a; b; c) = (a b) (b c)
5
f (a; b; c; d) = ((a + b) cd) (ac + b)
6
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
SN-AB.62
Esercizi riassuntivi
1. Trovare le basi per la quale sono valide le seguenti
operazioni:
210 = 12 p171 = 13
12
[R. 4, 8]
2. Si eseguano le seguenti operazioni rappresentando gli operandi in complemento a due su 12 bit:
(a) (181) ; (1455)
(b) (747) + (1300)
Si esprimano poi i risultati delle operazioni precedenti nel sistema esadecimale.
[R.(a) 101100000110 = (;1274) = B 06
(b) 011111111111 = (2047) = 7FF ]
3. Qual e il numero minimo di cifre binarie necessarie a rappresentare in complemento a due il numero ;87:46875?
[R. 13]
10
10
10
10
10
10
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
16
16
SN-AB.63
4. Si eseguano le seguenti operazioni rappresentando gli operandi in complemento a due su 11 bit:
(a) (9:0625) ; (12:375)
(b) (14:750) + (17:375)
[R.(a) 1111100:1011 = ;3:3125
(b) 0010000:001 = +32:125]
5. Eseguendo il DUMP nel formato esadecimale di
un le contenente numeri nella rappresentazione
oating-point standard, si leggono i seguenti numeri:
41440000 3E 800000
Di quali numeri si tratta?
[R. +12.25 +0.25]
6. Si consideri un codice Gray a 16 eventi: determinare le corrispondenze tra le congurazioni Gray
e le congurazioni in binario puro esprimendole
nel sistema ottale.
Esempio: (17)Gray = (12)binario.
10
10
10
10
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
SN-AB.64
7. Rappresentare in complemento a due il numero ;64:3925 con una precisione di ; indicare
qual e il numero minimo di cifre binarie occorrenti e scrivere il numero decimale corrispondente a
quello binario approssimato.
[R. 1 0111111.1001101111
18 cifre ( 10 = )
-63.3916]
8. Applicando i teoremi dell'algebra booleana, minimizzare l'espressione seguente:
x(w + y) + y(z + y)
[R. x + y + z ]
9. Data la funzione booleana f (x; y; z; k) avente espressione
kx z (x + xk + x + xy)
scrivere l'espressione di f (x; y; z; k) e semplicarla poi tramite i teoremi fondamentali.
[R. f = k x z ]
1
1000
1
2
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
1
1024
SN-AB.65
10. Data la funzione booleana f (x; y; z; k) avente espressione
xy + x + y + z + xzk + xyz + x + z + k + xyz
ricavare la tabella di verita
semplicare l'espressione utilizzando i teoremi
fondamentali e ricavare le tabelle di verita di
quest'ultima.
[R. xz + y]
11. Disegnare il circuito corrispondente alla funzione
booleana f (x; y; z; w) avente espressione
(x y + y z y z w ) w
c 1992 - 96 - L.Farinetti, C.Fornaro, A.Lioy, M.Poncino (POLITO - DAI)
SN-AB.66
Scarica

Sistemi di Numerazione e Algebra Booleana