Sei sulla pagina 1di 43

Sistemi di

numerazione

Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.1/43

Propriet`a fondamentali
I sistemi di numerazione di nostro interesse sono caratterizzati da:
presenza dello 0;
notazione posizionale: ogni cifra ha un peso che dato dalla sua
posizione allinterno del numero;
presenza di 4 operazioni: addizione, sottrazione, moltiplicazione
e divisione.

Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.2/43

Definizioni
Cifra: simbolo dellalfabeto con cui sono rappresentati i numeri
fino al decimo simbolo si usano 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
dopo il decimo simbolo si usano le lettere (maiuscole)
dellalfabeto inglese.
Base: cardinalit dellalfabeto dei simboli usato per
rappresentare un numero.
Numero: sequenza ordinata di cifre
pu essere preceduto dal segno + o ,
pu contenere un solo simbolo ",".

Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.3/43

Notazione posizionale
Notazione posizionale: dato un numero
N = ct ct1 . . . c1 c0 , c1 c2 . . . cz
in base b, composto da un numero finito di cifre ci , il numero pu
essere scritto in maniera equivalente come:
N = ct bt + . . . + c1 b1 + c0 b0 + c1 b1 + . . . + cz bz
Notazione: per chiarezza si indicher con nb che il numero n
rappresentato in base b (con b in base 10 se non altrimenti
specificato).
Ad esempio:
numero base rappresentazione
23
4
234
1001
2
10012
2A
12
2A12
F F DD 16
F F DD16
54
10
541 0

Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.4/43

Un modo per rappresentare le cifre

Le cifre possono essere viste come


disposte su di una circonferenza.
Tenendo conto di questo modo di
rappresentare le cifre si possono
enunciare degli algoritmi per le
usuali operazioni aritmetiche.
Questi algoritmi operano su numeri
x e y nella stessa base e con lo
stesso numero di cifre.

La circonferenza per la base 10

Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.5/43

Somma in base qualsiasi


La somma z zn+1 zn . . . z1 z0 di due numeri x xn . . . x1 x0 e
y yn . . . y1 y0 in base b si ottiene nel seguente modo:
z0 : partendo dalla cifra x0 si percorre la circonferenza in base b
in senso orario "toccando" y0 cifre. La cifra cos raggiunta il
valore di z0 . Il riporto r0 = 1 se durante lavanzamento di y0 cifre
si tocca la cifra 0, altrimenti r0 = 0.
zi : partendo dalla cifra xi si percorre la circonferenza in base b in
senso orario "toccando" yi cifre. Dalla cifra cos selezionata si
percorre la circonferenza in base b in senso orario "toccando"
ri1 (il riporto precedente) cifre. La cifra cos ottenuta il valore
di zi . Il riporto ri = 1 se durante lavanzamento di yi + ri1 cifre
si tocca la cifra 0, altrimenti ri = 0.
zn+1 = rn .

Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.6/43

Esempio
124 + 234 =?

Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.7/43

Differenza in base qualsiasi


La differenza z zn . . . z1 z0 di due numeri x xn . . . x1 x0 e
y yn . . . y1 y0 in base b (x y) si ottiene nel seguente modo:
z0 : partendo dalla cifra x0 si percorre la circonferenza in base b
in senso anti-orario "toccando" y0 cifre. La cifra cos raggiunta
il valore di z0 . Il prestito r0 = 1 se durante lavanzamento di y0
cifre si attraversa la cifra 0, altrimenti r0 = 0.
zi : partendo dalla cifra xi si percorre la circonferenza in base b in
senso anti-orario "toccando" yi cifre. Dalla cifra cos selezionata
si percorre la circonferenza in base b in senso anti-orario
"toccando" ri1 (il prestiro precedente) cifre. La cifra cos
ottenuta il valore di zi . Il riporto ri = 1 se durante
lavanzamento di yi + ri1 cifre si attraversa la cifra 0, altrimenti
ri = 0.

Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.8/43

Esempio
468 278 =?

Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.9/43

Prodotto in base qualsiasi


Si pu applicare la definizione che vede il prodotto x y come:
y
X

i=1

In alternativa, si pu costruire la tavola pitagorica con le cifre


della base e quindi procedere come in base 10.

Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.10/43

Esempio
124 324 =?

Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.11/43

Divisione in base qualsiasi


Si procede utilizzando la tabella del prodotto secondo le regole
usate per la base 10.
Anche nelle basi diverse da 10 esistono i numeri periodici.

Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.12/43

Esempio
1324 : 24 =?
1214 : 24 =?
1104 : 34 =?

Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.13/43

Conversioni di base
Conversioni da una base q 6 10 alla base 10.
Conversioni dalla base 10 ad una base q 6 10.
Conversioni da una base q 6 10 ad una base h 6 10.
Conversioni da una base q ad una base h = q t , dove t un
numero naturale e viceversa.
Osservazione: le cifre c0 , . . . , cq1 di una base q vengono
banalmente convertite in base 10 dal seguente algoritmo:
ci in base q corrisponde ad i in base 10

Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.14/43

Conversioni verso la base 10


Dato un numero X in base q (q 6= 10)
xq = xn . . . x0 , x1 . . . xz
per convertirlo in base 10 si pu applicare il seguente algoritmo:
1. si converte ogni cifra Xi nel corrispondente numero Yi in base 10.
2. si determina il numero
k = yn *qn + . . . + y0 *q0 + y1 *q1 + . . . + yz * qz
dove le operazioni aritmetiche sono da intendersi in base 10.
3. k il numero in base 10 equivalente a X in base q.

Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.15/43

Esempi
21A12 =
21A16 =
217, 348 =
100112 =

Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.16/43

Conversioni dalla base 10


1. Siano I e D rispettivamente la parte intera e la parte decimale
del numero X da convertire.
2. Poniamo k e j uguali a zero.
3. Siano qk e rk rispettivamente il quoziente ed il resto della
divisione I diviso b.
4. Se qk diverso da zero poni il valore di qk in I, incrementa k di
uno e vai al punto 3.
5. Siano tj e hj rispettivamente la parte intera e la parte decimale
del prodotto di D per b.
6. Se hj diverso da zero poni il valore 0, hj in D, incrementa j di
uno e vai al punto 5.
7. Siano uk , . . . , u0 le cifre in base b corrispondenti ai numeri
rk , . . . , r0 e siano w0 , . . . , wj le cifre in base b corrispondenti ai
numeri t0 , . . . , tj . Il numero v = uk . . . u0 , w0 , . . . wj in base b
lequivalente di X in base 10.

Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.17/43

Esempio
1. 123, 5610 =?
2. 58, 9687510 =?

Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.18/43

Conversioni tra basi diverse dalla base 10


Dato un numero x in base q (q 6= 10) per convertirlo in base b (b 6= 10)
si pu applicare il seguente algoritmo:
1. Si converte il numero x dalla base q alla base
10.
2. Il numero in base 10 ottenuto al punto 1 si
converte in base b.

Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.19/43

Esempio
21A12 =?

Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.20/43

Conversioni tra basi una potenza dellaltra (1)


Dato un numero x xn . . . x0 , x1 . . . xz in base q per convertirlo in
base b con q = bt si pu applicare il seguente algoritmo:
1. Si converte ogni cifra xi di x nellequivalente
numero ki nella base b utilizzando t cifre
(eventualmente aggiungendo degli zeri).
2. Il numero
d kn . . . k0 , k1 . . . kz
e lequivalente del numero x in base
in base b `
q.

Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.21/43

