Rappresentazione Dati - Dipartimento di Ingegneria dell`Informazione

Fondamenti di Informatica
CdL Ingegneria Meccanica
A.A. 2013/14
Docente:
Ing. Ivan Bruno
Rappresentazione dati
1.
2.
3.
4.
Sistema numerazione binario
Operazioni in binario e forma complemento alla
base
Rappresentazione numeri naturali, interi e reali
Codice ASCII
1
Rappresentazione dell’Informazione
In un calcolatore si possono
rappresentare vari tipi di informazioni:





Numeri reali
Numeri interi
Testi
Grafici
….





Disegni
Fotografie
Filmati
Suoni
…
Rappresentazione dell’Informazione
L’informazione può essere rappresentata in due forme:
Analogica
la grandezza è rappresentata in modo continuo.
Digitale
una grandezza è rappresentata in modo discreto.
Gran parte delle grandezze fisiche sono di tipo continuo (ad
esempio un segnale acustico).
Tuttavia alcuni tipi di informazioni “artificiali” sono di tipo
discreto (ad esempio un testo scritto).
2
Rappresentazione dell’Informazione

Per elaborare delle grandezze di tipo continuo con
un calcolatore, bisogna utilizzare/trasformarle in un
loro rappresentazione digitale.

La rappresentazione digitale è una
approssimazione della rappresentazione
analogica.

L’errore di approssimazione dipende dalla
precisione della rappresentazione digitale.
Rappresentazione dell’Informazione

Internamente ad un elaboratore ogni informazione è
rappresentata da una sequenza di bit (cifre binarie)

Una sequenza di bit può rappresentare entità
diverse. Il modello di rappresentazione da la chiave
di lettura.
Ad esempio la sequenza di cifre binarie 01000001
può rappresentare:

– l’intero 65
– il carattere A
– il valore di un campione audio
– il codice del colore di un punto sullo schermo
3
Sistemi di Numerazione Posizionali
Sono caratterizzati da:

una base, b

un insieme ordinato di cifre, I {……..}, distinte l'una
dall'altra, con dimensione pari a quella della base:
dim(I) = b
l'insieme contiene simboli che hanno una certa
posizione nella base ordinata.

un codice di interpretazione: un insieme di regole
che permettono di determinare quale sia il numero
rappresentato da un gruppo di cifre,

un insieme di regole e di algoritmi per definire le
operazioni fondamentali.
Sistemi di Numerazione Posizionali

Un numero N può essere rappresentato come una sequenza
di cifre:
N=dn-1dn-2... …d1d0 • d-1d-2 ... … d-m
corrispondente a (forma polinomia):
N
N 1
d b
k  m
k
k
N=dn-1•bn-1+dn-2•bn-2+ ... +d0•bo + d-1•b-1+…. +d-m•b-m
dove:
•d = cifra
•b = base
•n = numero cifre parte intera
•m = numero cifre parte decimale
4
Sistema di Numerazione decimale
Sistema Decimale
 Indicato con “10”, “d”, “D”

b=10, d=0,1,2,3,4,5,6,7,8,9
N=dn-1•10n-1+dn-2•10n-2+…+d0+ d-1•10-1+d-m•10-m
Esempio:
123.45=1•102+2•101+3•100 +4•10-1+5•10-2

Sistemi di Numerazione Binario


Indicato con “b”, “2”
b=2, d=0,1
N=dn-1•2n-1+dn-2•2n-2+ +d0•20+ d-1•2-1+d-m•2-m

Esempio:
101.012 = 1•22+0•21+1•20 +0•2-1+1•2-2 = 5.2510

La cifra binaria è detta “bit” (binary digit – pezzo,
pezzetto: cioè l’unità più piccola di informazione).
E’ il sistema usato nei calcolatori.

5
2 alla n
N
2 alla - n
1
0
1.0
2
1
0.5
4
2
0.25
8
3
0.125
16
4
0.0625
32
5
0.03125
64
6
0.015625
128
7
0.0078125
256
8
0.00390625
512
9
0.001953125
1024
10
0.0009765625
2048
11
0.00048828125
4096
12
0.000244140625
8192
13
0.0001220703125
16384
14
0.00006103515625
32768
15
0.000030517578125
65536
16
0.0000152587890625
131072
17
0.00000762939453125
262144
18
0.000003814697265625
524288
19
0.0000019073486328125
1048576
20
0.00000095367431640525
Sistema di Numerazione ottale


Indicato con “o”, oppure con il numero “8”
b=8, d=0,1,2,3,4,5,6,7
N=dn-1•8n-1+dn-2•8n-2+ +d0•80+ d-1•8-1+d-m•8-m

Esempio:
1278 = 1•82+2•81+7•80 = 8710
6
Sistemi di Numerazione esadecimale
(Base 16,indicato anche con H, e)
 b=16, d=0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
N=dn-1•16n-1+dn-2•16n-2+ +d0•160+ d-1•16-1+d-m•16-m

Esempio:
A1H = A116 = 10•161+1•160 = 16110

Per avere 16 simboli distinti bisogna aggiungere:
AH=10
CH=12
EH=14
BH=11
DH=13
FH=15
Conversioni di Base
Conversione dalla base 10 ad una base qualsiasi: parte
intera
N=d0•b0+d1•b1+d2•b2+ +dn-1•bn-1
N=d0+b(d1+b(d2(… +dn-1)))
N/b = d0/b+d1+b(d2(… +dn-1)))
D  Qd  R
D/d Q R/d
Quindi dividendo N per la base b si ottiene, come quoziente Q, il
numero d1+b(d2(… +dn-1)) e come resto R la cifra meno
significativa d0 (peso 0 o Less Significative Bit - LSB).
Dividendo ancora il quoziente per la base si ottiene la cifra di peso
1 e così via fino ad avere un quoziente 0
La cifra di peso n-1 viene detta Most Significative Bit - MSB
7
Conversioni di Base
Esempio di conversione dalla base 10 alla
base 2: parte intera
11510 = 11100112
115
2
1
57
1
2
28
0
2
14
0
2
d1
2
7
1
d0
2
3
1
d2
1
1
d3
Metodo delle
Divisioni Successive
2
0
d4
d5
d6
Conversioni di Base
Conversione dalla base 10 alla base 2: parte frazionaria
N=d-1•2-1+d-2•2-2+ +d-m•2-m
Se si moltiplica N per la base 2 si ottiene per la parte intera d -1
e la nuova parte frazionaria:
N•2 = d-1+(d-2•2-1+ +d-m•2-m+1)
Moltiplicando ancora per 2 la parte frazionaria si ottiene
come parte intera d-2 etc.
Il risultato termina quando il risultato della moltiplicazione è
esattamente 1 o quando si è raggiunta la precisione voluta
(una rappresentazione può’ essere finita in una base e infinita
in un’altra).
8
Conversioni di Base
Esempio di conversione dalla base 10 alla
base 2: parte frazionaria
Metodo delle
Moltiplicazioni Successive
0.625 × 2
1.250 × 2
0.250 x 2
d-1
0.500 × 2
d-2
1.000 × 2
0.000 x 2
d-3
Ci si ferma
0.62510 = 0.1012
Conversioni di Base
Esempio di conversione dalla base 10 alla base
2: parte intera e frazionaria
Per convertire un numero che ha parte intera e
parte frazionaria si effettuano le conversioni
separatamente.
Esempio: sia dato il numero decimale 115.625
11510 = 11100112
0.62510 = 0.1012
115.62510 = 1110011.1012
9
Conversioni di Base
Conversione fra le basi 8 o 16 e la base 2:
Le notazioni in base 8 e 16 possono essere pensate
come delle abbrevviazioni della notazione in base 2.
Ogni cifra ottale corrisponde a 3 cifre binarie:
101 110 0012 = 5618
Ogni cifra esadecimale corrisponde a 4 cifre binarie:
1 0111 00012 = 17116
(0001 0111 00012 = 17116)
Tabella Hex - Binario -Decimale.
Hex
Binario
Decimale
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
A
1010
10
B
1011
11
C
1100
12
D
1101
13
E
1110
14
F
1111
15
10
Nibble, byte, word …
Un bit rappresenta una cifra binaria.
Il bit però è un’unità di informazione troppo piccola per poter essere
elaborata in modo efficiente.
I bit pertanto sono trattati secondo i seguenti gruppi:
1 nibble = 4 bit
1 byte = 8 bit
1 word = 16 bit
1 doubleword = 32 bit
1 Kilobyte = 210 byte = 1024 byte = 8192 bit
1 Megabyte = 220 byte = 1048576 byte ~ 8 milioni di bit
1 Gigabyte = 230 byte ~ 1 miliardo di byte ~ 8 miliardi di bit
1 Terabyte = 240 byte ~ 1012 byte ~ 243 bit
Rappresentazione di numeri naturali

Quante cifre sono necessarie per
rappresentare in numero X in base 2?


Se si usano k bit si hanno 2k configurazioni
possibili.
Si possono pertanto rappresentare i numeri
naturali compresi fra 0 e 2k-1
11
Rappresentazione di numeri naturali



Tutti i numeri x con 2k-1 - 1  x  2k - 1
richiedono k bit per essere rappresentati
Anche 2k-1  x + 1  2k
Quindi per rappresentare il numero x
occorrono k bit con
k= log2(x+1) 
Cioè l’intero immediatamente superiore a
log2(x+1)
Rappresentazione di numeri naturali

Il risultato vale anche per una generica base b
k= logb(x+1)

Se B è il numero di cifre binarie che serve a rappresentare il numero x e
D è il numero di cifre necessarie sempre per rappresentare x
B/D= log2(x+1) / log10(x+1) =
log10(x+1) / log10(2) /  log10(x+1) ~3.3


Occorrono all’incirca 10 cifre binarie per rappresentare 3 cifre decimali.
Si usano queste abbreviazioni:




Kilo (K) = 210 = 1024 ~ 1000
Mega (M) = 220 = 1.048.576 ~ 1.000.000
Giga (G) = 230 = ………
~ 1.000.000.000
Tera (T) = 240 = ………
~ 1.000.000.000.000
12
Dinamica di una rappresentazione

Per K cifre intere

Dinamica pari a 2k-1 (valore massimo
rappresentabile)

Numero di valori rappresentati pari a 2k

Dallo 0 al 2k-1
Numeri reali, Rappresentazione in virgola fissa

Supponendo di utilizzare n=5 bit per la parte intera e
m=3 bit per la parte frazionaria:
xxxxx.xxx
Per esempio il numero
11000.101
corrisponde a:
1•24 + 1•23 + 1•2-1 + 1•2-3 = 24.625
13
Numeri reali, Rappresentazione in virgola fissa

La rappresentazione in virgola fissa limita fortemente l’intervallo
numerico utilizzabile. In tale caso è possibile i rappresentare
numeri da 2-3=0.125 a 25=32

Il numero di cifre significative dipende dal suo valore assoluto:
10011.101 = 19.625 ha 8 cifre significative

Anche
1001.1101 =9.81125 ha 8 cifre significative
Ma nella rappresentazione in virgola fissa diventa (5:3):
01001.110=9.75
con notevole perdita di precisione.
Precisione




Ea = Vv – Vr
Er = Ea / Vv
Er% = Er x 100
Per m cifre dopo la virgola la precisione P è il
più piccolo numero rappresentabile


Errore assoluto
Errore relativo
Errore relativo percentuale
2-m, per la parte frazionaria
Confronto della precisione con un esempio
reale, verifica che la P >= Ea
14
Operazioni sui numeri binari

Come per i numeri decimali ma con le seguenti
tabelle:
Somma:
Prodotto:
A
B A+B
A
B
AB
0
0
0
0
0
0
0
1
1
0
1
0
1
0
1
1
0
0
1
1
10
1
1
1
Operazioni sui numeri binari

Somma:
0+0=0
0+1=1
1+0=1
1+1=0 con riporto 1 (2)10
1+1+1=1 con riporto 1 (3)10
A
B
A+B
0
0
0
0
1
1
1
0
1
1
1
10
111
riporto
10110+
11101
110011
15
Operazioni sui numeri binari

Sottrazione:
0-0=0
1-0=1
1-1=0
0-1=1
con un prestito dal
bit più a sinistra che vale “2”.
prestito
2
11100101
110011
2
A
B
A-B
0
0
0
0
1
1(1)
1
0
1
1
1
0
2
prestito
1100
1001
0011
Operazioni sui numeri binari

Prodotto:
A
0
0
1
1
B AB
0
0
1
0
0
0
1
1
1011
1101
1011+
000001011+
1011-110111+
1011--10001111
16
Operazioni sui numeri binari

101101 11
00
01111
101
011
101
11
100
11
011
11
00
Divisione:
Operazioni di Shift (Scorrimento)
0


0
1
1
Shift a sinistra:
moltiplica per 2
Shift a destra:
divide per 2
0
0
1
0
1
1
1
0
0
1
1
0
0
0
0
0
0
1
1
0
0
1
17
Complemento

Complemento a b (base):


Dato un numero x con base b, e k cifre è definito come
Cb(x) = bk - x
Complemento alla base diminuita (b-1):
Cb-1(x) = bk -1 – x= Cb(x) -1
Proprietà:

Cb(x) = Cb-1(x) + 1

Cb (Cb (x)) = x

Cb-1 (Cb-1 (x)) = x
Complemento alla base

Con b=10, k=2 e N=64
Cb(x) = bk - x
C10(64)= 102-64=100-64=36

Con b=2, k=5 e N=01011
C2(01011)= 25-01011=100000-01011
10000001011=
10101
18
Complemento alla base diminuita

Cb-1(x) = bk - 1- x
Con b=10, k=2 e N=64
C9(64)= 99-64=35

Con b=2, k=5 e N=01011
C1(01011)= 25-1-01011=11111-01011
1111101011=
10100
Il complemento alla base diminuita di un numero in base b si
ottiene calcolando cifra per cifra il complemento a (b-1)
In base 2, è detto complemento a 1 e si ottiene
complementando bit a bit (01 e 10)
Complemento a 2 veloce

Dalla proprietà

Cb(x) = Cb-1(x) + 1
Si deve fare il complemento ad 1 di x e si somma 1

Es: x= 01010110 k=8
01010110
10101001 +
10101010
x
complemento a 1
1 =
sommo 1
complemento a 2
19
Rappresentazione dell’Informazione
In un calcolatore si possono
rappresentare vari tipi di informazioni:



Numeri naturali (visto)
Numeri reali in virgola fissa (visto)
Numeri interi (da vedere in questa sessione)


In varie forme
Caratteri  Rappresentazione ASCII
Rappresentazione dei numeri nei calcolatori

La memoria è organizzata in celle (“parole”)
con un numero fisso di bit (ad esempio 8 = 1
byte).
0


1
0
1
1
0
0
1
Corrisponde a 1 • 64 + 1 • 16 + 1 • 8 +1
Usando 8 cifre bit si possono rappresentare
numeri compresi fra 0 e 28-1 = 255
20
Rappresentazione dei numeri nei calcolatori
L’uso un numero finito di cifre porta ad una aritmetica
modulare, che ritorna in forma chiusa oltre la dinamica
al numero piu’ basso.
Incrementi unitari.
0000000 (0)
0000001 (1)
0000010 (2)
………..
………..
1111111 (255)
(1)0000000 (256 -> 0)
0000001 (1)
………..
•Quando si raggiunge il numero 255 (tutti
1) non potendo rappresentare il 256 che
richiederebbe 9 bit si torna allo 0.
•Si ha quindi una aritmetica modulo 256.
•In generale se si usano parole di k bit si
ha una aritmetica modulo 2 alla k.
Rappresentazione degli interi



Disponendo di k bit si possono avere 2k
configurazioni diverse.
Metà possono essere usate per i numeri
positivi, l’altra metà per quelli negativi.
Ci sono due possibili rappresentazioni:
 in modulo e segno
 in complemento a 2
21
Rappresentazione degli interi in modulo e segno

Il bit più significativo viene usato per
rappresentare il segno:



0 per i numeri positivi
1 per quelli negativi
Le cifre restanti rappresentano il modulo
+510 
-1010
000001012
100010102
modulo

segno
Lo zero ha due rappresentazioni:
(+0) 00000000 e (-0) 10000000
Rappresentazione degli interi relativi in modulo e segno

Algoritmo di somma:




Confrontare i bit di segno dei due numeri
Se sono uguali:
 Somma i moduli
 Assegna come bit di segno del risultato il bit di segno
degli operandi
Altrimenti:
 Confronta i valori assoluti dei due numeri
 Assegna come bit di segno del risultato quello
dell’operando con modulo maggiore
 Sottrarre i moduli nell’ordine giusto
Macchinoso!! (Analoga la sottrazione).
22
Rappresentazione dei numeri interi in complemento a 2
Se si hanno k bit:
 I numeri positivi sono rappresentati dal loro modulo e
hanno il bit più significativo (segno)= 0
 I numeri negativi sono rappresentati facendo il
complemento a due del corrispondente numero
positivo. Hanno il bit più significativo (segno) = 1
 Si rappresentano come positivi i numeri da 0 a 2k-1-1
 Si rappresentano come negativi i numero che vanno
da -2k-1 a -1
Rappresentazione dei numeri interi in complemento a 2
01111111
01111110
+127
+126
00000010
00000001
00000000
11111111
11111110
+2
+1
0
-1
-2
10000001
10000000
-127
-128
Supponendo di avere una
cella di 8 bit (k=8, 2k=256)
2k-1-1 = 127
-2k-1 = -128
23
Rappresentazione dei numeri in complemento a 2



Se si desidera calcolare A-B con numeri di k bit.
È possibile farlo utilizzando il complemento a 2 di B come
numero –B.
Infatti:
A - B = A - B + 2 K - 2K = A + 2 K - B - 2K
poiché C2(B) = 2K - B si ha:
A - B = A + C2(B) - 2K


Per fare una sottrazione si somma il complemento a 2 del
secondo operando
2K è un 1 seguito da k zeri, non rappresentabile con k bit e
permette di trascurare i traboccamenti (overflow o eventuali
riporti).
Rappresentazione dei numeri in complemento a 2


Interpretare un numero in complemento a due?
Se il bit più significativo (segno) =0 allora il
numero è positivo e le sue cifre ci danno il modulo

Es: 00110011 = + 51 (32+16+2+1)
Se il bit più significativo (segno) =1 allora il
numero è negativo e per avere il modulo:
Es: 10110011
negativo





01001100+ complemento a 1
1
01001101 complemento a 2 = 77 (64+8+4+1)
il numero originale era -77
24
Rappresentazione dei numeri in complemento a 2

Esempi (se k=5, è possibile rappresentare i numeri
da -16 a + 15):
01001+
00100=
01101
+9
+4
+13
01001+
11100=
100101
+9
-4
+5
il traboccamento sul sesto bit viene eliminato grazie al 2K che in questo
caso è 100000
A - B = A + C2(B) - 2K
Rappresentazione dei numeri in complemento a 2

Esempi (se k=5, numeri da -16 a + 15):
10111+
00100=
11011
10111+
11100=
110011
-9
+4
-5
-9
-4
-13 (sesto bit eliminato)
25
Rappresentazione dei numeri in complemento a 2

Esempi (k=5, numeri da -16 a + 15):
01001+
01000=
10001
+9
+8
OVERFLOW +17 non è rappresentabile con 5 bit
10111+
10111=
101110
-9
-9
-18 (sesto bit eliminato)
OVERFLOW -18 non è rappresentabile con 5 bit
Rappresentazione dei numeri in complemento a 2
OVERFLOW (Superamento della dinamica)

Si ha quando il risultato non è rappresentabile con il
numero di bit disponibili.

Si ha solo sommando due numeri entrambi positivi o
entrambi negativi (concordanza di segno.

In questo caso il segno del risultato risulta opposto a
quello degli operandi.
26
Esercizi
1) Calcolare A+B e A AND B con A=(10111011)2 e B=(00110110)2
2) Calcolare A-B e A OR B con A=(10000001)2 e B=(00000101)2
3) Calcolare AxB con A=(10001010)2 e B=(1001)2
4) Calcolare A/B con A=(1100)2 e B=(101)2
5) Si converta da decimale ad ottale il numero 426
6) A quale numero ottale corrisponde (101110110)2?
7) Si convertano i seguenti numeri esadecimali in binari e decimali:
(a) (AF5)16 (b) (FE8)16
8) Convertire in binario il numero -1238 utilizzando 16 bit per la
rappresentazione.
Codici

Codice: sistema di simboli che permette la
rappresentazione dell’informazione

Esempi:

Decodifica agevole vs codici compressi

27
Definizioni




SIMBOLO: entità di cui non si da qui una
definizione formale
STRINGA: sequenza finita di simboli
giustapposti (lunghezza della stringa, stringa
vuota)
ALFABETO: insieme finito di simboli
LINGUAGGIO: insieme di stringhe di simboli
tratti da un alfabeto
Esempi di alfabeti



Alfabeto italiano:
{A, B, C, D, …Z}
Alfabeto greco:
{α, β, γ, δ, ...ω}
Alfabeto binario:
{0, 1}
28
Alfabeto usato dal calcolatore






Interruttore (aperto/chiuso)
Foro su scheda (aperto/chiuso)
Transistor (in conduzione/spento)
Tensione (alta/bassa)
Dominio di magnetizzazione (/)
Riflettività di un’areola (alta/bassa)
Alfabeto usato dal calcolatore

Gli elaboratori utilizzano una logica e
un’aritmetica binaria

Ai due stati di un dispositivo vengono
associati i due simboli 0 e 1
29
Codice ASCII

American Standard Code for Information
Interchange

7 bit

ASCII esteso


quindi
128 simboli diversi
(8bit)
diverse estensioni in dipendenza dal paese
oppure aggiunge la parità
Codice ASCII
30
Codice ASCII - Esteso
Numeri reali – Rapp. virgola mobile (Floating point)

Notazione scientifica/esponenziale
125000000000
può essere scritto come 1.25 • 1011
Anche nella notazione binaria possiamo dire:
10010.101 = 1.0010101 • 24
0.010010101 = 1.0010101 • 2-2
la precisione del numero dipende dal numero di bit a
disposizione per la parte frazionaria.
31
Numeri reali - (Floating point)
La rappresentazione di macchina dei reali utilizza la codifica
floating point normalizzata in base 2 (IEEE 754).
I bit di rappresentazione sono suddivisi in tre parti:
– 1 bit di segno (bit simbolico, 0 significa positivo);
– m bit (mantissa) per la parte frazionaria della parte
significativa;
– n bit (rappresentazione caratteristica) per l’esponente
mantissa
segno
esponente (rappr. caratteristica)
X =  f0.f-1f-2f -3…f -p (10)2e
– Il bit f0 (sempre = 1, normalizzazione a 1) e il fattore di scala (sempre =
(10)2) non si rappresentano.
Numeri reali - (Floating point)

Rappresentazione reale corto a 32 bit:



1 bit segno mantissa (s)
23 bit modulo mantissa (m)
8 bit caratteristica (c)
1
s
8
c
23
m
32
Numeri reali - (Floating point)

Rappresentazione reale lungo a 64 bit:



1 bit segno mantissa (s)
52 bit modulo mantissa (m)
11 bit caratteristica (c)
1
s
11
c
52
m
Numeri reali - (Floating point)

Rappresentazione reale didattico a 16 bit:



1 bit segno mantissa (s)
10 bit modulo mantissa (m)
5 bit caratteristica (c)
1
s
5
c
10
m
33
Numeri reali - (Floating point)

Rappresentazione della caratteristica:
Si utilizza la forma ad eccesso a t
C = E + t = E + (2k-1-1)
dove:
C = caratteristica
E = esponente in binario
k = numero di bit per la caratteristica
la forma ad eccesso a t consente di evitare l’uso di un bit per il segno
dell’esponente (Polarizzazione).
Per K = 8 bit  t = 27-1 = +127 e C va da 0 a 255
C
E
0
*
1
-126
…
…
126
-1
127
0
128
+1
…
255
+128
*Valore riservato per la rappresentazione del numero 0
Numeri reali - (Floating point)

Consideriamo il valore corrispondente alla
configurazione (a 32 bit):
0
S
0
0
0
0 0 0
C=8
0
0
0
0
0 … 0
M = 23
0
0

Il numero rappresentato è:
+1.00...00 (10)2e=c-t=-1111111 = 1 • 2-127 = 5.87 • 10-39

Il valore rappresentato è molto piccolo ma non è
zero.

Per convenzione si assume che la configurazione
precedente rappresenti lo zero.
34
Numeri reali - (Floating point)

Consideriamo la rappresentazione a 32 bit, si ha:
dinamica:
 2t+1 =  2128
precisione: il numero più piccolo rappresentabile
(con la convenzione dello zero)
 2-t+1 =  2-126
errore: se il numero non è esattamente esprimibile
come potenze del 2, si commette sempre un
errore di rappresentazione.
Numeri reali - (Floating point)
Esempio 1: rappresentazione a 16 bit (s=1, c=5, m=10)
(511)10 = (111111111)2  1.11111111 (10)21000
C = E + t = 01000 + 01111 = 10111

0
s
10111
c
1111111100
m
Esempio 2: rappresentazione a 16 bit (s=1, c=5, m=10)
(-1530)10 = -(10111111010)2  -1.0111111010 (10)21010
C = E + t = 01010 + 01111= 11001

1
s
11001
c
0111111010
m
35
Numeri reali - (Floating point)

Esempio 3: rappresentazione a 16 bit (s=1, c=5, m=10)
(35.96)10 = (100011.11110101…)2  1.0001111110 (10)20101
C = E + t = 00101 + 01111 = 10100
0
s
10100
c
0001111110
m
Il numero rappresentato non è 35.96, infatti:
1.0001111110 (10)20101 = (100011.11110)2 = 35.9375
E’ avvenuto un troncamento dovuto al numero di bit che erano a disposizione
nel tipo di rappresentazione scelta. Un numero maggiore di bit di mantissa
avrebbe consentito una rappresentazione più vicina al valore vero.
Numeri reali - (Floating point)
Per valutare l’effetto del troncamento di bit si
possono valutare:
 Errore Assoluto  EA = Vv - VR
 Errore Relativo  ER = (Vv - VR)/Vv
 Errore Percentuale  Ep = ER • 100 (%)
dove: Vv valore vero e VR valore rappresentato

Con riferimento all’esempio precedente Vv = 35.96:
 EA = 35.96 - 35.9375 = 0.0225
-3
 ER = 0.225/35.96 =0.62 • 10
-3
2
 Ep = 0.62 • 10 • 10 = 0.062 %
36
Somma di numeri reali - (Floating point)

L’operazione di somma prevede le seguenti fasi:




rendere uguali le caratteristiche dei due addendi,
traslando opportunamente la mantissa del numero con
caratteristica più piccola
la caratteristica della somma è uguale alla caratteristica
comune
la mantissa della somma è uguale alla somma delle
mantisse normalizzate a 1.
Anche nella somma possono sorgere problemi di
troncamento
Somma di numeri reali - (Floating point)

Esempio 1: siano x=511 e y=1530 (16 bit)


(511)10 = (111111111)2  1.1111111100 (10)21000
(1530)10 = (10111111010)2  1.0111111010 (10)21010
La caratteristica di x deve essere aggiustata:
0.0111111111 (10)21010 (shiftare di n a dx vuol dire sommare n alla caratteristica)
Si sommano le mantisse (normalizzazione non necessaria):
0111111111 +
0111111010 =
1111111001
Il risultato è:
1.1111111001 (10)21010 = (11111111001)2 = (2041)10
s
c
m
0
11001
1111111001
37
Esercizi
1) Si dica a quale numero decimale corrisponde il seguente
numero binario: 011011010.1010.
2) Si convertano da decimali a binari i seguenti numeri
x=532.14 e y=893.97 utilizzando la rappresentazione in
virgola fissa con 10 bit per la parte intera e 6 per la parte
frazionaria.
3) Si convertano da decimali a binari i numeri dell’esercizio 2
utilizzando la rappresentazione in virgola mobile a 32 bit e
si valutino gli eventuali errori di rappresentazione.
4) Ripetere l’esercizio 3) con rappresentazione reale corto.
5) Si esegua la somma in virgola mobile dei numeri x=111.56
e y=1.345 utilizzando la rappresentazione a 16 bit e per il
risultato ottenuto si valutino gli eventuali errori di
rappresentazione.
38