1 - Università degli Studi di Roma "Tor Vergata"

Fondamenti di Informatica - 1
Prof. B.Buttarazzi
A.A. 2011/2012
Sommario
• Rappresentazione dei numeri naturali (N)
• Rappresentazione dei numeri interi (Z)
– Modulo e segno
– In complemento a 2
• Operazioni aritmetiche
• Esercizi
09/03/2012
2
Codifica delle informazioni
• Qualunque informazione (dato associato a un significato)
sia essa un numero, una data, una immagine, un suono,
prima di essere elaborata (memorizzata, trasformata,
comunicata) da un computer necessita di essere
rappresentata in forma digitale.
• Questo in quanto i computer si basano sul sistema binario
che comprende solo i numeri 0 e 1.
• Queste cifre sono chiamate bit (binary digit) .
3
Registro
I computer per rappresentare le informazioni utilizzano dei dispositivi
fisici detti registri che hanno numero fisso di cifre binarie.
Si è passati rapidamente da 8 a 16 a 32 a 64 bit…. ma il limite rimane!
• Un registro è un dispositivo elettronico per memorizzare le
informazioni
• Dal punto di vista tecnologico un registro è un insieme di n elementi
fisici bistabili, detti bit.
Registro
I computer per rappresentare le informazioni utilizzano dei dispositivi
fisici detti registri che hanno numero fisso di cifre binarie.
Si è passati rapidamente da 8 a 16 a 32 a 64 bit…. ma il limite rimane!
Se si usa un numero prestabilito
di cifre binarie (dovuto al fatto
che i registri del computer hanno
una dimensione prestabilita - n
bit), si pone un limite al numero
massimo di informazioni
rappresentabili
• Un registro è un dispositivo elettronico per memorizzare le
informazioni
• Dal punto di vista tecnologico un registro è un insieme di n elementi
fisici bistabili, detti bit.
Registro n=1
0
1
1
2=
2 configurazioni
Registro n=2 22= 4 configurazioni
00
01
10
11
Registro n=3
000
001
010
011
100
101
110
111
3
2=
8 configurazioni
Registro n=4 24= 16 configurazioni
000
001
010
011
100
101
110
111
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
Registro
Un registro formato da n bit è in grado di assumere 2n
configurazioni di stato diverse.
5 4 3 2 1 0 n=6 26= 64 configurazioni
Ciascun bit ha due configurazioni stabili possibili,
a cui per convenzione vengono associati i simboli 0 e 1
Rappresentazione dei numeri naturali
I NUMERI NATURALI sono i numeri interi positivi:
0, 1, 2, 3, 4, 5, 6, …..
Per la rappresentazione si utilizza la conversione del numero
naturale in binario
d N 1 x2 N
1
d N 2 x2 N
2
d N 3 x2 N
3
..... d1 x 21 d 0 x 20
11
Rappresentazione dei numeri naturali
Il più piccolo numero codificabile è:
0 x2
N 1
0 x2
N 2
0 x2
N 3
1
..... 0 x2
0
0 x2
0
Il più grande numero codificabile è:
1x2 N
1
1x2 N
2
1x2 N
Se N=8, 0-255
Se N=16, 0-65535
Se N=32, 0-4.294.967.295
3
..... 1x21 1x20
ossia da 0 a (2N-1)
ossia da 0 a (2N-1)
ossia da 0 a (2N-1)
12
Rappresentazione dei numeri naturali
Decimale
Binario
Esadecimale
0
0000
0
1
0001
1
2
0010
2
3
0011
3
4
0100
4
5
0101
5
6
0110
6
7
0111
7
8
1000
8
9
1001
9
10
1010
A
11
1011
B
12
1100
C
13
1101
D
14
1110
E
15
1111
F
La codifica esadecimale viene a
volte usata al posto della binaria
per ridurre spazio
Il numero binario viene
suddiviso in blocchi di 4 bits a
partire dal meno significativo
Ad ogni gruppo viene sostituito
il simbolo esadecimale
corrispondete
13
Rappresentazione dei numeri naturali
•
Esempi:
–
codifica dei numeri da 0 a 7:
• bastano3 bit
• una possibile codifica che usa 4 bit

000
0
001
1
010
2
011
3
100
4
101
5
110
6
111
7
14
Rappresentazione dei numeri naturali
•
Esempi:
–
codifica dei numeri da 0 a 8:
• 3 bit non bastano
• una possibile codifica che usa 4 bit

