Sei sulla pagina 1di 8

LEZIONE 1

Rappresentazione dei numeri


al calcolatore

Rappresentazione in base di un numero reale


Dato un numero intero , un numero reale x pu`o esprimersi univocamente nella seguente forma:
(
)
x = sign(x) d1 1 + d2 2 + ... p = sign(x) m p
dove:

sign(x) =

1 se x > 0
`e la funzione segno;
1 se x < 0

`e detta base;
p numero intero detto esponente o caratteristica di x;
di numeri interi detti cifre, con 0 di 1;
d1 = 0 (rappresentazione normalizzata);
m `e detta mantissa di x e vale

m < 1;

p `e detto esponente di x.
Un numero reale x si pu`o scrivere in
notazione posizionale o scientifica:

x = (.d1 d2 d3 ...) p

Il . `e detto punto radice, mentre si dicono cifre significative (o essenziali) le prime cifre della
mantissa.
Ad esempio il numero (in base 10) 372.4 pu`
o essere scritto in notazione scientifica 0.3724 103 .
In questo caso = 10, le cifre della mantissa m = 0.3724 sono d1 = 3 (3 `e la prima cifra significativa),
d2 = 7, d3 = 2, d4 = 4 e p = 3.

notazione mista:

x=

(0. 00...0
| {z } d1 d2 d3 ...)
|p|cifre

se

p0

(d1 d2 ...dp .dp+1 dp+2 ...)

se

p>0

La parte del numero a sinistra del punto radice `e detta parte intera del numero, mentre quella a
destra del punto radice `e detta parte frazionaria.
Ad esempio i numeri (in base 10) 0.00645 e 127.15 sono scritti in forma mista con p = 2 e p = 3
rispettivamente.

Conversione da base 10 a base 2 di un numero intero positivo

Procedimento delle divisioni successive


Esempio: convertire il numero 1972 da base 10 a base 2.
1972
0

2
986
0

2
493
1

2
246
0

2
123
1

2
61
1

2
30
0

2
15
1

2
7
1

2
3
1

2
1
1

2
0

(1972)10 = (11110110100)2
X Il procedimento delle divisioni successive ha sempre termine.

Conversione da base 10 a base 2 di un numero reale positivo minore di 1

Procedimento delle moltiplicazioni successive


Esempio: convertire il numero 0.765625 da base 10 a base 2.
0.765625 2

1.53125

d1

0.53125 2

1.0625

d2

0.0625 2

0.125

d3

0.125 2

0.25

d4

0.25 2

0.5

d5

0.5 2

1.0

d6

(0.765625)10 = (0.d1 d2 d3 ...)2 = (0.110001)2


X Il procedimento delle moltiplicazioni successive pu`o non avere termine.

Esempio: convertire il numero 0.1 da base 10 a base 2 produce:


0.1 2

0.2

d1

0.2 2

0.4

d2

0.4 2

0.8

d3

0.8 2

1.6

d4

0.6 2

1.2

d5

0.2 2

0.4

d6

..
.

(0.1)10 = (0.00011)2

Conversione da base 10 a base 2 di un numero reale qualsiasi


si converte la parte intera del numero con il procedimento delle divisioni successive;
si converte la parte frazionaria del numero con il procedimento delle moltiplicazioni successive;
si scrivono, il segno, le cifre della rappresentazione della parte intera, il punto radice, le cifre
rappresentative della parte frazionaria.
Esempio: convertire il numero -25.375 da base 10 a base 2:
(25)10 = (11001)2
(0.375)10 = (0.011)2

(25.375)10 = (11001.011)2

Conversione da base 2 a base 10


Esempio: convertire il numero 11001.011 da base 2 a base 10:
(11001)2
(.011)2

= 1 24 + 1 23 + 0 22 + 0 2 + 1 = (25)10
= 0

1
2

+1

1
22

+1

1
23

3
8

= (0.375)10

(11001.011)2 = (25.375)10

Tabelline delladdizione e della moltiplicazione in base 2


+
0
1

0
0
1

1
1
10

0
1

0
0
0

1
0
1

Rappresentazione dei numeri interi al calcolatore


Numeri interi positivi
rappresentazione binaria del numero con il primo bit (a sinistra) uguale a 0
Esempio: il calcolatore rappresenta su 16 bit il numero intero positivo 109 nella forma:
0

000000001101101

X il massimo numero intero positivo rappresentabile con M bit `e (011...1)2 = 2M 1 1.


Ad esempio, per M = 32 il massimo numero intero rappresentabile `e 231 1 = 2147483647.
Numeri interi negativi
rappresentazione nella forma complemento a due
Esempio: il calcolatore rappresenta su 16 bit il numero intero negativo 5 nella forma:
si considera la rappresentazione di 5 su 16 bit
0

000000000000101

si esegue linversione logica


1

111111111111010

e si somma 1 al risultato dellinversione logica ottenendo cos`


1

111111111111011

X il minimo numero intero negativo rappresentabile con M bit `e (100...0)2 = 2M 1 .


Ad esempio, per M = 32 il massimo numero intero rappresentabile `e 231 = 2147483648.
(
)
X I numeri interi rappresentabili su M bit sono 2M i.e. (2M 1 1) + 2M 1 + 1 (il numero zero) .
X overflow quando si cerca di rappresentare un numero intero minore del minor numero intero rappresentabile o maggiore del maggior numero intero rappresentabile.
X Esempio: si costruisca linsieme dei numeri interi rappresentabili su 4 bit.

Numeri reali ( numeri finiti o floating point)


Rappresentare il numero reale x scritto in base 2 con notazione posizionale con la prima cifra significativa
(d1 = 1) a sinistra del punto radice
x = sign(x) 1.d2 d3 d4 ... 2p
Si memorizza:
X sign(x), a cui viene riservato 1 bit (0 se x > 0, 1 se x < 0);
X le cifre d2 , d3 , ..., dt+1 della mantissa, alle quali vengono riservati t bit;
X la caratteristica p, alla quale vengono riservati l bit. Memorizzazione con traslazione (bias):
Emin p Emax

n. bit
sign(x)
t
l
bias
Emin
Emax

precisione semplice
32 (4 bytes)
1
23
8
127
-126
127

precisione doppia
64 (8 bytes)
1
52
11
1023
-1022
1023

Valore di p corrispondente alla configurazione degli l bit in precisione semplice:


configurazione degli 8 bit

00000000
00000001
00000010
..
.

(*)
-126 (Emin )
-125
..
.

01111110
01111111
10000000
10000001
10000010
..
.

-1
0
1
2
3
..
.

11111110
11111111

127 (Emax )
(**)

Configurazione con gli l bit tutti 0:


la mantissa ha tutti i t bit uguali a 0, allora si ha la rappresentazione del numero 0;
la mantissa ha qualche bit diverso da 0, allora si ha la rappresentazione dei numeri denormalizzati;
Configurazione con gli l bit tutti 1:
la mantissa ha tutti i t bit uguali a 0, allora si ha la rappresentazione di ;
la mantissa ha qualche bit diverso da 0, allora si ha un NaN (Not a Number).

X Pi`
u piccolo numero reale positivo, in precisione semplice, rappresentabile al calcolatore:
xmin = 1.00...0 2126 1.17 1038
0

00000001

0000000 00000000 00000000

X Pi`
u grande numero reale positivo, in precisione semplice, rappresentabile al calcolatore:
xmax = 1.11...1 2127 3.40 1038
0

11111110

1111111 11111111 11111111

X Pi`
u piccolo numero reale negativo, in precisione semplice, rappresentabile al calcolatore:
xmax = 1.11...1 2127 3.40 1038
1

11111110

1111111 11111111 11111111

X Pi`
u grande numero reale negativo, in precisione semplice, rappresentabile al calcolatore:
xmin = 1.00...0 2126 1.17 1038
1

00000001

0000000 00000000 00000000

X In precisione doppia: xmin = 1.00...0 21022 2.22 10308 e xmax = 1.11...1 21023 1.7 10308
X Esempio: rappresentazione su 32 bit di 7.25:
0

10000001

1101000 00000000 00000000

X Linsieme dei numeri finiti rappresentati in base 2, con t cifre della mantissa e con la caratteristica
compresa tra Emin ed Emax , ha cardinalit`a 2t (Emax Emin + 1) + 1.
I numeri finiti sono distribuiti in modo non uniforme nellintervallo [2Emax , 2Emin ] {0}
[2Emin , 2Emax ].
X I numeri denormalizzati sono numeri compresi negli intervalli (2Emin , 0) e (0, 2Emin ):
Esempio: rappresentazione di 0.11 2126 su 32 bit:
0

00000000

1100000 00000000 00000000

Pi`
u piccolo numero positivo denormalizzato su 32 bit: 1.0 2149 1045
0

00000000

0000000 00000000 00000001

Pi`
u grande numero negativo denormalizzato su 32 bit: 1.0 2149 1045
1

00000000

0000000 00000000 00000001

Errore nella rappresentazione di un numero reale


Rappresentazione del numero reale x = m p su un calcolatore (con t bit a disposizione per la mantissa):
1. x rappresentato in modo esatto (x `e un numero finito);
2. |x| `e pi`
u piccolo del pi`
u piccolo numero rappresentabile (p < Emin );

underflow
Si assume 0 come valore approssimato di x;
3. |x| `e pi`
u grande del pi`
u grande numero rappresentabile (p > Emax );

overflow
Si assume come valore approssimato di x;
4. la caratteristica `e rappresentabile in modo esatto (Emin p Emax ), ma la mantissa m di x non
`e rappresentabile con t cifre;

Il numero x `e approssimato con il numero finito x = m p .


La mantissa m viene approssimata con la mantissa m :

0.d1 d2 ...dt

m =
dt + t se

dt =
0.d1 d2 ...dt

dt
se

troncamento
dt+1 21
arrotondamento
dt+1 < 12

Teorema della precisione di macchina

x numero reale non nullo, x corrispondente numero finito,

|x x |
eps
|x|
1t

con
eps =

troncamento

1 1t
2

arrotondamento

X eps: precisione di macchina, o unit`


a di arrotondamento, o zero macchina.
eps = 21(23+1) = 223 1.19 107 su 32 bit
eps = 21(52+1) = 252 2.22 1016 su 64 bit.
X Uguaglianza tra due numeri finiti x e y :
|x y | < a ;

|x y | < r max(|x |, |y |)

a e r tolleranza assoluta e tolleranza relativa.


r eps

perfetta uguaglianza di bit tra x e y