Sei sulla pagina 1di 23

Dispense del Corso di

Fondamenti di Informatica

LA CODIFICA DELLE INFORMAZIONI

Pg. 1 di 23
----------------------------------------------------------------------------------------------

INDICE
1.

LA CODIFICA DEI NUMERI E LE OPERAZIONI ARITMETICHE TRA NUMERI CODIFICATI


1.1
NOTAZIONI POSIZIONALE E BASI
1.2
CONVERSIONE TRA NUMERI CON BASI DIVERSE
1.3
SOMMA TRA NUMERI INTERI CON LA STESSA BASE
1.4
ARITMETICA FINITA DEI NUMERI INTERI

2.

LA RAPPRESENTAZIONE DEI NUMERI RELATIVI E LE OPERAZIONI ARITMETICHE TRA


NUMERI RELATIVI
2.1
LA RAPPRESENTAZIONE IN MODULO E SEGNO (M&S)
2.2
LA RAPPRESENTAZIONE IN COMPLEMENTO ALLA BASE DIMINIUTA
2.3
LA RAPPRESENTAZIONE IN COMPLEMENTO ALLA BASE
2.4
LA RAPPRESENTAZIONE ECCESSO M (NOTAZIONE POLARIZZATA)
2.5
LE OPERAZIONI ARITMETICHE CON NUMERI RELATIVI

3.

LA RAPPRESENTAZIONE IN VIRGOLA MOBILE

Dispense del Corso di

Fondamenti di Informatica

LA CODIFICA DELLE INFORMAZIONI

Pg. 2 di 23
----------------------------------------------------------------------------------------------

1.

LA CODIFICA DI NUMERI E LE OPERAZIONI ARITMETICHE TRA NUMERI CODIFICATI

1.1

NOTAZIONI POSIZIONALE E BASI

La notazione posizionale permette di scrivere un numero N, rappresentato in una certa generica


base b come una sequenza di cifre nella forma:
an-1 an-2 an-3 . a2 a1 a0 . a-1 a-2 a-3 . a-m-2 a-m-1 a-m
in cui:
il punto ha significato di separatore della parte intera dalla parte frazionaria.
le cifre della parte intera sono in numero di n e il pedice che le contraddistingue (per
chiarezza indicato tra parentesi) va da 0 a n-1.
le cifre della parte frazionaria sono in numero di m e il pedice che le contraddistingue (per
chiarezza indicato tra parentesi) va da -1 a -m.
La formula con cui si ricava il valore V(N) del numero N :
V(N) = an-1 bn-1 + a n-2 b n-2 + . + a 2 b 2 + a 1 b + a 0 +
+ a -1 b -1 + a -2 b -2 + . + a -m-1 b -m-1 + a -m b -m
Sinteticamente si scrive:
n-1
V(N) = a i b i
i=0

[1]

b detta base del sistema di numerazione


a i detta cifra del sistema di numerazione
b i detto peso della cifra a i.
Risulta sempre:
0 ai b-1
I sistemi di numerazione pi diffusi, oltre a quello decimale (b = 10), sono:
il sistema binario (b = 2) (a i = 0,1)
il sistema ottale (b = 8) (a i = 0,1,2,3,4,5,6,7)
il sistema esadecimale (b = 16) (a i = 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F)
Si noti che A, B, C, D, E, F stanno per 10, 11, 12, 13, 14, 15 rispettivamente.

Dispense del Corso di

Fondamenti di Informatica

LA CODIFICA DELLE INFORMAZIONI

Pg. 3 di 23
----------------------------------------------------------------------------------------------

Per esemplificare quanto detto in precedenza, si considerino alcuni casi tipici


Il valore V(N) del numero decimale intero 32706 dato da:
3*104

+ 2*103

+ 7*102

+ 0*101

+ 6*100

= 30000 + 2000 + 700 + 6

Analogamente, il valore V(N) del numero decimale frazionario 3.4709 dato da:
3*100

+ 4*10-1

+ 7*10-2

+ 9*10-4

= 3 + 0.4 +0.07 + 0.0009

Il numero binario 10101.011 espresso da:


24

+ 22

+ 1 + 2-2

+ 2-3

= 16 + 4 + 1 + 0.25 + 0.125 = 21.375

Il numero ottale 3271 espresso da:


3*83

+ 2*82

+ 7*8

+ 1 = 1536 + 128 + 56 + 1 = 1721

Il numero esadecimale FED2.A espresso da:


15*163 + 14*162
65234.625

+ 13*16

+ 2 + 10*16-1

= 61440+3584+208+2 =

Per specificare in quale base rappresentato un numero si scrive (N) . Nei casi precedenti si
scriver
b
quindi (3.4709)10 , (10101.011) 2 , (3271) 8 , (FED2.A) 16 . Nel caso dei numeri esadecimali
si
scrive spesso FED2.Ah oppure (FED2.A)hex.
Si fa notare che tutti i numeri trattati sinora sono numeri assoluti, vale a dire senza segno. Il
problema della rappresentazione dei numeri con segno sar esaminato pi avanti, nel solo caso dei
numeri binari.
Come nel sistema metrico decimale, anche nella terminologia informatica sono stati introdotti dei
simboli per rappresentare multipli delle grandezze fondamentali, derivati direttamente da quelli in
base 10. Tuttavia il loro valore leggermente diverso, in quanto calcolato in base 2, come mostra
la tabella seguente.

Dispense del Corso di

Fondamenti di Informatica

LA CODIFICA DELLE INFORMAZIONI

Pg. 4 di 23
----------------------------------------------------------------------------------------------

Multiplo
Kilo
Mega
Giga
Tera
Peta