0000
0
0001
1
0010
2
0011
3
0100
4
0101
5
0110
6
0111
7
1000
8
15
Rappresentazione di M numeri naturali
Per la codifica dei numeri da 0 a M
–
Se M=2n-1
Servono n bit ove n= log 2 M
–
Per M qualsiasi il più piccolo n
tale che 2n M
Esempio: M=1000
Se scelgo n=9 riesco a rappresentare 512
informazioni:, quindi non basta. n=10
(1024 informazioni) va bene
00000000
0
00000001
1
00000010
2
00000011
3
00000100
4
00000101
5
00000110
6
00000111
7
…..
….
11111111
127
16
Codifica Numeri Interi
Modulo e segno
Complemento a 2
17
Rappresentazione dei Numeri
Interi Modulo e Segno
I numeri interi o relativi sono rappresentati in modo analogo
a quanto fatto per i numeri senza segno, riservando 1 bit per
rappresentare il segno
Si sceglie il bit più significativo per il segno
Se il bit vale 1 allora il segno rappresentato è il –
Se il bit vale 0 allora il segno è il +
Il numero di bit utili per rappresentare il valore assoluto del
numero intero relativo è: N-1
18
Rappresentazione dei Numeri
Interi Modulo e Segno
Si rappresenta un intero mediante la rappresentazione separata del modulo e del
segno;
•qualunque sia il numero dei bit usati, quello più significativo rappresenta il segno
(0 +;1 -) (tale bit simbolico, non ha peso);
•I restanti (n-1) bit (che hanno un peso in funzione della posizione) rappresentano la
codifica binaria del modulo
Esempio: si voglia rappresentare il numero -5 con 8 bit
 Il primo bit (quello più significativo) viene posto a 1 perchè il numero è negativo
 gli altri 7 bit si calcolano con il metodo visto prima applicato al numero 5, ottenendo
0000101.
 Dunque il numero binario che rappresenta -5 è: 10000101
19
Rappresentazione dei Numeri
Interi Modulo e Segno
Dunque se dispongo di N bit, è possibile rappresentare numeri
interi relativi il cui intervallo sarà:
-(2N-1-1…….+(2N-1-1)
NOTA: ci sono due
rappresentazioni
dello 0
Se N=8 ---> -127,….,0,….,+127.
Se N=16 ---> -32.767,….,0,….,+32.767.
Se N=32 ---> -2.147.483.647,….,0,….,+2.147.483.647.
20
Rappresentazione dei numeri
negativi in modulo e segno
• Con 3 bit avremo:
000
+0
001
+1
010
+2
011
+3
100
-0
101
-1
110
-2
111
-3
Problemi:


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)
Somme e Sottrazioni in Modulo
e Segno
 Dati due numeri binari in rappresentazione modulo e segno, le operazioni
di somma o di sottrazione dipendono dai segni
 Se i segni sono gli stessi:
 Si considerano tutti i bit meno quello del segno
 Si sommano tali sequenze
 Il numero binario risultante sarà ottenuto aggiungendo il bit di
segno ai bit ottenuti dalla somma.
 Se i segni dei due numeri sono diversi:
 Si considerano tutti i bit meno quello del segno
 Si sottrae il numero più piccolo in valore assoluto dal numero più
grande
 Il numero binario risultante sarà ottenuto aggiungendo ai bit ottenuti
dalla sottrazione il bit di segno del numero in valore assoluto più
grande.
22
Somme e Sottrazioni in Modulo
e Segno
Il principale problema della rappresentazione in Modulo e
segno è che le somme algebriche vanno eseguite in modo
diverso in dipendenza dal segno concorde o discorde dei due
operandi
Questo complica notevolmente la realizzazione delle operazioni
di somma e sottrazione a livello hardware.
Il Complemento a 2
Cosa è il complemento a 2 di un numero binario ?
Dato un numero binario X di N bit, si definisce
complemento a 2 di tale numero il numero Y che si ottiene
effettuando l’operazione 2N-X
Un modo semplice per calcolarlo si ottiene tramite il
seguente algoritmo:
 si invertono tutti i bit del numero (0 diviene 1, e viceversa)
 si somma 1
24
Il Complemento a 2
Esempio: si determini il complemento a 2 del numero 10100.
Dalla definizione si ottiene: 100000-10100 =01100
Applicando il metodo si ha:
01011 +1
01100
Esempio: si determini il complemento a 2 del numero 01101001.
Dalla definizione si ottiene: 100000000- 01101001 =10010111
Applicando il metodo si ha:
10010110 +1
10010111
25
Rappresentazione dei Numeri
Interi in Complemento a 2
La rappresentazione in complemento a 2 di un numero intero su N bit, si effettua
nella seguente maniera:
 i numeri interi positivi (incluso lo zero) sono rappresentati in modulo e segno
