Title: Rappresentazioni numeriche
1Rappresentazioni numeriche
2 Introduzione
- Un calcolatore elettronico dispone di uno spazio
finito per memorizzare le cifre che esprimono un
valore numerico - Esempio disponiamo di p3 cifre decimali
- Linsieme S di valori rappresentabili è
S0,..,999 - Quali sono le differenze fra S e linsieme dei
numeri interi? - In generale si perdono le proprietà di chiusura
delle operazioni - Ad esempio se a,b sono interi ? ab è un intero
3Perdite di proprietà
- Esempio p3 cifre decimali, valori
rappresentabili S0,..,999 - di chiusura dovuta ad overflow (risultato
maggiore del valore massimo rappresentabile) - 600 600 1200 (1200 ? S)
- 50 x 50 2500 (? S)
- di chiusura dovuta ad underflow (risultato minore
del valore minimo rappresentabile) - 3-5 -2 (? S)
- Perdita proprietà associativa
- a(b-c) ? (ab)-c
- 700 (400-300) ? (700400)-300 700400?
Overflow! - Perdita proprietà distributiva
- a x (b-c) ? a x b a x c
4Sistema di Numerazione Posizionale
- E definito da una coppia (A,B) dove Bgt1 è un
intero, detto base del sistema, ed A un insieme
di simboli distinti, le cifre, con AB, esempi - sistema decimale, B10, A0,1,2,3,4,5,6,7,8,9
- sistema binario, B2, A0,1
- sistema ottale, B8, A0,1,2,3,4,5,6,7
- sistema esadecimale, B16,
A0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F - Ogni cifra rappresenta un numero distinto
compreso fra 0 e B-1 - Es B16
- 1? uno, 2?due,.., A ?10
-
5Numeri e numerali
Entità astratta
Numero
Numerale
Numerale
Trasformazione fra Rappresentazioni
Esempio numerali dodici, 12, XII,
Analogia gatto e cat denotano la stessa entità
in due lingue differenti
6Sistema Numerazione Posizionale
- Un valore numerico è rappresento da una sequenza
di cifre (rappresentazione o allineamento)
appartenenti ad A - dk-1..d2d1d0.d-1d-2d-p
- Lindice associato alla cifra denota la posizione
della cifra che esprime il peso della cifra - Valore di di V(di) di x Bi
- PARTE-INTERA . PARTE-FRAZIONARIA
7Esempio sistema decimale (base 10)
- 10 cifre, A0,1,2,3,4,5,6,7,8,9
- Esempio 743.234
- d27, d14, d03, d-12, d-23, d-34
- V(734) 7 x 102 3 x 10 4
- V(0.234) 2 x 10-1 3 x 10-2 4 x 10-3
102
10-3
103
101
100
10-1
10-2
1000 100 10 1 0.1 0.01 0.001
8Notazione
- Per evidenziare la base B del sistema di
numerazione si usa la seguente notazione - (X)B (X in base B)
- Negli esempi seguenti, se omessa vale 10
- La cifra più a sinistra è detta cifra più
significativa, quella a destra cifra meno
significativa - Se B2 si usano gli acronimi MSB (Most
Significant Bit) ed LSB (Least Significant Bit)
9Sistema Binario (base 2)
- Utilizzato dai circuiti elettronici dei
calcolatori, - 2 cifre (bit) d ? A 0,1
- V(N) dk-1 x 2k-1 dk-2 x 2k-2 ..... d1 x 21
d0 x 20 d-1 x 2-1 ...... d-p x 2-p -
- (1010.101)2 1 x 23 1 x 21 1 x 2-1 1 x 2-3
(10.625)10
22
2-3
23
21
20
2-1
2-2
8 4 2 1 0.5 0.25 0.125
10Potenze di 2 ricorrenti
- 224
- 238
- 2416
- 2532
- 2664
- 27128
- 28256
- 29512
- 2101024 (K) KKilo
- 220 1024K (M) MMega
- 230 1024M (G) GGiga
- 240 1024G (T) Tera
- 250 1024T (P) Peta
osservazione 1 Kb gt 103bit, tuttavia le bande
dei bus-link di comunicazione vengono misurate in
bits/sec in base decimale p.e. 1 Kb/s 1000
b/s ciò proviene dalla tradizione del mondo
della trasmissione analogica
11Conversione da una base ad unaltra
- Problema dato un valore rappresentato
dallallineamento N in base B1 trovare la
rappresentazione N in base B2 - (N)B1 ? (N)B2
- Nel seguito, se chiaro dal contesto, N denota sia
il valore che lallineamento di cifre - Bisogna convertire separatamente le parti intera
(NI) e frazionaria (NF) - (N)B1(NI.NF)B1
- (NI)B1 ? (NI)B2
- (NF)B1 ? (NF)B2
12Conversione
- I metodi dipendono dalla scelta di usare la base
di partenza (B1) o quella di arrivo (B2) - Casi notevoli
- B1?10 e B210
- B110 , B2?10
- Poiché si ha familiarità con la base B10 quando
le due basi sono diverse da 10 conviene (più
intuitivo) fare due trasformazioni successive - da B1 a base 10
- da base 10 a B2
13Conversione da B (2, 8, 5) a Decimale
- Già visto
- (1010.101)2 1 x 23 1 x 21 1 x 2-1 1 x 2-3
(10.625)10 - (721)8 ? 7 x 82 2 x 81 1 x 80 7x64 16
1
448 17(465)10 - (134) 5 ? 1 x 52 3 x 51 4 x 50 25 15 4
(44)10
14Conversione da base 10 a B (NIgt0, intero)
- Sia (NI)10 il valore in decimale dellintero che
vogliamo convertire in altra base, tale valore è
pari a - (NI)10 dk-1Bk-1 .. d1B d0
- Dobbiamo trovare i valori di
- dk-1Bk-1 .. d1B d0 B(dk-1Bk-2 .. d1)
d0 - quindi dividendo per B abbiamo che
- d0 è il resto e dk-1Bk-2 .. d1 è
il quoziente - cioè
- d0NI mod B, e dk-1Bk-2 .. d1 NI / B
- Le altre cifre si identificano in modo analogo
- p. e. d1 (NI / B ) mod B
15Algoritmo di conversione da base 10 a B (N intero)
Esempio (25)10 (??)2
N intero da convertire, B base di arrivo
i?0 while Nltgt0 do 1. di? N mod B 2.
N?N/B 3. i?i1 endwhile
N N / 2 N mod 2 Cifra
25 12 1 d01 d10
12 6 0 d20
6 3 0 d31
3 1 1 d41
1 0 1
(25)10 (11001)2
16Esempio
(30)10 (??)16
N N/2 N mod 2 Cifra
30 15 0 d00
15 7 1 d11
7 3 1 d21
3 1 1 d31
1 0 1 d41
N N / 16 N mod 16 Cifra
30 1 14 d0E
1 0 1 d11
(30)10 (1E)16
(30)10 (11110)2
17Conversione da base 10 a BParte frazionaria
- Sia (NF)10 il valore in decimale della parte
frazionaria che vogliamo convertire in altra
base, tale valore è pari a - (NF)10 d-1B-1 d-2B-2. d-mB-m ..
- Moltiplicando per B
- (NF)10 B d-1B0 d-2B-1 .. d-mB-m1
-
- Quindi d-1 parte intera di NFB ( trunc(NFB) )
- N NFB - d-1 (d-2B-1 .. d-mB-m1 .. ..)
- Le altre cifre si isolano in modo analogo
- d-2 parte intera di NB
- Finché precisione voluta oppure N0
18Algoritmo di conversione da base 10 a B (0ltNlt1)
Nlt1 valore frazionario da convertire, B base di
arrivo, m cifre (precisione) i?1 while Nltgt0
and i?m do 1. d-i ? trunc (NB) 2. N?NB - d-i
3. I?i1 endwhile
19Esempio (12.25)10 ? (..)2
- 12/2 6 resto 0 ? d00
- 6/2 3 resto 0 ? d10
- 3/2 1 resto 1 ? d21
- 1/2 0 resto 1 ? d31
- 0.25 x 2 0.50, parte intera 0 ? d-10
- 0.50 x 2 1.0, parte intera 1 ? d-21
(12.25)10 ? (1100.01)2
20Esempio numeri periodici
N 2N Trunc(2N) Cifra
0.2 0.4 0 d-10
0.4 0.8 0 d-2 0
0.8 1.6 1 d-3 1
0.6 1.2 1 d-4 1
0.2
Esempio (0. 2)10 (??)2
(0.2)10 (0.0011)2
Se un numero è periodico in base 10 allora lo è
anche in base 2 Laffermazione opposta non è vera
21Altre basi notevoliBasi 8 e 16
- Esempio
- (721)8 ? 7 x 82 2 x 81 1 x 80 7x64 16
1 448 17(465)10 - (0.1)8 ? 1/8 (0.125)10
- Esempio
- (721)16 ? 7 x 162 2 x 161 1 x 160 7x 256
32 1 1792 33 (1825)10 - (0.1)16 ? 1/16 (0.0625)10
- Nota nel caso rappresentazioni esadecimali è
prassi anteporre 0x, oppure il suffisso H - Ex 0x721, 721H
22Relazione fra le basi 2/8/16
Da base 16(2) a 2(16)
(E54)16
(1110 0101 0100)2
Da base 8(2) a 2(8)
(621)8
(110 010 001)2
(E54)16
(1110 0101 0100)2
(111 001 010 100)2
(7124)8
Da base 16(8) a 8(16)
23Riepilogo
divisioni successive (N intero )
prodotti successivi (Nlt1)
B?10
10
sviluppo del polinomio
2
8
16
24Rappresentazione valori interi negativi
- Esistono diversi metodi
- Modulo e segno
- Complemento a uno (obsoleto)
- Complemento a due
- Eccesso 2m-1
25Modulo e segno
- E il più immediato da comprendere
- si dedica un bit al segno ed i rimanenti al
modulo - di regola 1 denota il segno -
- Esempio
- -15 ? 15 (1111)2 ? -15 (11111)2
- 15 ? (01111)2
- Con k bit lintervallo di dei valori
rappresentabili è S-2k-1-1,..,2k-1-1 - Doppia rappresentazione di 0
26Complemento a 2
- Fissato un numero kgt1 di cifre binarie, il
complemento a 2 su k bit di un intero N, N ?
S-2K-1 ,..2K-1 1 , è
- Una definizione alternativa è C(k,N) (N 2k)
mod 2k
27Proprietà
- Perché usare la rappresentazione in complemento?
- Semplifica le operazioni aritmetiche
- La differenza X Y può essere calcolata mediante
la somma dei complementi - C(x-y)C(x)C(-y)
- In generale la somma algebrica diventa somma
aritmetica - Semplificazione dei circuiti elettronici che
eseguono le operazioni (solo addizioni)
28Calcolo del complemento
- Rappresentare il valore assoluto di N in base
- Invertire tutti i bit ed aggiungere 1
- Esempio rappresentare N25 in complemento su
k8 bit. -25 25 1681 - 00011001 (25)
- 11100110 (Inverto i bit)
- 1 (sommo 1)
- 11100111 (231)
- Secondo metodo
- Rappresentare il valore assoluto di N in base 2
- Partendo da destra, lasciare invariati tutti i
bit fino al primo bit 1, poi invertire gli altri
29Valore espresso in base 2
- Il valore della stringa di bit S(bk-1..b2b1b0),
supposto che essa esprima un numero in
complemento a 2 su k bit, è - V(S)-bk-12k-1 S bi2i
- Pertanto
- bK-1 0 ? numero positivo
- bK-1 1 ? numero negativo
- Attenzione, MSB non è un bit di segno!
- Per ottenere il corrispondente valore di segno
opposto non e sufficiente invertire solo MSB
30Altri esempi
Esempio k 4 bit -23 22 21 20?Peso -8 4 2 1
0 1 0 1 1 1 0 1 0 0 0 1 0 1 1 1
1 1 1 1 1 0 0 0
- 41 5
- -841 -3
- 1 più piccolo positivo
- 421 7 più grande positivo
- -8421-1 più piccolo negativo
- -8 più grande negativo
31Altri esempi
- k8 bit, pesilt-128,64,32,16,8,4,2,1gt
- 11110000, rappresenta 128643216 -16
- 10000000, rappresenta 128
- 11111111, rappresenta -1286432168421-1
- 00000000, rappresenta 0
32Differenza di numeri in complemento
- La differenza X Y può essere calcolata mediante
la somma dei complementi - C(x-y)C(x)C(-y)
- Esempio X-Y X21 e Y23, con k2 cifre
decimali - C(21)21, C(-23)100-2377
- 2177 98 C(-2)
- Ciò vale in generale
- Se YgtX, ossia (X-Ylt0), allora C(X-Y)(def) Bk -
X-Y Bk -(-(X-Y)) Bk -YX, ma per
definizione ciò è uguale a C(X)C(-Y) - Il caso Y?X verrà trattato fra breve
- Nota In questo caso non può mai verificarsi
overflow
33Differenza di numeri in complemento
- Eseguiamo ora la differenza fra X23, Y21, con
k2 cifre decimali - C(23)23, C(-21)100-2179
- 2379 102 C(2) 100
- Ciò vale in generale
- Se X?Y, ossia (X-Y?0), allora C(X-Y)(def) X-Y
- daltra parte C(X)C(-Y) XBk Y ? Bk
- Pertanto C(X-Y)C(X)C(-Y).. a meno di un fattore
Bk
34Esempio
- Fissiamo Base B10, k2 ? 102 100
- X23, Y21
- -X-Y ?
- Algoritmo
- Calcolo complemento di X, XC(-23)100-2377
- Calcolo complemento di Y, YC(-21)100-2179
- Eseguo la somma, XY156
- Sottraggo 100 se la somma è gt 100 156-100 56
- Il risultato è il complemento di -X-Y, 56
C(-44)
35Rappresentazione eccesso 2m-1
- Il valore N viene rappresentato da N2m-1
- Si tratta di una traslazione dellintervallo di
rappresentabilità verso destra. - Range di valori -2m-1...2m-11
- Esempio di codifica eccesso 4 dei valori - 4, 3
- 0 1 2 3 4 5 6 7
(eccesso 4) - -4 -3 -2 -1 0 1 2 3
(valore)
36Rappresentazione eccesso 2m-1 (cont.)
- Per passare dalla rappresentazione eccesso 2m-1
al complemento a 2 su m bit si deve invertire il
bit MSB - Esempio precedente
- -4 -3 -2 -1 0 1 2 3
- rapp. eccesso 4
- 0 0 0 0 1 1 1 1
(MSB) - 0 0 1 1 0 0 1 1
- 0 1 0 1 0 1 0 1
- rapp. compl. a 2
- 1 1 1 1 0 0 0 0
(MSB) - 0 0 1 1 0 0 1 1
- 0 1 0 1 0 1 0 1
37Operazioni aritmetiche
- Somma
- Sottrazione
- Prodotto
- Divisione
38Somma binaria
- BASE B2
- 000
- 011
- 101
- 1110 (2)10
- 11111 (3)10
0
0
0
1
1
1
1 1 1 0 0 0 (56)10 0 1 1 1
0 1 (29)10 ----------------------
(85)10
1
0
1
0
1
0
1
La somma di due numeri a k bit e rappresentabile
al piu con k1 bit Se abbiamo a disposizione k
bit ed il risultato richiede k1 bit si ha
overflow
39Regole per la somma
Somma di due bit A e B
Cout Cin A B
------------ Si
40Somma algebrica in complemento
- Esprimere gli operandi in complemento alla base
- La rappresentazione in complemento differisce
solo per i valori negativi - Eseguire la somma
- Trascurare leventuale riporto
- Se non si è verificato overflow, allora la somma
rappresenta il risultato espresso in complemento - Si verifica overflow quando gli operandi hanno lo
stesso segno ed il risultato ha segno opposto
41Overflow, esempio
- Eseguire su k4 bit la differenza 3-6
- -3 ? 21 ?
- 0011 ?
- 1101
-
- -6 ? 42 ?
- 0110 ?
- 1010
42Rilevazione overflow
- Si e verificato OVERFLOW se
- i due operandi hanno lo stesso segno
- Il risultato ha il segno diverso dagli operandi
- ma.
0100 5 0101 6
0110 ------- gt ----------- 11
01011 gt -5
1000 -3 1101 -6
1010 ------- gt ----------- -9
10111 gt 7
il verificarsi delloverflow implica la
disuguaglianza del riporto in ingresso e quello
in uscita dalla posizione MSB (CinltgtCout) Lover
flow si può rilevare testando la condizione
CinltgtCout di MSB
43Estensione del segno
- Problema
- Sia dato un intero N, rappresentato in
complemento mediante k bit - Rappresentare N usando kq bit (qgt0)
- Soluzione
- Fare q copie di MSB
- Dimostrazione (banale per N positivo)
- Sia Nlt0 (N1bbb , dove b è una cifra binaria)
- Per induzione Sia Nq la stringa con estensione
di q bit - q1 Poiché 2K12K 2K1, allora V(N)V(N1).
- qgt1 estendere di un bit la stringa ottenuta da N
con estensione di q-1 bit ? V(Nq)V(Nq-1) - Esempio
- -2 (110)2 con 3 bit diventa (111110)2 su 6 bit
44Moltiplicazione numeri senza segno
- 0 x 0 0
- 0 x 1 0
- 1 x 0 0
- 1 x 1 1
45Esempio (operandi senza segno)
1 0 0 1 0 (18) 1 0 1
0 (10) ---------------------
0 0 0 0 0
1 0 0 1 0
0 0 0 0 0
1 0 0 1 0
---------------------- 1 0 1 1 0 1 0 0
gt 27 25 24 22 128 32 16 4 180
46Prodotto e divisione per 2k
- Il prodotto di N per 2k si ottiene postando di k
posizioni le cifre a sinistra ed inserendo k bit
pari a zero - La divisione di N per 2k si ottiene postando di k
posizioni le cifre a destra ed inserendo k bit
pari al valore di MSB (shift aritmetico) - Esempio -128/8 -16 (823)
- 1000 0000 ? (3 posizioni a destra)
- 1111 0000 (-16)10
- Esercizio verificare tale regola
47Prodotto e divisione per 2k
- Se N è un numero senza segno, allora il prodotto
(divisione) per 2k si ottiene spostando (shift)
le cifre a sinistra (destra) di k posizioni ed
introducendo 0 nelle posizioni lasciate libere - Esempio 15 x 4 60 (422,shift 2 posizioni)
- 0000 1111 ?
- 0011 1100
- Esempio 128 / 2 64 (221, shift 1 posizione)
- 1000 0000 ?
- 0100 0000
- Attenzione nel caso di rappresentazioni con
segno questa regola non vale..
48Prodotto e divisione per 2k
- N2ndn 2n-1dn-1 d0
- N2N 2n1dn 2ndn-1 2d00
- N2n1dn1 2ndn 2d1 d0
- didi-1(igt0) e d00
49Esercizi di riepilogo
- Eseguire le seguenti conversioni
- (-16)10 (??)2 complemento a 2, minimo numero
di cifre - (-16)10 (??) 2 complemento a 2, k10 cifre
binarie - (-126)10 (??) 2 complemento a 2, minimo numero
di cifre - (27)10 (??)2
- (1/3)10 (??)3
- (128)10 (??)16 (??)8 (??)2
- (11.111)2 (??)10
-
50Esercizi di riepilogo
- Esprimere in base 10 il numero periodico (0,10)2
- Eseguire le operazioni
- 16 - 23, in complemento (k7 bit)
- 16 23 in complemento (k7 bit, k6 bit)
- -16 - 23 in complemento (k7 bit e k6 bit)
- 11101 x 11
- 10101011 / 10
-