sistema-binario

annuncio pubblicitario
SISTEMA BINARIO – ALGEBRA DI BOOLE – CIRCUITI
Sistema binario
Il sistema binario, a differenza di quello decimale, utilizza, per la rappresentazione dei numeri,
solamente due cifre, lo “0” e l’ ”1”, combinati adeguatamente.
n° decimale  150 = 0*100 + 5*101 + 1*102
n° binario  1011 = 1*20 + 1*21 + 0*22 + 1*23
È possibile passare da una cifra decimale ad una binaria e viceversa. Vediamo in che modo: per
capire a che numero corrisponde “1011” nel sistema decimale, è sufficiente sommare le potenze di
2; 1011 = 1*20 + 1*21 + 0*22 + 1*23 = 1 + 2 + 0 + 8 = 11.
Un po’ più complesso è il passaggio inverso, da un numero decimale ad uno binario. Si prende il
numero in questione e lo si divide per 2, il risultato dell’operazione viene scritto sotto il numero di
partenza e si scrive a lato del risultato il resto (che può essere 0 o 1). E’ necessario iterare il
procedimento fino a quando si otterrà 0 come risultato della divisione e accanto allo 0 sarà scritto il
resto. Nella colonna dei resti, sarà scritta, letta dal basso verso l’alto, la cifra binaria
corrispondente al numero decimale di partenza:
13 a cosa equivale nel S.B.?
13
2
6
1
3
0
1
1
0
1
La colonna corrispondente al resto, è proprio la nostra cifra binaria  13 = 1101
Ora prendiamo in esame le operazioni matematiche con i numeri binari.
Iniziamo a considerare la somma relativa a due numeri ad un solo bit:
Somma
Risultato in due bits
0+0=0
1+0=1
0+1=1
1 + 1 = 0 con riporto di 1
(00)
(01)
(01)
(10)
Le somme scritte in precedenza devono essere utilizzate per sommare numeri a più bits. Vediamone
un esempio:
1111+
0101=
1 1
15+
5=

10100
20
In rosso sono scritti in ogni colonna gli eventuali riporti dovuti alla somma dei bits della colonna
precedente.
Sottrazione
Se facciamo riferimento a due numeri ad un solo bit dobbiamo tenere in considerazione i risultati
sottostanti:
0–0=0
1–0=1
0 – 1 = 1 con riporto di 1
1–1=0
E’ bene sottolineare che parleremo solo di sottrazioni di un numero più piccolo da uno più grande
(ossia con risultato positivo), del resto l’aggiunta del segno meno nel risultato può essere visto come
un ulteriore simbolo da aggiungere alla rappresentazione di un numero. In quest’ottica la terza riga
delle operazioni presentate non ha significato matematico in sé ma è utile, operativamente, per
operare differenze tra numeri a più bits.
Vediamo come operare in questo ultimo caso:
1101 –
0101 =
13–
5=

1000
8
Vediamo un altro esempio in cui è necessario utilizzare il riporto
1100 –
1001 =
11
12–
9

0011
3
Moltiplicazione
Per due soli bit sarà, come lecito attendersi:
1*1=1
0*1=0
1*0=0
0*0=0
Per numeri a più bits si procede esattamente come nel caso dei numeri decimali:
1111 *
0101 =
1111 +
0000_ +
1111_ =
1001011
15*
5=