1.2

Sigla
K
M
G
T
P

2 10
2 20
2 30
2 40
2 50

=
=
=
=
=

Valore
1024
1024 2 = 1024K = 1048576
1024 3 = 1024M = 1073741824
1024 4 = 1024G
1024 5 = 1024T

Approssimazione
10 3
10 6
10 9
10 12
10 15

CONVERSIONE TRA NUMERI CON BASI DIVERSE

Conoscere la tecnica e le problematiche della conversione utile per capire alcuni fenomeni che
possono accadere anche nelluso quotidiano. Un esempio vale per spiegare quanto detto:
sommando 10 volt 0.1 non si ottiene 1 ma 0.9999999.., in quanto il numero (0.1) 10
in binario
non rappresentabile esattamente ma necessariamente rappresentato con approssimazione, come
somma di potenze di 2 con esponente negativo via via crescente in valore assoluto.
Ci significa che occorre inevitabilmente porsi il problema dellapprossimazione con cui si vuole
rappresentare un numero in una base assegnata, nel caso in cui la rappresentazione non possa essere
esatta o non si voglia sia esatta. Il problema dellapprossimazione verr trattato pi avanti.
1.2.1 Conversione da base b a base 10
Con numeri interi
Da binario a decimale
(1101) 2 = 23 + 22 + 1 = (13) 10
Da ottale a decimale
(167) 8 = 82 + 6*82 + 7 = (119) 10
Da esadecimale a decimale
1A0FE h = 164 + 10*163 + 15*16 + 14 = (106750) 10
Con numeri frazionari
Da binario a decimale
(0.001) 2 = 2 -3 = (0.125) 10
Da ottale a decimale
(0.125) 8 = 8-1 + 2*8-2 + 5*8-3 = (0.125) 10 + (0.03125) 10 + (0.009765)10 =
= (0.166) 10
Da esadecimale a decimale
F0.CA h = 15*16 + 12*16-1 + 12*16-2 = 240+0.75+0.03906 = (240.78906) 10
In alternative allapplicazione della formula [1] si pu ricorrere alla moltiplicazione ricorsiva delle
cifre per la base, esprimendo il numero come:
((..(((a n-1 )b + a n-2

)b + a n-3

)..)b + a 1 )b + a 0

Dispense del Corso di

Fondamenti di Informatica

LA CODIFICA DELLE INFORMAZIONI

Pg. 5 di 23
----------------------------------------------------------------------------------------------

Si calcola pertanto:
Da binario a decimale
(1101) 2 = ((1*2 +1)2 + 0)2 +1 = (13) 10
Da ottale a decimale
(0.125) 8 = ((5/8)+2)/8+1)/8 = (0.1660156..) 10
Da esadecimale a decimale
0.A h = 10/16 = (0.625) 10
Si noti che nel caso di numeri frazionari i prodotti diventano divisioni per la base, partendo dalla
cifra meno significativa (la prima cifra frazionaria, a partire da destra).
Si pu anche trasformare il numero frazionario in intero moltiplicando per bk e alla fine dividendo
per b exp (k), essendo k pari al numero di cifre frazionarie. Ad esempio:
(0.10101) 2 = 10101 / 25 = (0.65625) 10
1.2.2 Conversione da base 10 a base b
Metodo delle divisioni successive per b
La formula [1] pu essere riscritta nel seguente modo:
[V(N)] int / b =

an-1 bn-2 + a n-2 b n-3

+ . + a 2 b+ a 1

[3]

con il resto di a0 in quanto a0 < b.


Ripetendo il procedimento, al passo successivo si ottiene a1, poi a2 e cos via.
Per la parte frazionaria si pu scrivere:
[V(N)] fraz * b =
poich b0 =1, a -1
a -3 , ecc.

a -1 b 0

+ a -2

b -1

+ . + a m-1

la parte intera del risultato e ripetendo il procedimento si ottengono a -2

Pi precisamente per la parte intera si pu scrivere:


N10
=
Q0
=
-------------Qn-3 =
Qn-2 =

b -m + a -m b m+1]

Q0 * b
Q1 * b

+ a0
+ a1

Qn-2 * b + an-2
0* b + an-1

(an-1 = 1)

Dispense del Corso di

Fondamenti di Informatica

LA CODIFICA DELLE INFORMAZIONI

Pg. 6 di 23
----------------------------------------------------------------------------------------------

per la parte frazionaria si pu scrivere


b * F10
b * X-1
-------------b * X-k+1
---------------------------

= a-1 + X-1
= a-2 + X-2
=

a-k + X-k

Esempi:
Da binario a decimale:
Convertire il numero decimale 78 nel corrispondente binario
Dividendo
|
divisore
(N, Q k ) |
----------------- | --------------N = 78
|
2
Q0 = 39
|
2
Q1 = 19
|
2
Q2 = 9
|
2
Q3 = 4
|
2
Q4= 2
|
2
Q5 = 1
|
2

| quoziente
|
Q k+1
| --------------|
Q0 = 39
|
Q1 = 19
|
Q2 = 9
|
Q3 = 4
|
Q4 = 2
|
Q5 = 1
|
0

| resto
|
| --------|
0
|
1
|
1
|
1
|
0
|
0
|
1
1 0 0 1 1 1 0

Convertire il numero decimale 0.1 nel corrispondente binario


