Elementi di informatica
Sistemi di numerazione posizionali
Rappresentazione dei numeri
Rappresentazione dei numeri
• nei calcolatori rappresentazioni finalizzate ad
algoritmi efficienti per le operazioni
• in genere codifica a lunghezza fissa
– l’insieme di numeri rappresentati è finito
• sistemi posizionali
ad eccezione dei numeri interi positivi (caso
banale), trasformazione del numero da
rappresentare in un altro numero
“rappresentabile” ...
Codifica dell'Informazione
2
1
trasformazione e codifica
• insieme X dei numeri da rappresentare
– X è un intervallo di numeri interi o reali
• insieme Y dei numeri rappresentati
– Y è un intervallo finito
• trasformazione di un numero x∈X in un numero
y∈ Y
– regola di trasformazione: y = R(x
R(x)
• rappresentazione in cifre (sistema
(sistema posizionale)
posizionale) di y
• codifica in bit delle cifre
Overflow e underflow
• overflow:
overflow: tentativo di rappresentare un numero esterno
all’
all’intervallo
–
Impossibilità
Impossibilità di rappresentare il numero
Utilizzando la numerazione posizionale in base 2 un numero M
espresso su n bit potrà
potrà assumere valori compresi tre 0 ≤ M ≤2n-1
• underflow:
underflow: un numero x ≠ 0 viene rappresentato da y = 0
–
ovviamente ha senso solo nel caso in cui X è un intervallo
di numeri reali, rappresentati da Y (intervallo finito) con
un’
un’approssimazione ε
2
Parametri di un sistema di
rappresentazione
•
•
•
•
intervallo numerico e tipo del numero x da rappresentare
regola di trasformazione y = R(x
R(x)
condizione di overflow
approssimazione ε e condizione di underflow
- solo per i reali
• base di numerazione
• codifica delle cifre in binario
- se la base della
numerazione è diversa
da 2
NB: se la base della
numerazione non è
binaria, la codifica del
numero in binario è
indiretta ...
I numeri naturali
• La rappresentazione dei numeri naturali è
fondamentale perché tutte le altre si rifanno a questa
• Numeri rappresentabili:
0 ≤ y < bn
• b è la base di numerazione
–
in pratica 2, 8, 16 … ma anche 10
• rappresentazione ad n cifre :
–
Cn-1 Cn-2 ....C0 , dove 0 ≤ Ci < b
• condizione di overflow:
overflow: x ≥ M
3
Aritmetica dei numeri naturali
• Algoritmi classici per la realizzazione delle operazioni
aritmetiche (noti dalle elementari)
• le regole sono le stesse per tutti i sistemi di
numerazione posizionali (non solo quello decimale):
–
–
–
per addizione e sottrazione numeri in colonna e riporto …,
per moltiplicazione e divisione uso di tavole pitagoriche
per le singole cifre …
un esempio ...
1 1 0 0 riporti
4987 +
3232
8219
Addizione in binario
L’addizione tra due numeri binari segue le stesse regole
dell’addizione tra due numeri decimali:
„ i due numeri sono incolonnati uno sopra l’altro.
„ si effettua la somma delle cifre di pari peso.
Tabella di addizione
Ai Bi Si
Ri
0 0 0
0
0 1 1
0
1 0 1
0
1 1 0
1
Ai+Bi = Si
Ri = Carry o Riporto
4
esempio
1
riporto
1
1
1
1
1
1
1
0
1
0
1
0
0
1
0
0
1
0
+
Sottrazione in binario
Anche la sottrazione segue le stesse regole della sottrazione tra
tra
due numeri decimali:
ƒ
ƒ
i due numeri sono incolonnati uno sopra l’altro.
si effettua la sottrazione delle cifre di pari peso.
Tabella della sottrazione
Ai Bi Si
Bi
0 0 0
0
0 1 1
1
1 0 1
0
1 1 0
0
AiAi-Bi = Si
Bi = Borrow o Prestito
5
esempio
1
1
0
1
1
0
1
1
0
0
1
0
1
-
borrow
Overflow
Nel caso in cui si abbia un numero limitato
di bit a disposizione , si possono avere due
casi particolari di errore:
ƒ Carry sul bit più significativo;
ƒ Borrow dal bit più significativo.
In entrambi i casi il numero di bit fissato non è
sufficiente per rappresentare il risultato.
Tale condizione si dice di overflow.
6
Esempio di overflow
Considerando i numeri binari di 4 bit,
effettuare la somma 9 + 7.
910=10012
710=01112
1
riporto
1
1
0
0
1
0
1
1
1
0
0
0
0
+
Il risultato non è rappresentabile su 4 bit,
quindi si ha overflow
Esempio di overflow
Considerando i numeri binari di 4 bit,
effettuare la sottrazione 5- 7.
510=01012
710=01112
1
borrow
0
1
0
1
0
1
1
1
1
1
1
0
-
Il risultato non è rappresentabile su 4 bit,
quindi si ha overflow
7
Operazione di scalamento a sinistra
Uno scalamento a sinistra di un numero binario
equivale ad una moltiplicazione per 2.
00101101
01011010
Inserito uno 0 in fondo
Uno scalamento di N posizioni a sinistra equivale
a moltiplicare il numero binario per 2 N .
Scalamento a destra
Uno scalamento a destra di un numero binario equivale
ad una divisione per 2.
00101101
00010110
Inserito uno 0 in cima
Scalamento a destra
Uno scalamento di N posizioni a destra equivale a
dividere il numero binario per 2 N .
8