Aritmetica Binaria
8-11-2000
Somme tra numeri binari
Nei sistemi posizionali le cifre variano da 0 a B-1, la somma di due cifre
qualunque non supera 2B-2.
Al massimo il risultato e’ costituito da una cifra di ugual peso e da un
eventuale riporto di valore 1 sulla cifra di peso immediatamente superiore.
La presenza del riporto non altera questa proprietà, portando al massimo la
somma a 2B-1. Analoghe considerazioni valgono per la sottrazione.
Consideriamo il caso della somma di due bit:
0
0
0
1
0+
0+
1+
0=
1=
0=
----
----
----
0
1
1
1+
1=
---10
A
0
0
1
1
B
0
1
1
0
C Sum
0
0
0
1
1
0
0
1
Somma di due bit (Half Adder):
Sum = A + B
Half-Adder (HA)
Dalla sintesi della tabella della verità si ricava lo schema logico dell’ Half Adder (HA).
A
0
0
1
1
B
0
1
1
0
A
B
0
1
C Sum
0
0
0
1
1
0
0
1
0
0
1
C
A
B
1
1
0
Half Adder
(HA)
Sum
B
0
Sum = A’ · B + A · B’
1
0
0
1
0
C=A·B
0
1
Full-Adder (FA)
A
Full Adder
(FA)
B
Cout
Sum
Cin
Cin
0
0
0
0
1
1
1
1
A
0
0
1
1
0
0
1
1
B
0
1
1
0
0
1
1
0
Cout Sum
0
0
0
1
1
0
0
1
0
1
1
0
1
1
1
0
Somma di tre bit (Full Adder):
Sum = A + B + Cin
BA
Cin 00 01 11 10
1 0 1
0 0
1
1
BA
Cin 00
0 0
1
0
0
1 0
01 11 10
0 1 0
1 1
1
Sum = A’·B’·Cin + A·B’·Cin’ + A·B·Cin + A’·B·Cin’
Cout=A·Cin + B·Cin + AB
Generalmente il Full-Adder si realizza utilizzando due Half-Adder ed un OR come mostrato
nello schema seguente
Esempio di somma tra numeri binari:
FA
1 1 1 0 0 0 1
1 0 1 0 0 0 12 +
1 1 1 1 1 0 12 =
------------------------------
1 1 0 0 1 1 1 02
Sottrazioni tra numeri binari
A
0
0
1
1
B
0
1
1
0
B Diff
0
0
1
1
0
0
0
1
Differenza due bit:Diff = A - B
Bin
0
0
0
0
1
1
1
1
A
0
0
1
1
0
0
1
1
B
0
1
1
0
0
1
1
0
Bout Diff
0
0
1
1
0
0
0
1
1
1
1
0
1
1
0
0
Differenza di tre bit: Diff = A - B - Bin
Esempio di sottrazione tra numeri binari:
1 1 1 1
1 0 0 1 0 10 1 1 1 1 0=
-------------------------0 0 0 1 1 1
Progetto gerarchico
Un progetto gerarchico e' un progetto suddiviso su più livelli.
Ad ogni livello è associata una descrizione funzionale o una
struttura di blocchi interconnessi
I1
Livello 0
Z1
A
I2
Z2
I3
Livello 1
I1
I2
I3
Livello 2
Livello 3
B1
B2
Z1
Z2
Progetto di un sommatore a 4 Bit
Problema: progettare in modo gerarchico una rete che esegua la somma
di due numeri codificati con codice binario da 4 bit.
Soluzione:
Il primo passo è quello di descrivere lo schema in termini di segnali di
ingresso e uscita (“descrizione ai morsetti”). Tale livello di descrizione
corrisponde al livello gerarchico 0 (o ‘entity’).
Level 0 - “Entity”
X[0..3]
COUT
4 Bit
Full Adder
Y[0..3]
Z[0..3]
Level 1
Lo schema logico di livello 0 può’ essere ulteriormento scomposto in blocchi più
semplici, come mostrato nello schema logico seguente, utilizzando 4 Full-Adder a 1 Bit.
0
X0
Y0
Z0
1 BIT
FULLADDER
Z1
X1
Y1
1 BIT
FULLADDER
Z2
X2
Y2
1 BIT
FULLADDER
Z3
X3
Y3
1 BIT
FULLADDER
Cout
Level 2
Ogni Full-Adder ad 1 Bit è descrivibile mediante il seguente
schema logico utilizzando degli Half-Adder a 1 Bit.
X
y
1 Bit
Half
Adder
C
COUT
S
CIN
C
1 Bit
Half
Adder
Z
S
Level 3
Infine, gli Half-Adder utilizzati per realizzare i Full-Adder a 1 Bit
possono essere descritti mediante il seguente schema logico.
Questo è livello di descrizione più basso del nostro progetto.
X
Y
C
S
Schema logico di un Half-Adder.
Per l’inserimento del progetto all’interno del simulatore partiremo
da questo livello di descrizione e ripercorreremo la gerarchia fino
ad arrivare al livello 0.
Design Entry
Sintesi
(Compilazione)
Simulazione
Funzionamento
previsto ?
NO
SI
Trasferimento al Chip
(Target FPGA)
Aritmetica binaria: i numeri relativi
Nella rappresentazione binaria di numeri dotati di segno viene tipicamente usato
un bit per discriminare tra valori positivi e valori negativi. Dati n bit per la
rappresentazione il bit usato per il segno è quello più significativo (MSB, in
posizione n-1).
Rappresentazione Segno-Valore Assoluto (S-VA)
In questo rappresentazione al valore assoluto del numero viene prefisso un
bit per indicarne il segno.
Il valore 0 di questo bit codifica il segno più e il valore 1 il segno meno.
Esempio n=8:
+5710 = 001110012
segno
modulo
-5710 = 101110012
La rappresentazione S-VA è vantaggiosa per la sua semplicità ma
richiede circuiti complessi per l’esecuzione di somme algebriche.
Prima di eseguire una somma algebrica tra due operandi A e B e’
necessario determinare quale dei due e’ maggiore in valore assoluto.
 Se A e’ maggiore di B si esegue la differenza A-B e si assegna