Dividendo
| Moltiplicat. | quoziente
(N, X-k )
|
|
X -k+1
----------------- | ---------------- | --------------N10 = 0.100 |
2
| X -1 = 0.200
X -1 = 0.200 |
2
|
0.400
0.400
|
2
|
0.800
0.800
|
2
|
0.600
0.600
|
2
|
0.200
0.200
|
2
|
0.400
0.400
|
2
|
0.800
0.800
|
2
|
0.600
0.600
|
2
|
0.200
0.200
|
2
|
0.400
0.400
|
2
|
0.800
0.800
|
2
|
0.600
X -12 = 0.600 |
2
| X -13 = 0.200

| p. intera
|
| ----- 0. 0 0 0 1 1 0 0 1 1 0 0 1 1
|
0
| 0
| 0
|
1
| 1
| 0
| 0
|
1
| 1
| 0
| 0
|
1
|
1

Dispense del Corso di

Fondamenti di Informatica

LA CODIFICA DELLE INFORMAZIONI

Pg. 7 di 23
----------------------------------------------------------------------------------------------

Si nota che il numero binario corrispondente al decimale 0.1 non razionale ed periodico.
Si tronca alla cifra di peso 2-12 e quindi il numero espresso con una incertezza assoluta di
2-12 cio a 1 / 4096 0.000244. La precisione percentuale va invece rapportata al valore del
numero e quindi risulta di 0.00244, cio del 0.244 %.
Si noti ancora che se, anzich effettuare il troncamento, si intende effettuare larrotondamento, ad
es. al 12 mo bit, occorre eseguire il calcolo sino al 14 mo bit (2 bit in pi), ottenendo:
(0.1) 10

= (0.00011001100110) 2

(0.000110011010 ) 2

In tal caso lincertezza risulta di 2-13 = 1/8192 0.000122, mentre la precisione


percentuale risulta di 0.00122, cio del 0.122%.
In sintesi:
Per i numeri frazionari, se si rappresenta in binario un numero decimale N, troncando al kmo bit
(cio al bit di ordine k), si ha:
incertezza assoluta pari a 2-k
errore percentuale pari a (100 * 2-k / N) %
Arrotondando invece al k-mo bit
(cio al bit di ordine k-1), si ha:
incertezza assoluta pari a 2(-k-1)
errore percentuale pari a (100 * 2(-k-1) / N) %
Da decimale a ottale
Convertire il numero decimale 1647 nel corrispondente ottale
Dividendo
|
divisore | quoziente | resto
(N, Q k )
|
|
Q k+1 |
----------------- | ---------------- | ---------------- | --------1647
|
8
|
205
|
7
205
|
8
|
25
|
5
25
|
8
|
3
|
1
3
|
8
|
0
|
3
3 1 5 7
Convertire il numero decimale 0.167 nel corrispondente ottale
Dividendo
| Moltiplicatore| quoziente | p. intera
(N, X-k )
|
|
X -k+1 |
----------------- | ---------------- | ---------------- | --------- 0. 1 2 5 4 0 2
0.167
|
8
|
0.336 |
1
0.336
|
8
|
0.688 | 2
0.688
|
8
|
0.504 | 5
0.504
|
8
|
0.032 |
4
0.032
|
8
|
0.256 | 0
0.256
|
8
|
0.048 | 2

Dispense del Corso di

Fondamenti di Informatica

LA CODIFICA DELLE INFORMAZIONI

Pg. 8 di 23
----------------------------------------------------------------------------------------------

Convertire il numero decimale 5214 nel corrispondente esadecimale


Dividendo
|
divisore | quoziente | resto
(N, Q k )
|
|
Q k+1 |
----------------- | ---------------- | ---------------- | --------5214
|
16
|
325
|
E
325
|
16
|
20
|
5
20
|
16
|
1
|
4
1
|
16
|
0
|
1
1 4 5 E

1.2.3 Somma di numeri interi con la stessa base b


La somma si esegue con le stesse regole delle operazioni in decimale e quindi operando colonna per
colonna a partire da destra procedendo verso sinistra e propagando il riporto da una colonna alla
successiva.
La regola per elaborare una colonna riassunta nelle seguenti formule:
Aj + Bj + Rj = Tj
Se Tj b
Sj = Tj,
Rj+1 = 0
Se Tj > b
Sj = Tj - b,
Rj+1 = 1
Con j = 0, 1 ., n-1
Ad esempio, operando su numeri esadecimali, se risulta Aj = 5, Bj = 7, Rj = 1 si ottiene:
Tj = Sj = D, Rj+1 = 0
Se invece risulta Aj, = F, Bj = 7, Rj = 1 si ottiene:
Tj = 22, Sj = 22 - 16 = 6, Rj+1 = 1
Nel caso dellottale, se risulta Aj, = 4, Bj = 7, Rj = 0 si ottiene:
Tj = 11, Sj = 11 - 8 = 3, Rj+1 = 1
Nel caso de binario, se risulta
Aj, = 1, Bj = 1, Rj = 1 si ottiene:
Tj = 3, Sj = 3 - 2 = 1, Rj+1 = 1
E sufficiente riportare quattro esempi.
In decimale:
Pesi
(10exp5)
Riporto
0
A
B
S

10000
0
2
7
9

1000
0
7
1
8

100
0
2
5
7

10
1
0
4
5

1
0
9
4
3

Dispense del Corso di

Fondamenti di Informatica

LA CODIFICA DELLE INFORMAZIONI

Pg. 9 di 23
----------------------------------------------------------------------------------------------

In binario:
Pesi
(256)
Riporto
0
A
B
S

128
1
0
0
1

64
1
1
1
1

32
1
0
1
0

16
1
1
0
0

8
1
1
0
0

In ottale:
Pesi
(8exp5)
Riporto
0
A
B
S

8exp4
1
2
0
3

8exp3
0
7
6
6

64
0
2
5
7

8
1
0
4
5

1
0
6
4
0