Esempio
36D, B416 =
A05, 7116 =

Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.22/43

Conversioni tra basi una potenza dellaltra (2)


Dato un numero x xn . . . x0 , x1 . . . xz in base q con qt = b e n + 1,
z multipli di t. Per convertire X dalla base q alla base b si pu
applicare il seguente algoritmo:
1. Siano k e h rispettivamente il quoziente della divisione di n+1
diviso t e z diviso t.
2. Si raggruppa, a partire da destra per la parte intera e a partire da
sinistra per la parte decimale, il numero X in blocchi di t cifre. Si
ottengono cos t0 , . . . , tk numeri in base q per la parte intera di X
e s0 , . . . , sh numeri in base q per la parte decimale di x.
3. Si converte ogni blocco ti (si ) nella corrispondente cifra di (ci )
nella base b.
4. Il numero
f dk . . . d0 , c0 . . . ch
in base b lequivalente del numero X in base q.

Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.23/43

Esempio
11010, 112 =
1100, 0012 =

Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.24/43

Rappresentazione dei numeri interi


Problemi da affrontare:
1. Lelaboratore adopera solo due simboli:
0: assenza di corrente
1: presenza di corrente
2. Lelaboratore ha una memoria finita.
Conseguenze:
Codificare i numeri in binario.
Limitare linsieme dei numeri rappresentabili.
Le operazioni non godono delle usuali propriet (ad
esempio, associativa)

Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.25/43