al risultato il segno di A.
 Se A e’ minore di B si esegue la differenza B-A e si assegna al
risultato il segno di B
Osservazioni
Usando n bit (es. 8) per la codifica, il range di valori rappresentabili risulta:
[-2n-1-1..+2n-1-1]. Un bit (MSB) è usato per il segno.
(Con 8 bit sono rapresentabili valori nell’intervallo [-127 ..+127]).
Vi sono due configurazioni per lo zero (000000002 e 100000002 )
Poichè le operazioni vanno eseguite sulla sola parte di valore assoluto è
semplice la determinazione dell’overflow
Esempio di operazioni algebriche con rappresentazione S-VA
(23+ 16 )10
Stesso segno, si esegue la somma escludendo il bit più significativo. Entrambi gli operandi hanno lo
stesso segno ( bit 7 = 0 ), quindi il segno viene mantenuto ( bit 7 = 0 )
1
2310 +
1610 =
-----3910
00101112 +
00100002 =
-------------01001112
Risultato : +3910
001001112
( 22 - 17 )10
Il primo operando ha modulo maggiore del secondo ( |22| > |17| ) => si esegue la differenza tra
22 e 17. In questo caso il segno del risultato (5) è positivo e il bit 7 deve essere posto a 0.
1
2210 1710 =
-----510
00101102 00100012 =
-------------00001012
Risultato : +510
000001012
(8 - 16)10
Il secondo operando ha modulo maggiore ( |16| >|8| ) del primo.
Si esegue la differenza tra 16 e 8. Il segno e’ quello dell’operando di valore assoluto maggiore.
In questo caso il segno di 16 è negativo e il bit 7 deve essere posto a 1.
1
1610
810
-----810
00100002 00010002 =
-------------00010002
Risultato -810
100010002
(-112 - 39)10
Entrambi gli operandi di segno negativo => si sommano i valori assoluti.
11210
3910
-----15110
1
11100002 +
01001112 =
-------------100101112
Overflow. Sono necessari 8 bit per rappresentare 151 !
Usando la rappresentazione S-VA sono disponibili per il modulo solo 7 bit => (Overflow).
Rappresentazione in complemento a 2 (2’s C)
Dati n bit per la codifica del modulo e del segno:
la rappresentazione in complemento a 2 (2’s C) di un numero
si ottiene sommando (sottraendo nel caso di numeri negativi)
a 2n il numero codificato in valore assoluto ed eliminando
l’eventuale bit di riporto in posizione n;
- Con tale rappresentazione possono essere codificati i valori compresi
nell’intervallo [(2n-1-1), -2n-1].
- I numeri positivi restano inalterati
- I numeri negativi sono calcolabili partendo dal corrispondente valore
positivo, invertendo tutti i bit (complemento a 1, 1’s) e sommando 1
Esempio
Siano dati 3 bit (n=3) per la rappresentazione di numeri con segno
n=3
Con tale configurazione di bit potranno essere
codificati i numeri da +3 a -4, cioè [22-1,-22]
Bit 2
Bit 1
Bit 0
La rappresentazione in complemento a 2 (2’s C) si ottiene come segue:
si somma (o si sottrae) a 23 = 810 = 10002 la rappresentazione in valore
assoluto del numero che si vuole rappresentare in 2’s C,
Es +2: Per i numeri positivi si somma a 10002 il modulo del numero (|210|=0102).
Quindi +210 = 10002+0102 = x0102 in complemento a 2
Es -2: Per i numeri negativi si sottrae da 10002 il modulo del numero |210|=0102.
Quindi -210 = 10002-0102 = x1102 in complemento a 2
Rappresentazione in Segno e Valore Assoluto (S-VA) e Complemento a
2 (2’s C) di numeri con segno utilizzando 3 bit
Dec
S-VA
2's C
O
1
2
3
-4
-3
-2
-1
OOO
OO1
O1O
O11
???
111
11O
1O1
OOO
OO1
O1O
O11
1OO
1O1
11O
111
Interpretazione di un numero codificato in complemento a 2
La rappresentazione con segno e valore assoluto (S-VA) risulta più intuitiva ma meno potente
rispetto alla rappresentazione in complemento a 2 (2’s C).
Come interpretare un numero codificato in complemento a 2 ?
In una configurazione binaria di n bit codificata in complemento a 2, il bit più significativo (MSB in
posizione n-1) assume un peso negativo pari a -2n-1.
V10  2
n 1
n2
 d n 1   d i  2 i