In esadecimale:
Pesi
(16exp4)
Riporto
0
A
B
S

16exp3
0
2
7
9

16exp2
1
A
1
C

16
1
2
F
2

4
1
1
1
1

2
1
1
1
1

1
0
0
1
1

1
0
C
F
B

Si noti che il riporto diverso da 0 sullultima colonna indica che per contenere il risultato occorre
disporre di una cifra in pi rispetto a quelle necessarie per rappresentare gli addendi A e B.
1.2.4 Aritmetica finita degli interi
Nelleseguire le operazioni aritmetiche manualmente non siamo abituati a porci in problema di
quante cifre (decimali) utilizzare, in quanto solitamente ne utilizziamo quanto basta.
Nei calcolatori, che generalmente operano in binario, il problema invece importante, in quanto
essi operano con un numero prefissato e non mutabile di cifre bonarie che vengono denominate bit
(Contrazione del termine inglese Binary Digit), al quale si da il significato pi generale di unit di
informazione (binaria).
Avendo ad esempio a disposizione 4 cifre decimali, si possono rappresentare tutti i numeri da 0 a
9999.
Per ujn totale di 10 exp(4) = 10000 numeri. Con 8 cifre decimali si rappresentano i numeri da 0 a
99999999, per un totale di 10 exp (8) numeri.
Formalmente, operando in base b, con k cifre si rappresentano tutti i numeri da
0 a (b-1) (b-1) (b-1) .. (b-1)
in cui la cifra (b-1) ripetuta k volte.

Dispense del Corso di

Fondamenti di Informatica

LA CODIFICA DELLE INFORMAZIONI

Pg. 10 di 23
----------------------------------------------------------------------------------------------

Inversamente, il numero massimo N max rappresentabile con n cifre in base b espresso da:
n-1
Nmax = (b-1)) bi = bn - 1
i=0

[4]

In termini di calcolo combinatorio, si tratta delle disposizioni con ripetizione di b elementi a n a n.


Operando col sistema binario, i numeri rappresentabili con n bit sono 2n e vanno da 0 a 2(n-1).
Ad esempio con 16 bit, il numero massimo risulta:
16
(1111111111111111) 2
= (216 - 1) 10 = (65535) 10
Pu essere utile anche sapere quante cifre sono necessarie per rappresentare un numero in una certa
base b. Allo scopo basta pensare che un numero N compreso nellintervallo:
b(n-1) -1 N b(n) -1
pu essere rappresentato nella base b con n cifre. Si tratta quindi di determinare il pi piccolo valore
di n che soddisfa alla disequazione:
N bn - 1,
che ha soluzione:
n =

log b (N + 1)

avendo il secondo membro in significato di primo intero superiore (detto anche ceiling).
Se, ad esempio si vuol sapere quanti bit sono necessari per rappresentare in binario il numero
999999999, si calcola:
n =

log 2 (109) = 9 * log 2 10 = 9 * 3.3219 =29,897 = 30

Occorre tenere presente che nelleseguire operazioni aritmetiche, come ad esempio la somma,
operando su numeri rappresentati su n bit, non tutti i risultati possibili della somma possono essere
rappresentati con n bit. Non potendo essere aumentato il numero di bit, occorre pertanto prendere in
considerazione il problema cosiddetto di OVERFLOW, cio di segnalare quando il risultato,
rappresentato su n bit non corretto.

Dispense del Corso di

Fondamenti di Informatica

LA CODIFICA DELLE INFORMAZIONI

Pg. 11 di 23
----------------------------------------------------------------------------------------------

Nelle operazioni tra numeri senza segno, loverflow segnalato semplicemente dal esistenza di
riporto diverso da 0 generato elaborando lultima colonna.
Ad esempio, nella somma in binario:
Pesi
Riporto
A
B
S

(256)
1

128
1
0
1
0

64
1
1
1
1

32
1
0
1
0

16
1
1
0
0

8
1
1
0
0

4
1
1
1
1

2
1
1
1
1

1
0
0
1
1

esiste Overflow, poich il riporto R 8 vale 1. Ci significa che, per rappresentare correttamente il
risultato occorrerebbe utilizzare un bit in pi, il nono.
Pu essere utile pensare che, detto n il numero di bit su cui si opera, superando di una unit il valore
massimo 2n -1 rappresentabile con n bit, si torna al valore 0; superandolo di k unit, con k 2n -1, si
ritorna al valore k 1.
Nel caso dellesempio, n=8, 2exp(n) -1 = 255. Il risultato della somma A+B espresso in decimale
vale 327, che supera di k = 72 il valore limite 255, per cui il risultato (errato) rappresentato su 8 bit,
espresso in decimale, risulta pari a k-1 = 71.

Dispense del Corso di

Fondamenti di Informatica

LA CODIFICA DELLE INFORMAZIONI

Pg. 12 di 23
----------------------------------------------------------------------------------------------

2.

LA RAPPRESENTAZIONE DEI NUMERI RELATIVI E LE OPERAZIONI


ARITMETICHE TRA NUMERI RELATIVI
Nei calcolatori, che operano in binario, il problema della rappresentazione dei numeri relativi
diverso da quello dellaritmetica convenzionale. In particolare proprio la rappresentazione del
segno, avendo a disposizione solo due simboli, 0 e 1, problema da risolversi in modo
adeguato.
I modi di rappresentazione dei numeri relativi pi adottati sono i quattro che verranno ora descritti.
2.1
LA RAPPRESENTAZIONE IN MODULO E SEGNO (M&S)
Questa notazione, che ha significato solo per la numerazione in binario, prevede che la cifra che
occupa la posizione pi significativa venga destinata alla rappresentazione binaria del segno, con la
convenzione:
0 rappresenta il segno +
1 rappresenta il segno Cos si pu dire che:
se a n-1 = 0, il numero rappresentato in valore assoluto dagli altri n-1 bit positivo
se a n-1 = 1, il numero rappresentato in valore assoluto dagli altri n-1 bit negativo
Cos ad esempio
Mentre:

01011100, rappresenta il numero decimale + 92


11011100, rappresenta il numero decimale - 92

Nella rappresentazione in M&S con n bit, tenuto conto che il pi significativo viene sacrificato per
il segno, si possono rappresentare tutti i numeri N tali che:
- (2 n-1 -1)

N 2 n-1 -1

Ad esempio, nel caso n=8, si possono rappresentare tutti i numeri tra -127 e + 127.
Si osserva che nella notazione in M&S lo zero viene rappresentato doppiamente, sia come +0
(000000000), che come -0 (100000000).
Pertanto i numeri rappresentabili con n bit sono solo 2n 1, anzich 2n a causa della doppia
rappresentazione dello 0.
2.2
LA RAPPRESENTAZIONE IN COMPLEMENTO ALLA BASE DIMINUITA
Dato un numero Nb , la sua rappresentazione con n cifre in questa notazione :
CaBd(Nb ) = b n N - 1
Ad esempio, in base 10, con n = 4, N = 23, risulta CaBd(23) = 10 4 23 -1 = 9976

Dispense del Corso di

Fondamenti di Informatica

LA CODIFICA DELLE INFORMAZIONI

Pg. 13 di 23
----------------------------------------------------------------------------------------------

2.2.1 Il complemento a 1
In binario, il CaBd(N2) si chiama complemento a 1 (CA1). Utilizzando n bit, si ha:
CA1(N2 ) = 2 n N - 1

[5]

Cos ad esempio, se (N2 ) = 0110010, si calcola:


CA1(N2 ) = 128 50 -1 = 78 -1 = 77 = 1001101
Come si pu constatare sullesempio, ma la regola vale in generale:
per complementare a 1 un numero binario sufficiente complementare ciascuna sua cifra.
Loperazione di complementazione di una cifra comporta di:
assegnare alla nuova cifra il valore 0 se la cifra originaria vale 1
assegnare alla nuova cifra il valore 1 se la cifra originaria vale 0.
Nella notazione CA1, si rappresentano tutti i numeri N tali che:
- (2 n-1 -1)

N 2 n-1 -1

Non viene tuttavia risolto il problema della doppia rappresentazione dello 0, gi posto in evidenza
discutendo la rappresentazione M&S. In questo caso lo zero rappresentato sia con 00000., che
con 11111.
Nel caso di 8 bit, si ha la seguente tabella di corrispondenza CA1 - decimale
CA1
1000 0000
1000 0001
1000 0010
1000 0011

Decimale
- 127
- 126
- 125
- 124

1111 1100
1111 1101
1111 1110
1111 1111
0000 0000
0000 0001
0000 0010
0000 0011

3
2
1
0
0
1
2
3

0111 1100
0111 1101
0111 1110
0111 1111

124
125
126
127

Si pu riconoscere se un numero negativo o positivo a seconda che sia a n-1 = 0, oppure a n-1 =
1, rispettivamente.

Dispense del Corso di

Fondamenti di Informatica

LA CODIFICA DELLE INFORMAZIONI

Pg. 14 di 23
----------------------------------------------------------------------------------------------

2.3
LA RAPPRESENTAZIONE IN COMPLEMENTO ALLA BASE
Dato un numero Nb , la sua rappresentazione con n cifre in questa notazione :
CaB(Nb ) = b n N
Ad esempio, in base 10, con n = 4, N = 23, risulta CaB(23) = 10 4 23 = 9977
2.3.1 Il complemento a 2
In binario, il CaB(N2) si chiama complemento a 2 (CA2). Utilizzando n bit, si ha:
CA2(N2 ) = 2 n N

[6]

Cos ad esempio, se (N2 ) = 0110010, e CA2(N2 ) = 128 50 = 78 = 1001110


Utilizzando la [5] e la [6], si pu scrivere:
CA2(N2 ) = CA1(N2 ) + 1

[7]

Da cui si deduce la regola generale:


per complementare a 2 un numero binario sufficiente:
Complementare ciascuna sua cifra, cio eseguire il CA1.
Al numero ottenuto sommare (1)10
Nel caso precedente, dopo la CA1 si ottiene 1001101
Sommando (1)10, si ottiene
000001
1001101
+
0000001
=
---------------------1001110

Dispense del Corso di

Fondamenti di Informatica

LA CODIFICA DELLE INFORMAZIONI

Pg. 15 di 23
----------------------------------------------------------------------------------------------

Si noti che la rappresentazione in CA2 risolve il problema della doppia rappresentazione dello 0 e i
numeri N rappresentabili in tale notazione sono tali che:
- (2 n-1)

N 2 n-1 -1

[7]

e sono esattamente in numero di 2 n


Ad esempio con n =8 si rappresentano tutti i numeri compresi tra -128 e +127.
La tabella che segue fornisce la corrispondenza fra CA2 e decimale
CA1
1000 0001
1000 0010
1000 0011
1000 0100

Decimale
- 127
- 126
- 125
- 124

1111 1101
1111 1110
1111 1111
0000 0000
0000 0001
0000 0010
0000 0011

- 3
- 2
- 1
0
1
2
3

0111 1100
0111 1101
0111 1110
0111 1111

124
125
126
127