75
Divisione
Anche per la divisione si procede come nel sistema decimale.
^
1111 101
101
//
11
Dopo aver eseguito la classica divisione, si prende il dividendo (1111) e gli si sottrae il resto
moltiplicato per il divisore.
Algebra di Boole
L’algebra di Boole consiste nella traduzione dei connettivi logici e delle operazioni logiche in
algebra classica.
Connettivi e simboli
Vero
Falso
“and”
“or”
Logica Classica
vero
falso
Λ
V
Algebra di Boole
1
0
*
+
Per gli operatori (+ e *) dell’algebra di Boole valgono la proprietà commutativa e quella
associativa:
A*B = B*A
A+B = B+A
A*(B*C) = (A*B)*C
A+(B+C) = (A+B)+C
Inoltre valgono le stesse leggi della logica classica, comprese quelle di De Morgan, infatti, ad
esempio:
A+B = A * B
____ _ _
A*B = A + B
Con l’algebra di Boole si semplifica notevolmente il calcolo di operazioni logiche in quanto tutto
viene traslato nel campo algebrico. Vediamo un esempio di come si possa ottenere la somma di due
bit. In tabella è riportato il risultato di questa operazione nei 4 casi possibili, in ingresso abbiamo
due bit, uno per ogni numero da sommare, il risultato è scritto in due bit:
A
0
1
0
1
B
0
0
1
1
Risultato in 2 BIT
00
01
01
10
Circuiti
La colonna evidenziata in rosso corrisponde, come sappiamo, alla tavola di verità di un’operazione
logica corrispondente all’“and”, mentre la colonna in nero, corrisponde all’ ”or esclusivo”; entrambi
i connettivi possono essere rappresentati sotto forma di circuito, è infatti possibile rappresentare con
un sistema di circuiti, un’operazione logica, facendo corrispondere ai connettivi, specifiche
rappresentazioni.
a
And 
Not 
a•b
a
a
b
a
a
Or 
a+ b
Or esclusivo 
b
(a+b)•ab
b
Il nostro scopo ora, è quello di costruire un circuito logico che ci permetta di sommare le due
colonne A e B, e di ottenere i due risultati, che chiameremo bit. Un bit equivale ad una cifra come
risultato, 2 bit a due cifre, 3 bit a tre cifre e così via.
Es. 0 + 1 = 1
0 + 1 = 01
0 + 1 = 001
1 bit
2 bits
3 bits
Il circuito logico che riproduce la somma tra A e B è il seguente:
A
A•B
B
≡
(A+B)•AB
Per semplificare, chiameremo questo sistema sommatorio semplicemente S.
S
Supponiamo di avere a disposizione, per costruire il circuito di somma solo delle porte logiche
NOT, AND e OR inclusivo, come possiamo realizzare l’OR esclusivo di cui abbiamo bisogno?
L’algebra di Boole ci può aiutare:
_
_
OR esc = AB + BA
Questa espressione logica può essere realizzata con questo circuito:
Lo schema proposto ha 5 porte logiche. Pensiamo ad un computer: può essere necessario che il
circuito sia realizzato con un numero inferiore di elementi, per motivi economici, di spazio o di
tempo di calcolo:
Utilizzando le regole dell’algebra di Boole possiamo notare che:
_
_
_ _
_
_ _
_
_
_
_ _
__
AB+BA = AB+BA+ 0 + 0 = AA+AB+BA+BB= A(A+B)+B(A+B) = (A+B)(A+B) = (A+B)AB
Questa espressione logica può essere realizzata con solo 4 porte logiche:
Lo schema rappresentato con S, rappresenta la somma di due colonne in un bit, con risultato in 2
bit.
Ora cerchiamo di costruire un sistema per sommare numeri binari con n bit come ad esempio:
1. A = 1 1 1
2. B = 1 0 1
Il risultato sarà in 3 o 4 bits, a seconda del resto, quindi per sicurezza e comodità, nel nostro
sistema, aggiungeremo la possibilità di un quarto bit.
A3 (1)
B3 (1)
A2 (1)
S
B2 (0)
S
Rip. 1
B1 (1)
S
Rip. 0
1
O
r Rip. 0
1
A1 (1)
Rip. 1
0
S
0
Rip. 1
S
1
0
1
Or
S14
S13
S02
S01
Il grafico va interpretato in questo modo: S1, S2, S3, S4 sono le cifre, che vanno lette da sinistra
verso destra, e che rappresentano il risultato della nostra somma; le righe che riportano scritto
“Rip.”, sono quelle che indicano il riporto della addizione, ad esempio  1 + 1 = 0 con riporto di 1.
Questo sistema può essere utilizzato per la somma di numeri con n bit, perché è sufficiente
aggiungere n “scatole S” in più, a sinistra.
Ora vediamo invece, come può essere rappresentata una “scatola D” che faccia la differenza tra due
numeri binari,
A
1
1
0
0
B
1
0
1
0
Risultato in 2 BIT
00
10
11
00
La colonna in nero, di nuovo rappresenta la tavola di verità dell’ ”or esclusivo”, mentre invece
quella in rosso, la negazione dell’implicazione tra B e A.
Col. Nera  A•B
Col. Rossa  B→A ≡ (non B) + A ≡ B•A
Lo schema della “scatola D” sarà quindi il seguente.
(A+B)•(non AB)
A
B
≡
B
A
B•A
D
Anche qui per semplicità, chiameremo D questo sistema.
Come ultimo passo, realizziamo il circuito che ci permetterà di sommare numeri binari a più bits
come abbiamo fatto in precedenza per la somma.
A3 (1)
B3 (1)
A2 (1)
D
0
B2 (0)
A1 (1)
D
B1 (1)
0
Rip. 0
D
1
Rip. 0
0
D
0
D
0
Or
Rip. 0
1
S3
S2
S1
0
1
0
Come si può vedere, il sistema funziona, in quanto 111-101=010 ≡ 7-5=2 !
I due 0 rossi, stanno ad indicare che quella uscita darà sempre come risultato lo zero, in quanto
A>B, perciò non può esserci resto.
Scarica