i 0
I numeri positivi (dn-1=0) codificati in complemento a 2 rimangono inalterati.
Esempio: n=4
10112 in complemento a 2 equivale a:
10112 = -1·23 + 0·22 + 1·21 +1·20 = -8 + 0 + 2 +1 = -510
Mentre 01112 in complemento a 2 equivale a :
01112 = 0·23 + 1·22 + 1·21 +1·20 = 0 + 4 + 2 +1 = +710
di  0,1
Metodo opertivo per il calcolo del complemento a 2 di un numero
Nella rappresentazione in complemento a 2 i numeri positivi rimangono inalterati
mentre i numeri negativi possono essere ottenuti, dalla rappresentazione in
valore assoluto, invertendo tutti i bit (1’s C) e sommando 1.
Esempio n = 4
a) Rappresentare +510 in complemento a 2.
Soluzione
+ 510 = 01012
(rimane inalterato)
b) Rappresentare -510 in complemento a 2.
Soluzione
Si esprime il valore assoluto di –5 in binario. Si applica il complemento a 1 e si somma 1 a
risultato.
1’s
+1
510 = 0101 -> 10102 -> 10112 = -5
Propriètà
Applicando due volte
originale.
la regola del complemento a 2 si ottiene il numero
Esempio
n=4
-510 in complemento a 2 risulta 10112
Applicando nuovamente il complemento a 2 si ottiene il valore assoluto del
numero
1’s
+1
-5 -> 10112 -> 01002 -> 01012 = + 510
Propriètà
il complemento di una somma algebrica è uguale alla somma aritmetica dei
complementi
Vantaggi della rappresentazione in complemento a 2 rispetto alla
rapp. somma valore assoluto
- Vi è una sola rappresentazione per lo zero (00…000).
- Operativamente non vi e’ differenza nell’eseguire somme o sottrazioni
- Non e’ necessario individuare il maggiore, in valore assoluto, tra i due
operandi come nel caso della rappresentazione S-VA.
Per Esercizio
Utilizzando una rappresentazione a 4 bit calcolare
3
3
-1
3
+1
-1
-2
-7
= [0100]
= [0010]
= [1101]
= [1100]
Overflow
S-VA
Nel caso della rappresentazione con segno e valore assoluto (S-VA) la presenza di
eventuali situazioni overflow puo’ essere rilevata analizzando il bit di carry-out
relativo al bit più significativo del modulo.
2’s C
Nel caso di somme algebriche con numeri rappresentati in complemento a 2 la
rilevazione della condizione di overflow si ottiene controllando se il bit di carry-in e il
bit di carry_out relativi al bit più significativo (il bit n-1) della codifica sono diversi.
Questa operazione puo’ essere eseguita utilizzando l’operatore logico or-esclusivo.
Esempi: Con N=3 possono essere rappresentati i numeri tra [+3, -4] in 2’s C
3+3 = 6 (overflow)
2+1 = 3
-3-3 = -6 (overflow)
-3-1 = -4
-3+2 = -1
0 1 1
0 0 0
1 0 1
1 1 1
0 0 0
0 1 1+
0 1 0+
1 0 1+
1 0 1+
1 0 1+
0 1 1=
0 0 1=
1 0 1=
1 1 1=
0 1 0=
------------------
------------------
------------------
------------------
------------------
0 1 1 0
0 0 1 1
1 0 1 0
1 1 0 0
0 1 1 1
Progetto di un sommatore algebrico a 4 Bit
Problema: progettare in modo gerarchico una rete che esegua la somma
algebrica di due numeri di 4 bit codificati con segno e valore assoluto (S-VA).
La rete produce un risultato a 4 bit per cui è necessario segnalare eventuali
situazioni di overflow.
Level 0 - “Entity”
Segno X
X[0..2]
Segno Y
3
Somma
Algebrica
Overflow
3
3
Y[0..2]
S-VA
S-VA
Segno Z
Z[0..2]
Level 1
Lo schema logico dell’esercizio puo’ essere ulteriormente scomposto.In rosso sono
evidenziati i tipi di rappresentazione utilizzati per l’elaborazione delle informazioni
all’interno della rete.
Segno x
X[0..2]
C2’s
3
2
4
4
Segno y
4 Bit
Full Adder
Errore
4
C2’s
3
Overflow
Segno Z
C2’s
3
Y[0..2]
Z[0..2]
S-VA
2’s C
2’s C
S-VA
Level 2
La rete che calcola il complemento a 2 può essere ulteriormente decomposta
con due blocchi in cascata che, nel caso di numeri negativi, calcolano il
complemento a 1 e sommano 1.
La rete che somma 1 al numero in complemento a 1 puo’ essere ottenuta con
un FA a 4 bit nel quale uno degli operandi è 1 se il numero è negativo e 0 se il
numero è positivo.
Segno x
3
I[0..2]
C1’s
+1
4
S-VA
U[0..3]
4
2’s C
Level 3
Mentre la rete che calcola il complemento a 1 puo’ essere realizzata con
degli operatori di or-esclusivo.
Scarica

AritmeticaBinaria - IIS Cartesio Luxemburg