utilizzando gli N bit:
1 bit di segno (il MSB, pari a 0) e N-1 bit per la codifica
 i numeri interi negativi sono rappresentati realizzando il complemento a 2 della
codifica binaria su N bit del valore assoluto del numero che si vuole
rappresentare
26
Rappresentazione dei Numeri
Interi in Complemento a 2
La rappresentazione in complemento a 2 di un numero intero su N bit, si effettua
nella seguente maniera:
 i numeri interi positivi (incluso lo zero) sono rappresentati in modulo e segno
utilizzando gli N bit:
1 bit di segno (il MSB, pari a 0) e N-1 bit per la codifica
 i numeri interi negativi sono rappresentati realizzando il complemento a 2 della
codifica binaria su N bit del valore assoluto del numero che si vuole
rappresentare
1.
2.
Si rappresenta in binario usando tutti i bit il valore assoluto del
numero negativo da codificare
Si effettua il complemento a due del numero binario ottenuto
•
•
Si invertono tutti i bit in tale rappresentazione (0 1,1 0)
Si somma uno al risultato ottenuto al passo precedente
27
Rappresentazione dei Numeri
Interi in Complemento a 2
Esempio: si voglia rappresentare il numero 1 con 8 bit
Essendo il numero positivo:
•Segno 0
•Codifica binaria su 7 bit di 1: 0000001
Codifica ottenuta: 00000001
Esempio: si voglia rappresentare il numero -1 con 8 bit
Essendo il numero negativo:
Codifica binaria del valore assoluto (1) su 8 bit 00000001
complemento a 2:
•11111110+1
• 11111111.
28
Rappresentazione dei Numeri
Interi in Complemento a 2
Esempio: si voglia rappresentare il numero 1 con 8 bit
Essendo il numero positivo:
•Segno 0
•Codifica binaria su 7 bit di 1: 0000001
Codifica ottenuta: 00000001
Esempio: si voglia rappresentare il numero -1 con 8 bit
Essendo il numero negativo:
Codifica binaria del valore assoluto (1) su 8 bit 00000001
complemento a 2:
•11111110+1
• 11111111.
29
Rappresentazione dei Numeri
Interi in Complemento a 2
Esempio Codifica in Complemento a 2 su 4 bit
30
Rappresentazione dei Numeri
Interi in Complemento a 2
Secondo questa rappresentazione non (completamente) posizionale le 2n
combinazioni di n bit vengono usate per denotare metà valori positivi (da 0 a
2n-1-1) e metà valori negativi (da -1 a -2n-1).
Si noti che in questa rappresentazione il bit più significativo ha peso -2n-1
anziché, come accade usualmente in binario puro, 2n-1.
Così, ad esempio, nella sequenza di bit 11110001 il bit più significativo ha
peso -128 anziché +128.
In questo modo:
quando il bit più significativo vale 0, la stringa di bit denota valori positivi, e
in particolare denota gli stessi valori che denoterebbe in binario puro, perché
il differente peso del MSB non ha influenza;
quando invece tale bit vale 1, la stringa denota valori negativi, e in particolare
il valore rappresentato si ottiene sommando il contributo negativo dell’MSB
con i contributi positivi degli altri bit.
31
Rappresentazione dei Numeri
Interi in Complemento a 2
Dato un numero in complemento a 2, la sua conversione in
decimale avviene tramite la formula:
d N 1 2 N 1 d N 2 2 N 2 d N 3 2 N 3 .... d1 21 d 0 20
Da questa formula si vede che il numero più piccolo che può
essere rappresentato con N bit è:
2N 1
mentre il numero più grande è:
2N 2
2 N 3 .... 21 20
2N 1 1
32
Codifica Numeri Interi
Complemento a 2
Dunque se dispongo di N bit, è possibile rappresentare numeri
interi relativi il cui intervallo sarà:
-(2N-1)…….+(2N-1-1)
Se N=8 ---> -128,….,0,….,+127.
Se N=16 ---> -32.768,….,0,….,+32.767.
Se N=32 ---> -2.147.483.648,….,0,….,+2.147.483.647.
33
Codifica Numeri Interi
Complemento a 2
Esempio: si voglia convertire il numero binario in complemento a 2
00000001
d 7 27 d 6 26 d 5 25 .... d1 21 d 0 20
Applicando la formula precedente , si ottiene che il numero decimale è 1.
Esempio: si voglia convertire il numero binario in complemento a 2
11111111
Applicando la formula
d 7 27 d 6 26 d 5 25 .... d1 21 d 0 20
si ottiene che il numero decimale è dato dalla somma:
-1*27+1*26+1*25+1*24+1*23+1*22+1*21+1*20=
-128+64+32+16+8+4+2+1 =
34
-128+127=-1
Confronto tra le Codifiche
Numeri Interi
Perchè la Rappresentazione in Complemento a 2 è più Conveniente ?
 Il motivo più rilevante è relativo ai vantaggi ottenibili nell'esecuzione di