2.4
LA RAPPRESENTAZIONE ECCESSO M (NOTAZIONE POLARIZZATA)
Dato un numero Nb , la sua rappresentazione con n cifre in questa notazione :
EM(Nb ) = N + M
Ad esempio se b=2, n =8, M=127, N=-3, si ha EM(N2 ) = -3+127 = 124 = (01111100) 2
M prende il nome di Polarizzazione o Bias
Si vedr pi avanti che questa notazione utilizzata per la rappresentazione dellesponente nel
sistema di rappresentazione in virgola mobile.
2.5
LE OPERAZIONI ARITMETICHE CON NUMERI RELATIVI
Le tecniche con cui opportuno eseguire le operazioni di somma e sottrazione sono diverse, a
seconda del modo di rappresentazione.
Si esamineranno i quattro casi precedenti di rappresentazione, limitatamente ai numeri binari.

Dispense del Corso di

Fondamenti di Informatica

LA CODIFICA DELLE INFORMAZIONI

Pg. 16 di 23
----------------------------------------------------------------------------------------------

2.5.1 Numeri rappresentati in modulo e segno (m&s)


Nella rappresentazione M&S il bit del segno non pu essere trattato alla stessa stregua degli altri.
Se si operasse come se i numeri fossero assoluti, si otterebbero dei risultati spesse volte errati
Ad esempio, se si eseguisse la somma di un numero positivo 115 con un numero negativo - 31:
Pesi
Riporto
A
B
S

(256)
1

128
1
0
1
0

64
1
1
0
0

32
1
1
0
0

16
1
1
1
1

8
1
0
1
0

4
1
0
1
0

2
1
1
1
1

1
0
1
1
0

Si otterrebbe il risultato 18, anzich 84, cio un risultato errato!


Per operare correttamente occorrerebbe ragionare cos:
valutare separatamente il bit del segno del risultato: in questo caso 0 essendo A > | B |
Eseguire la differenza A - | B | su n-1 bit.
Nel caso dellesempio risulterebbe:
Pesi
Prestito
A
B
S

(256)

128
0
1
0

64
0
1
0
1

32
1
1
0
0

16
1
1
1
1

8
1
0
1
0

4
0
0
1
1

2
0
1
1
0

1
0
1
1
0

Poich lesecuzione della sottrazione si basa su un algoritmo diverso da quello della somma, non
sembra opportuno operare in questo modo, dato che il costo per la sua implementazione a livello
circuitale raddoppierebbe quasi il costo per limplementazione dellalgoritmo di somma.
2.5.2 Numeri rappresentati in complemento a 1
Poich questa notazione non elimina la doppia rappresentazione dello 0 che costringerebbe ad
effettuare delle correzioni, si tralascia di illustrare questo argomento.
2.5.3 Numeri rappresentati in complemento a 2
La rappresentazione in CA2 la pi adatta allesecuzione delle operazioni aritmetiche in quanto il
bit del segno pu essere trattato alla stessa stregua degli altri bit, restando solo il problema della
valutazione dellOverflow. Eseguendo la somma di A = 115 con B = - 97, ottiene il risultato
corretto + 18, come mostra la tabella
Pesi
Riporto
A
B
S

(256)
1

128
1
0
1
0

64
1
1
0
0

32
1
1
0
0

16
1
1
1
1

8
1
0
1
0

4
1
0
1
0

2
1
1
1
1

1
0
1
1
0

Si noti che per conoscere il valore assoluto di B, essendo B negativo, occorre valutare | B | = 256
31 - 128 = 97

Dispense del Corso di

Fondamenti di Informatica

LA CODIFICA DELLE INFORMAZIONI

Pg. 17 di 23
----------------------------------------------------------------------------------------------

S pu dimostrare che:
La presenza di Overflow rivelata da Rn-1 Rn, cio dal fatto che il riporto sullultima colonna e
quello generato elaborando lultima colonna siano diversi.
In particolare se Rn-1 = 0 e Rn = 1 il risultato sfora dalla parte dei numeri negativi
Se invece Rn-1 = 1 e Rn = 0 il risultato sfora dalla parte dei numeri positivi.
Ad esempio, nel caso:
Pesi
Riporto
A
B
S

(256)
1

128
0
1
1
0

64
1
0
0
1

32
1
1
0
0

16
1
1
1
1

8
1
0
1
0

4
1
0
1
0

2
1
1
1
1

1
0
1
1
0

Si ha overflow, con sforamento (R7 =0, R8=1) verso il basso. Infatti correttamente risulta A = - 77,
B = - 97, S = -174, mentre il risultato ottenuto darebbe un valore della somma (errato) di 82, che
altro non che il complemento a 256 del modulo del risultato corretto. Per rappresentare il risultato
corretto occorrerebbe un nono bit. Infatti aggiungendo il riporto R8 = 1 come nono bit, si ottiene
appunto il risultato corretto 174.

Dispense del Corso di

Fondamenti di Informatica

LA CODIFICA DELLE INFORMAZIONI

Pg. 18 di 23
----------------------------------------------------------------------------------------------

Invece, nel caso:


Pesi
Riporto
A
B
S

(256)
0

128
1
0
0
1

64
1
1
1
1

32
1
1
0
0

16
1
1
1
1

8
1
0
1
0

4
1
0
1
0

2
1
1
1
1

1
0
1
1
0