Complemento a due: introduzione

Intervallo di rappresentazione:
2k1 . . . 2k1 1
Unica rappresentazione per 0.
La somma eguale a differenza.

Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.26/43

Rappresentazione in complemento a due


Si decide a priori il numero k di bit utilizzati per la
rappresentazione.
Si potranno rappresentare 2k1 valori maggiori od uguali a 0 e
2k1 valori minori di 0.
Per rappresentare un numero positivo m (0 m 2k1 1) si
utilizza la sua rappresentazione binaria aggiungendo
eventualmente degli 0 a sinistra fino a raggiungere k bit.
Per rappresentare un numero negativo m (2k1 m 1) si
determina il numero c = 2k + m (c un numero positivo) e quindi
si scrive la rappresentazione binaria di c.

Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.27/43

Esempio
Con 3 bit si rappresenta in complemento a due lintervallo
[4 . . . 3].
Il numero 3 viene rappresentato dalla sequenza 011.
Per rappresentare il numero 3 determino il numero
23 3 = 8 3 = 5 e quindi 3 = 101.
Con 4 bit si rappresenta in complemento a due lintervallo
[8 . . . 7].
Il numero 3 viene rappresentato dalla sequenza 0011.
Per rappresentare il numero 3 determino il numero
24 3 = 16 3 = 13 e quindi 3 = 1101.

Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.28/43

Osservazione
Lesempio mostra la propriet di estensione in segno secondo cui se si
vuole trasformare un numero in complemento a due a k bit in uno a
k + m bit (m > 0) sufficiente aggiungere a sinistra m zeri se il numero
positivo, m uni se il numero negativo.

Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.29/43

Operazioni in complemento a due (2)


Si esamineranno solo le operazioni di
1. Complemento a due (),
2. addizione (+) e
3. sottrazione ().
Le operazioni sono definite dopo avere fissato il numero di bit
nella rappresentazione in complemento a due.
Attenzione! Il risultato delle operazioni potrebbe non essere
compreso nellintervallo di rappresentazione scelto.

Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.30/43

Addizione
Si procede sommando fra loro i due addendi come se fossero
numeri binari.
Leventuale riporto oltre la k-esima cifra si scarta.
Loperazione pu produrre un risultato al di fuori dellintervallo
rappresentabile (overflow).
Il risultato corretto (non si verifica overflow) se:
i due addendi sono di segno diverso;
i due addendi ed il risultato sono dello stesso segno.

Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.31/43

Esempi
01101 + 11000 =?
10001 + 10000 =?

Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.32/43

Operazione di complemento a due


Esistono due regole alternative:
1. A partire da sinistra si invertono tutti i bit del numero (0 si
trasforma in 1 e viceversa) fino al bit 1 pi a destra escluso.
2. Si invertono tutte i bit del numero e si somma 1.
Non esiste il complemento a k bit di 2k1 .
La rappresentazione di un numero negativo n10 in complememto
a due con k bit (n 6= 2k1 ) si ottiene anche scrivendo la
rappresentazione del numero positivo n e complementando a
due il risultato.

Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.33/43

Sottrazione
Per calcolare la differenza a b tra due numeri a e b in
complemento a due ad k bit distinguiamo tre casi:
1. b 6= 2k1 : si calcola il complemento di b ( b) e si esegue
la somma a + ( b).
2. b = 2k1 e a < 0: si inverte il primo bit della
rappresentazione di a.
3. b = 2k1 e a 0: il risultato non rappresentabile.

Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.34/43

Esempi
011011 011110 =?
si complementa a due il sottraendo 100010
si procede con la somma: 011011 + 100010 = 111101 il risultato
corretto.
011011 100000 =?
011011 positivo e 100000 = 261 non si pu rappresentare il
risultato.
111011 011110 =?
si complementa a due il sottraendo 100010
si procede con la somma: 111011 + 100010 = 011101
il risultato non corretto.
111011 100000 =?
111011 negativo e 100000 = 261 , il risultato 011011.

Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.35/43

Rappresentazione dei numeri reali: introduzione