operazioni elementari come la somma e la sottrazione.
 Queste due operazioni sono quelle che vengono più frequentemente
realizzate in un computer, e, dunque, un risparmio nel tempo necessario
alla loro esecuzione comporta un indiscusso aumento delle prestazioni di
un computer.
 La codifica in complemento a 2 permette un notevole risparmio di tempo
nell'esecuzione di somme
 Con la rappresentazione in complemento a 2 l’operazione di sottrazione
viene ricondotta alla somma previa complementazione dell’operando.
35
Addizione…..già studiata
Le regole per realizzare l'addizione tra numeri binari:
 0+0=0
 0+1=1
 1+0=1
 1+1=0 con riporto di 1
Esempio: Sommare i numeri 0001 (1) e 1010(10).
0001+
1010=
_______
1011 (11)
Esempio: Sommare i numeri 0011 (3) e 1010(10).
0011+
1010=
_______
1101 (13)
36
Somme e Sottrazioni in
Complemento a 2
Dati due numeri binari in complemento a due, per la somma si
applicano le regole dell'addizione a tutti i bit compreso il bit
di segno.
Esempio: Si sommino i numeri a 4 bit 0010 (+2) e 1010 (-6).
0010+
1010=
______
1100 (-4)
Il numero binario risultante è già il risultato con il segno
37
giusto.
Somme e Sottrazioni in
Complemento a 2
Esempio: Si sommino i numeri in complemento a 2 001100
(+12) e 100000 (-32).
001100+
100000=
_______
101100 (-20)
Il numero binario risultante è già il risultato con il segno
giusto.
38
Confronto tra le Codifiche
Numeri Interi
E’evidente la semplificazione nel calcolo della somma e
della sottrazione dei numeri rappresentati in complemento
a due.
39
Riconoscimento Automatico di
un Risultato Corretto
Primo caso
Si supponga di lavorare con codifica complemento a 2 su 4 bit (-8,…,+7)
si consideri la seguente operazione di somma in complemento a due:
1001 (-7) e 1111 (-1).
La somma in base 10 è -8 e rappresenta il limite inferiore codificabile con 4 bit
Eseguendo la somma tra le rappresentazioni dei numeri si ottiene:
1001+
1111=
_________
1 1000
l'operazione effettuata ha prodotto un risultato non contenibile nello spazio
predisposto in quanto è necessario un altro bit (l’1 a sinistra, ottenuto come riporto,
viene memorizzato nel CARRY FLAG per superamento della capacità del registro),
comunque il risultato ottenuto (1000 in complemento a 2 corrisponde a –8) è da
considerare corretto.
40
Riconoscimento Automatico di
un Risultato Corretto
Secondo Caso
Si supponga sempre di lavorare con codifica in complemento a 2 su 4 bit (-8,…,+7)
Quando la somma di due interi
produce come risultato un valore
Si consideri la seguente operazione di somma in complemento a due:
esterno all’insieme dei valori
1001 (-7) e 1110 (-2).
rappresentabili si dice che si è
verificato un “Overflow” e il risultato
In questo caso la somma -9 non è codificabile con 4 bit.
ottenuto non è corretto;
Eseguendo la somma si ottiene:
Il Calcolatore non e in grado di
1001+
prevenire un errore di Overflow, in
1110=
quanto questo viene individuato solo
dopo aver effettuato l’operazione.
________
1 0111
l'operazione effettuata ha prodotto un risultato non contenibile nello spazio predisposto in
quanto è necessario un altro bit (l’1 a sinistra, ottenuto come riporto, viene memorizzato
nel CARRY FLAG per superamento della capacità del registro ), ma il risultato ottenuto
(0111 - in complemento a 2 corrisponde a +7) ) è da considerare errato!
Si ha Overflow.
41
Riconoscimento Automatico di
un Risultato Corretto
Terzo Caso
Si supponga di lavorare ad 8 bit (-128,….,+127)
Si consideri la seguente operazione di somma in complemento a due:
01111110 (126) e 00000011 (3).
In questo caso la somma (129) è superiore al numero massimo positivo codificabile in
complemento a due. con 8 bit
Quando la somma di due interi
produce come risultato un valore
Eseguendo la somma, si ottiene:
01111110 +
00000011 =
____________
10000001
esterno all’insieme dei valori
rappresentabili si dice che si è
verificato un “Overflow” e il risultato
ottenuto non è corretto;
Il Calcolatore non e in grado di
prevenire un errore di Overflow, in
quanto questo viene individuato solo
dopo aver effettuato l’operazione.
l'operazione effettuata ha prodotto un valore contenibile nello spazio predisposto ma il
risultato ottenuto (10000001 - in complemento a 2 corrisponde a -127) ) è da considerare
errato!
Si ha Overflow.
42
Riconoscimento Automatico di
un Risultato Corretto
 Per capire se il risultato che è stato ottenuto sia valido o meno, osservando i casi