Si ha overflow, con sforamento (R7 =1, R8=0) verso lalto. Infatti correttamente risulta A = 115, B
= 95, S = 210, mentre il risultato ottenuto darebbe un valore della somma (errato) di - 46, il cui
modulo, altro non che il complemento a 256 del modulo del risultato corretto. Per rappresentare il
risultato corretto occorrerebbe un nono bit. Infatti aggiungendo il riporto R8 = 0 come nono bit, si
ottiene appunto il risultato corretto 210.
2.5.4 La complementazione a 2 di un numero rappresentato in CA2
Eseguire la complementazione a 2 di un numero relativo assegnato corrisponde al cambiamento di
segno.
Ricordando che
CA2(N2 ) = 2 n N
si deduce la seguente:
Regola 1 per la complementazione a 2:
Detto N il corrispondente decimale del numero binario rappresentato in Ca2
Calcolo il valore di 2n - N
Trasformo in binario tale valore
Ad esempio, considerando il numero (01011100) 2 , si valuta N = 92, 256 92 = 164 e quindi:
-(N) 2 = (10100100) 2
Considerando invece il numero (11011100) 2 , si valuta N = 220 = 256 - 220 = 36 e quindi:
-(N) 2 = (00100100) 2
Ricordando invece che:
CA2(N2 ) = CA1(N2 ) + 1
si deduce la seguente:
Regola 2 per la complementazione a 2:
Si complementa a 1 il numero binario
Si somma a questo in binario il numero decimale 1
Nei due casi precedenti si ottiene:
Partendo dal numero (01011100) 2 , il suo Ca1 risulta (10100011) 2
Sommando 1 si ottiene:
11
10100011
+
00000001
=
-------------------------------10100100

Dispense del Corso di

Fondamenti di Informatica

LA CODIFICA DELLE INFORMAZIONI

Pg. 19 di 23
----------------------------------------------------------------------------------------------

Considerando invece il numero (11011100) 2 , il suo Ca1 risulta (00100011) 2


Sommando 1 si ottiene:
11
00100011
+
00000001
=
-------------------------------00100100
Proprio da questi ultimi esempi si pu osservare che le due operazioni di Ca1 e somma con 1
possono essere svolte in un solo passo adottando la seguente
Regola 3 per la complementazione a 2:
Si considerano i bit del numero da convertire procedendo da destra verso sinistra
Si trascrivono le cifre inalterate sino ad incontrare il primo 1 compreso
Si trascrivono le cifre successive complimentandole
Ad esempio, considerando il numero (01011100) 2 , si valuta immediatamente:
-(N) 2 = (10100100) 2
Considerando invece il numero (11011100) 2 , si valuta immediatamente:
-(N) 2 = (00100100) 2
2.5.5 La sottrazione di numeri rappresentati in CA2
Ricorrendo alla regola della complementazione a 2 la sottrazione pu essere ricondotta ad una
operazione di somma, in base alla seguente semplicissima trasformazione:
A B = A + (-B) = A + CA2(B)
Cos ad esempio, se A = 01110011, B = 10100001
Si calcoler B = 01011111 e si eseguir la somma:
Pesi
Riporto
A
B
S

(256)
0

128
1
0
0
1

64
1
1
1
1

32
1
1
0
0

16
1
1
1
1

8
1
0
1
0

4
1
0
1
0

2
1
1
1
1

Si osservi che in tal caso esiste Overflow e quindi il risultato non corretto.
Infatti risulta A = 115, B = -95 e quindi A B = 210, con sforamento dalla parte alta
Lo stesso risultato ottenuto ora pu essere ottenuto ricordando che
CA2(N2 ) = CA1(N2 ) + 1

1
0
1
1
0

Dispense del Corso di

Fondamenti di Informatica

LA CODIFICA DELLE INFORMAZIONI

Pg. 20 di 23
----------------------------------------------------------------------------------------------

E pertanto che:

A B = A + (-B) = A + CA2(B) = A + CA1(B) + 1

Ne deriva che loperazione pu essere eseguita nel seguente modo:


Pesi
Riporto
A
B
S

(256)
0

128
1
0
0
1

64
1
1
1
1

32
1
1
0
0

16
1
1
1
1

8
1
0
1
0

4
1
0
1
0

2
1
1
1
1

1
1
1
0
0

In cui la somma di 1 ottenuta semplicemente assumendo il riporto iniziale R0 pari a 1.