Rappresentazione in virgola mobile (floating point).
Notazione ispirata a quella scientifica:
ogni numero rappresentato attraverso una mantissa m ed
un esponente e.
m 2e
La mantissa in valore assoluto minore di 1 (0, b1 . . . bk ).
Non rappresenta dei numeri reali ma solo alcuni numeri razionali
allinterno di un intervallo.
La risoluzione (precisione) dipende dalle cifre usate per la
mantissa.
Fissato un numero di cifre per lesponente, i valori possibili
si addensano intorno allo 0 e si diradano verso gli estremi
dellintervallo rappresentato.

Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.36/43

Rappresentazione dei numeri reali: esempio


Supponiamo di avere a disposizione 2 bit per lesponente e 3 bit per la
mantissa (il primo bit di segno).
0.75
0.1875
0.375
0.75
1.5

.
.

.
1

7
.

0
7

0
4

0.25
0.5
0.00625 0.125
0.125
0.25
0.25
0.5
0.5
1

0.5
0.25
0
0.125 0.00625 0
0.25
0.125 0
0.5
0.25
0
1
0.5
0

0.75
2 0.1875
1 0.375
0
0.75
1
1.5

Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.37/43

Forma normalizata
Esiste una forma normalizzata (IEEE 754) nella quale devono
essere riportati tutti i risultati:
0, b1 . . . bk 2e (b1 6= 0)
La mantissa contiene solo le cifre decimali
La mantissa eguale a 0 implica che si rappresenta il numero
0 indipendentemente dal valore dellesponente.

Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.38/43

Ossevazione
Per stabilire il significato da dare ad una sequenza binaria occorre
conoscere come stata codificata.
Ad esempio, la sequenza:
100010001
1000100012 = 27310
100010001cpl2,9 = 23910
In virgola mobile con i primi 5 bit per la mantissa ed i restanti 4 bit
per lesponenete, entrambi rappresentati in complemento a due
100010001 = 0.15 21

Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.39/43

Rappresentazione dei caratteri


Convenzionalmente i caratteri sono rappresentati attraverso la
codifica ASCII.
Mediante tale codifica ogni carattere viene rappresentato da un
numero compreso tra 0 e 127.
Sono quindi utilizzati 7 bit per la rappresentazione.
I primi 32 caratteri della codifica sono caratteri di controllo.
I caratteri alfabetici (maiuscoli o minuscoli) sono consecutivi (il
carattere A ha il valore pi piccolo) cos come le cifre decimali.

Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.40/43

Codice ASCII
(nul)
(soh)
(stx)
(etx)
(eot)
(enq)
(ack)
(bel)
(bs)
(ht)
(nl)
(vt)
(np)
(cr)
(so)
(si)
(dle)

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

(dc1) 17
(dc2) 18
(dc3) 19
(dc4) 20
(nak) 21
(syn) 22
(etb) 23
(can) 24
(em) 25
(sub) 26
(esc) 27
(fs) 28
(gs) 29
(rs) 30
(us) 31
(sp) 32

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

!
"
#
$
%
&

(
)
*
+
,
.
/
0

33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

1
2
3
4
5
6
7
8
9
:
;
<
=
>
?
@

49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P

65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

Q
R
S
T
U
V
W
X
Y
Z
[
\
]

81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p

97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

q
r
s
t
u
v
w
x
y
z
{
|
}

(del)

113
114
115
116
117
118
119
120
121
122
123
124
125
126
127

Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.41/43

Rappresentazione delle immagini (1)


Le immagini vengono codificate attraverso una sequenza di 0 ed
1.
Il passaggio da una immagine ad una sequenza binaria prende
in nome di digitalizzazione.
Limmagine suddivisa in punti o pixel.
Ogni pixel viene codificato attraverso una sequenza di bit
(profondit) che indica lintensit di ciascuna componente di
colore (RGB).

Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.42/43

Rappresentazione delle immagini (2)


Per interpretare una immagine necessario conoscere:
1. La dimensione del rettangolo in cui contenuta.
2. La risoluzione misurata in punti per pollice quadrato (dpi).
3. La profondit dellimmagine.
I formati di codifica pi diffusi sono:
TIFF: Target image file format,
GIF: Graphic Interchange Format,
JPEG: Joint Photographic Experts Group.

Informatica Generale - Sistemi di enumerazione Versione 1.0, aa 2005-2006 p.43/43

Potrebbero piacerti anche