precedenti basta controllare i bit più significativi dei numeri da sommare ( X e Y ) e
della somma ( S ) ottenuta.
 Se i bit più significativi dei numeri da sommare ( X e Y ) sono diversi non potrà
verificarsi mai l’overflow e il risultato sarà sempre da considerarsi corretto.
 Se i bit più significativi dei numeri da sommare ( X e Y ) sono uguali e il bit più
significativo della somma ( S ) è diverso da essi allora ci sarà overflow e il risultato
dovrà essere considerato errato.
Nella CPU esiste un registro (detto registro di stato - PSW) dove ciascuno dei bit che lo compongono ha un
significato autonomo che indica (flag) se nel corso dell'ultima operazione eseguita si è verificato un determinato
evento.
CF=1: Carry Flag o flag del riporto. Indica se l'operazione effettuata ha generato un riporto.
OF=1: Overflow Flag. Indica se nell'operazione effettuata si è verificato un errore di overflow (risultato non rappresentabile
nello spazio predisposto).
PF = 1 se il risultato di un’operazione ha un numero pari di bit ad uno;
ZF = 1 quando il risultato di un’operazione è pari a zero;
SF = 1 indica il segno associato al risultato, in questo caso negativo;
43
……………
In caso di risultato errato viene impostato a 1 il flag di overflow (OF)
Riconoscimento Automatico di
un Risultato Corretto
Esempio: Siano dati i numeri a 4 bit 0010 (+2) e 1010 (-6).
0010+
1010=
_______
1100 (-4)
 OF=0, ossia il risultato S è valido, perché i bit più
significativi di X e Y sono diversi.
44
Riconoscimento Automatico di
un Risultato Corretto
Esempio: Siano dati i numeri a 8 bit 01111110 (+126) e
00000011 (+3)
01111110+
00000011=
___________
10000001
 OF=1, ossia il risultato S NON è valido, perché i bit più significativi di X
e Y sono uguali e il bit più significativo di S NON è uguale a loro.
45
Riconoscimento Automatico di
un Risultato Corretto
Esempio: si consideri la seguente operazione di somma in
complemento a due:
1001 (-7) e 1111 (-1).
Eseguendo la somma, il calcolatore ottiene:
1001+
1111=
_________
1 1000 (-8)
OF=0, ossia il risultato S è valido, perché i bit più
significativi di X e Y sono uguali e il risultato ha il bit più
significativo uguale ad essi.
46
Esercizi
1. Data una rappresentazione in complemento a due con 16 bit
quanti numeri interi positivi e negativi si possono
rappresentare?
2. Effettuare la sottrazione tra il numero decimale 22 e il
numero decimale 33 rappresentati prima in binario con
modulo e segno e poi rappresentati in binario in
complemento a 2.
3. Determinare la rappresentazione in complemento a 2 del
numero decimale -10 con 5 e 12 bit.
47
Esercizi
• Fare la somma dei numeri binari in complemento a 2
codificati su n = 8 bit che corrispondono ai numeri decimali 16
e – 42
• Fare la somma dei numeri binari in complemento a 2
codificati su n = 6 bit che corrispondono ai numeri decimali -5
e –28
48
Esercizi
Si ordinino in modo decrescente i seguenti numeri:
• N1= - 113 in base 10
• N2 = 0100 0111 in base 2
• N3 = 43 in base 16
Quanti bit occorrono per rappresentare N3 ed N1 in
complemento a 2?
Eseguire in complemento a 2 (mostrando i passaggi, indicando
esplicitamente se si verifica overflow e motivando la risposta) le
operazioni:
• N1 + N2
• N1 - N3.
49
Esercizi
Eseguire le seguenti operazioni aritmetiche utilizzando la
rappresentazione in complemento a 2 su 3 bit dei numeri
evidenziando i casi in cui viene impostato a 1 il Flag di Overflow
(Overflow Flag – OF- risultato non valido)
1-1=
3-3=
3-1=
-1-2=
0-2=
1+2=
50