Come si vedr nei capitoli successivi, le Unit Logico-Aritmetiche degli elaboratori sono costituite
da un insieme di circuiti tutti uguali, ciascuno dei quali elabora una colonna (cio la tripletta di bit
Aj, Bj, Rj e genera il risultato (cio i segnali Rj+1 ed Sj). Inoltre ogni elemento collegato al
precedente per poter effettuare la propagazione del riporto.
2.5.5 Numeri rappresentati in eccesso M
Si rimanda per una breve spiegazione al Capitolo sulla Virgola Mobile

Dispense del Corso di

Fondamenti di Informatica

LA CODIFICA DELLE INFORMAZIONI

Pg. 21 di 23
----------------------------------------------------------------------------------------------

3.

LA RAPPRESENTAZIONE IN VIRGOLA MOBILE

La rappresentazione in Ca2 di numeri relativi, in cui la posizione della virgola fissa si chiama
appunto rappresentazione in virgola fissa. Tale rappresentazione non adatta a rappresentare
numeri che calcolo scientifico e finanziario richiedono variare in un range estremamente vasto.
Basti pensare che per eseguire calcoli finanziari in Euro occorre prevedere numeri che vanno dal
0.01 sino ad almeno 10 exp (12). Ci significa che per i corrispondenti numeri binari occorre
prevedere un certo numero di bit per la parte frazionaria e almeno 41 bit per la parte intera
Per i calcoli scientifici la situazione ancora pi pesante.
Ne deriva la necessit di utilizzare un nuovo sistema di rappresentazione denominato IN
VIRGOLA MOBILE o anche ESPONENZIALE.
Il concetto a cui si ispira il seguente:
Rappresentare il numero come prodotto di una parte intera, chiamata MANTISSA, per
una base (chiamata RADICE) elevata ad un ESPONENTE.
Tale notazione consente di scrivere numeri molto gran di o molto piccoli in poco spazio.
Ad esempio:
il numero decimale 349 000 000 000 si scrive
3.49*10 exp (11) oppure 0.349*10 exp (12)
il numero decimale 0.000 000 002 si scrive
2.0*10 exp (-9) oppure 0.2*10 exp (-8)
Aumentando il numero di bit significativi aumenta la precisione nella rappresentazione del numero
Inoltre, nei calcoli, solo le cifre meno significative vengono perse. Ad esempio, per rappresentare il
risultato delloperazione seguente su 12 cifre:
999 999 999 999
2
1000 000 000 001
overflow

+
=

opportuno passare alla notazione esponenziale e scrivere 1 * 10 exp(12), perdendo cos solo il bit
meno significativo. Si utilizzano cos solo 5 bit, uno per la mantissa e 4 per lesponente, ipotizzando
di sottointendere la base 10.
Chiunque abbia usato una calcolatrice per eseguire il quadrato del numero decimale 123456789,
avr ottenuto il risultato nella forma 1.5242443E16, in cui sta ad indicare la base 10.
In pratica, per la rappresentazione esponenziale si assegna
1 bit per il segno del numero
un numero sufficiente di bit (ad es 23) per la manitissa
un numero pi limitato (ad es 8) per lesponente
Per lesponente, poi si utilizza una rappresentazione del tipo eccesso M (v. capitolo precedente), ad
esempio con M = 127 (o pi raramente 128).

Dispense del Corso di

Fondamenti di Informatica

LA CODIFICA DELLE INFORMAZIONI

Pg. 22 di 23
----------------------------------------------------------------------------------------------

I formati previsti dallo standard ANSI / IEEE 754 sono:


S
1
S
1
S
1

E
11

E
15

E
8

M
23

M
52
M
112

corrispondenti ai tre gradi di precisione, semplice, doppia, quadrupla ed impieganti 32, 64, 128 bit,
rispettivamente.
In formula il numero X espresso nel seguente modo:
X = -1S * 2 (E B) * 1.F
Dove:
S=
segno per la mantissa (0 = positivo; 1 = negativo)
E = esponente espresso come eccesso B (detto bias = polarizzazione)
F=
mantissa frazionaria, normalizzata, assegnando allesponente un valore tale che la mantissa
sia espressa come 1. .., e quindi compresa tra 1.0000 e 1.1111..
Come si vede, per la rappresentazione della mantissa stata scelta la rappresentazione in M&S.
Per lesponente stata adotata la rappresentazione eccesso B.
Si voglia ad esempio rappresentare il numero decimale N = 42.6875.
Adottando lo standard che prevede lutilizzo di 32 bit si ha:
N = 42.687510 = 101010.10112 = 1.010101011 * 25
e pertanto:
S
=
E
=
M
=

0
(1 bit)
5 + B = 132 = 10000100
(8 bit)
01010101100000000000000 (23 bit)

Si precisa che in generale, se n sono i bit dedicati allesponente E B, leccesso B pari a


2* exp (n-1) 1 e quindi nei tra casi, 127, 1023, 16383, rispettivamente.
Il massimo esponente E-B nei tre casi 255, 2047, 32767, rispettivamente
Adottando lo standard che prevede lutilizzo di 64 bit si ha:
N = 42.687510 = 101010.10112 = 1.010101011 * 25
e pertanto:
S
=
E
=

0
5 + B = 1028 = 10000000100

(1 bit)
(11 bit)

Dispense del Corso di

Fondamenti di Informatica

LA CODIFICA DELLE INFORMAZIONI

Pg. 23 di 23
----------------------------------------------------------------------------------------------

0101010110000000000000000000000000000000000000000000 (52 bit)

Adottando infine lo standard che prevede lutilizzo di 128 bit si ha:


N = 42.687510 = 101010.10112 = 1.010101011 * 25
e pertanto:
S
=
E
=
M
=

0
5 + B = 16388 = 100000000000100
0101010110000000000000000000000000000000000000000000..0

(1 bit)
(15 bit)
(112 bit)

Anche in questi casi, pur essendo molti i bit utilizzabili par la rappresentazione, occorre affrontare il
problema della precisione.
Se il numero da rappresentare fosse ad esempio N = 42.687610 , di appena un decimillesimo
(0.0001) 10 superiore al precedente, la parte frazionaria 0.1011 rappresenterebbe il numero 0.6876
con una certa approssimazione. Lincertezza assoluta nel troncamento di 2 exp (-4) = 1/16 =
0.0625, mentre lerrore percentuale pari a 0.0625 / 42.6876 = 0.0015 = 0.15 %.
Utilizzando invece tutti i 23 bit della mantissa si ottiene:
N = 42.687610 = 101010.1011000000000110102 = 1.01010101100000000011010 * 25
e pertanto:
S
=
E
=
M
=

0
(1 bit)
5 + B = 132 = 10000100
(8 bit)
01010101100000000011010 (23 bit)

10 exp (-14) = 0.0000610 *


10 exp (-15) = 0.0000305 *
10 exp (-16) = 0.0000152
10 exp (-17) = 0.0000076 *
10 exp (-18) = 0.0000038
La precisione (troncamento) risulta essere pari a 10 exp (-18) / 42.26876 = 0.0000038 / 42.26876
=
= 0.9 * 10 exp (- 7) = 0.9 *10 exp (-5) %.