Upload
dangnhan
View
215
Download
0
Embed Size (px)
Citation preview
Rappresentazione di dati numerici
2© Piero Demichelis
Sistemi numerici
• Si suddividono in:
- Non posizionali : quali ad esempio il sistema di numerazioneromano (i cui simboli sono: I, II, III, IV, V, X, L, C, D, M) oppurequello egiziano
- Posizionali : quali ad esempio il sistema arabo (decimale) e ilsistema maya (ventesimale).
• Nei sistemi posizionali le operazioni aritmetiche risultanomolto agevoli mentre in quelli non posizionali sonoalquanto complicate.
3© Piero Demichelis
Sistema posizionale a base fissa
• Nei sistemi numerici a base fissa, un numero N può essere rappresentato in uno del seguenti modi:
N = dn-1 dn-2 ........ d1 d0 . d-1 ........ d-m
N = dn-1· rn-1 + ..... + d0· r0 + d-1· r-1 + ..... + d-m· r-m
1ni
ii m
N d r−
= −
= ⋅∑
4© Piero Demichelis
Sistemi numerici
• Proprietà di un sistema numerico a base fissa
- è a rango illimitato : ogni numero intero vi può essere rappresentato;
- è a rappresentazione unica : ad ogni numero intero corrisponde un solo insieme ordinato di cifre;
- è irridondante : ad ogni insieme ordinato di cifre corrisponde un solo numero non rappresentato da altri insiemi ordinati.
5© Piero Demichelis
Sistema decimale
• r = 10
• cifre: { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }
- Esempio:
10110 = 1 × 102 + 0 × 101 + 1 × 100
= 100 + 0 + 1= 10110
6© Piero Demichelis
Sistema binario
• r = 2
• cifre: { 0, 1 }
- Esempio:
1012 = 1 × 22 + 0 × 21 + 1 × 20
= 4 + 0 + 1 = 510
7© Piero Demichelis
Sistema ottale
• r = 8
• cifre: { 0, 1, 2, 3, 4, 5, 6, 7 }
- Esempio:1018 = 1 × 82 + 0 × 81 + 1 × 80
= 64 + 0 + 1 = 6510
• molto utile per scrivere in modo compatto i numeri binari(ad ogni 3 cifre binarie corrisponde una cifra ottale)
( 1 1 0 1 1 0 0 0 1) 2 =( 6 6 1 ) 8
8© Piero Demichelis
Sistema esadecimale
• r = 16
• cifre: { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F }
- Esempio:101H = 1 × 162 + 0 × 161 + 1 × 160
= 256 + 0 + 1 = 25710
• anch’esso utile per scrivere in modo compatto i numeribinari (ad ogni 4 cifre binarie corrisponde 1 cifraesadecimale)
( 1 1 0 1 1 0 0 0 1) 2 =( 1 B 1 ) 16
9© Piero Demichelis
Sistema base 5
• r = 5
• cifre: { 0, 1, 2, 3, 4 }
- Esempio:
1015 = 1 × 52 + 0 × 51 + 1 × 50
= 25 + 0 + 1 = 2610
10© Piero Demichelis
Sistema binario
• Caratteristiche- su n cifre si rappresentano 2n numeri; ad esempio su 4 cifre:
- Prime 16 potenze del 2:
0 ... 0 1000 ... 81 ... 1 1001 ... 910 ... 2 1010 ... 1011 ... 3 1011 ... 11100 ... 4 1100 ... 12101 ... 5 1101 ... 13110 ... 6 1110 ... 14111 ... 7 1111 ... 15
20 ... 1 29 ... 512 21 ... 2 210 ... 1024 22 ... 4 211 ... 2048 23 ... 8 212 ... 4096 24 ... 16 213 ... 8192 25 ... 32 214 ... 1638426 ... 64 215 ... 3276827 ... 128 216 ... 6553628 ... 256
11© Piero Demichelis
Sistema binario
• La cifra binaria è detta bit
parola che deriva dall’unione di due elisioni:
binary digit
• I bit estremi di un numero binario si chiamano:
1 0 1 1 1 0 0 1 0 0
MSB(Most Significant Bit)
LSB(Least Significant Bit)
12© Piero Demichelis
Limiti del sistema binario
• Poiché su n bit si rappresentano 2n numeri, per rappresentare la stessa grandezza occorrono molte piùcifre rispetto al sistema numerico decimale.
bit simboli val. minimo val. massimo
4 16 0 158 256 0 25516 65,536 0 65,53532 4,294,967,296 0 4,294,967,295
13© Piero Demichelis
Conversione da binario a decimale
• Si applica direttamente la definizione effettuando la somma pesata delle cifre binarie:
1012 = 1 × 22 + 0 × 21 + 1 × 20
= 4 + 0 + 1
= 5
1101.12 = 1 ⋅ 23 + 1 ⋅ 22 + 0 ⋅ 21 + 1 ⋅ 20 + 1 ⋅ 2-1
= 8 + 4 + 0 + 1 + 0.5= 13.510
14© Piero Demichelis
Conversione da binario a decimale (2)
B) Metodo consigliato: da
012
22
21
1 ...)( drdrdrdrdNV nn
nn ++++= −
−−
−
012321
0123
22
1
012
22
21
1
))....))(...(...........
)...(
...)(
drdrdrdrdrd
drdrdrdrd
drdrdrdrdNV
nnn
nn
nn
nn
nn
+++++===
=+++++=
=+++++=
−−−
−−
−−
−−
−−
mettendo in evidenza i fattori comuni, si ricava:
15© Piero Demichelis
Conversione da binario a decimale (3)
Si deduce il seguente algoritmo:
1. Si parte dalla cifra più significativa2. Si moltiplica per la base3. Si somma la cifra successiva4. Si ripete da 2. fino ad arrivare a d0
Esempio: 10102 = ((1*2+0)*2+1)*2+0 = 1010
16© Piero Demichelis
Conversione da decimale a binario
N = dn-1· rn-1 + ..... + d0· r0 + d-1· r-1 + ..... + d-m· r-m
• Consideriamo la sola parte intera e riscriviamo il numero binario nel modo seguente:
N = d0 + 2 · (d1 + 2 · (d2 + ...... + dn-1))
• Si può osservare che dividendo N per la base 2, si ottiene un quoziente (d1 + r · (d2 + ...... + dn-1)) e un resto d0, che costituisce proprio la cifra meno significativa del numero nella base 2.
• Dividendo successivamente il quoziente per la base 2 si trova ancora un quoziente e un resto d1, che è la cifra di peso uno cercata, e cosìvia.
17© Piero Demichelis
Esempio
• Esempio:
13 6 3 1 0 quozienti1 0 1 1 restid0 d1 d2 d3
1310 = 11012
18© Piero Demichelis
Numero di bit dellarappresentazione binaria
Problema: dato N10, quanti bit (n) occorrono per rappresentarlo in base 2 ?
Con n bit il massimo numero rappresentabile è:
1221
0max −== ∑
−
=
nn
i
iN
Con n-1 bit il massimo numero rappresentabile è:
122 12
0
'max −== −
−
=∑ nn
i
iN
19© Piero Demichelis
Numero di bit dellarappresentazione binaria (2)
Pertanto per rappresentare un numero x tale che x ≤ 2n-1 e x > 2n-1-1 occorrono n bit.
Esempio: 3=22-1 < 5 < 7=23-1: 5 si rappresenta su 3 bit (infatti 510 = 1012).Ora:
2n-1-1 < x ≤ 2n-12n-1 < x+1 ≤ 2n
n-1 < log2(x+1) ≤ n
20© Piero Demichelis
Numero di bit dellarappresentazione binaria (3)
n = ⎡log2 (x+1)⎤
⎡k⎤ = intero superiore o uguale a k
In generale, per una base r:
n = ⎡logr (x+1)⎤
21© Piero Demichelis
Numero di bit dellarappresentazione binaria (4)
Dato N, il rapporto tra cifre decimali e bit occorrenti per rappresentarlo:
D / B = ⎡log10(N+1)⎤ / ⎡log2(N+1)⎤
non è costante al variare di N.
Si può però osservare che:210 = 1024 ≅ 1000 = 103 → 10 bit ogni 3 cifre decimali.
Questo rapporto si mantiene per un largo intervallo di valori.
22© Piero Demichelis
Numero di bit dellarappresentazione binaria (5)
210 = 1024 ≅ 103 → Kilo
220 = 1.048.576 ≅ 106 → Mega
230 = 1.073.741.824 ≅ 109 → Giga
23© Piero Demichelis
Conversione da decimale a binario
• Dato un numero frazionario:
N = a-1 2-1 + a-2 2-2 + ...... + a-m 2-m
• moltiplicando N per la base 2, si ricava come parte intera la cifra a-1, cioè la prima cifra binaria.
• Eliminata questa parte intera, moltiplicando quanto resta ancora per 2, si ricava come parte intera a-2, ecc.
• Le parti intere, scritte nel medesimo ordine con cui sono state ricavate, rappresentano il numero frazionario binario cercato.
24© Piero Demichelis
Esempio
• Regola: si moltiplica per due la parte frazionaria e siprende la cifra intera prodotta dal risultato proseguendofino alla precisione richiesta.
- Esempio: 0.34 x2
0.68 x 0.3410 = 0.010122
1.36 x2
0.72 x2
1.44 ecc. 13.3410 = 1101.01012
25© Piero Demichelis
Per convertire un numero con parte intera e parte frazionaria, si convertono separatamente le due parti e poi si giustappongono.
Esempio: 25.812510 = (?)2
2510 = 110012 (metodo delle divisioni successive)0.812510 = 0.11012 (metodo dei prodotti successivi)
25.812510 = (11001.1101)2
26© Piero Demichelis
Conversioni tra sistemi in base qualsiasi
• E’ ovvio che le regole di conversione decimale-binariosono del tutto generali e valgono qualsiasi siano i sistemi numerici coinvolti.
• Ad esempio per convertire il numero decimale 365 in base 7 si divide per 7:
365 52 7 1 01 3 0 1
36510 = 10317
27© Piero Demichelis
Operazioni aritmetiche
• Le operazioni aritmetiche in un qualsiasi sistema numerico si possono eseguire nello stesso identico modo che conosciamo così bene per il sistema numerico decimale.
• L’avvertenza è solo quella di costruire la “tabellina”opportuna per quel particolare sistema numerico: si ricordi che la tabellina per il sistema numerico decimale ce la siamo studiata a memoria sin dall’infanzia!!!!
• Il nostro interesse è però particolarmente concentrato sul sistema numerico binario e sono proprio le operazioni aritmetiche in binario che affronteremo ora.
28© Piero Demichelis
Somma in binario
• Regole base:0 + 0 = 00 + 1 = 11 + 0 = 11 + 1 = 0 con riporto (carry) di 1
• Si effettuano le somme parziali tra i bit dello stesso peso, propagando gli eventuali riporti:
1 10 1 1 0 + 6 +0 1 1 1 = 7 =1 1 0 1 13
29© Piero Demichelis
Somma completa
• La somma completa (full addition) tiene conto del riportoper cui si sommano due bit ed un carry ottenendo come risultato un bit di somma e un bit di riporto
A B Carry S Rip
0 0 0 0 0
0 1 0 1 0
1 0 0 1 0
1 1 0 0 1
0 0 1 1 0
0 1 1 0 1
1 0 1 0 1
1 1 1 1 1
30© Piero Demichelis
Sottrazione in binario
• Regole base:0 – 0 = 00 – 1 = 1 con prestito (borrow) di 1 1 – 0 = 11 – 1 = 0
• Si eseguono le sottrazioni bit a bit tenendo conto deiprestiti:
11 1 0 0 - 12 -1 0 1 0 = 10 =0 0 1 0 2
31© Piero Demichelis
Sottrazione completa
• Analogamente alla somma, è possibile definire la sottrazione completa (sottrazione tra due bit ed un borrow )
A B Borrow S Prest
0 0 0 0 0
0 1 0 1 1
1 0 0 1 0
1 1 0 0 0
0 0 1 1 1
0 1 1 0 1
1 0 1 0 0
1 1 1 1 1
32© Piero Demichelis
Moltiplicazione in binario
• Il prodotto tra due numeri binari si può calcolare con la tecnica già nota per i numeri in base 10, detta della somma e scorrimento.
- Esempio:1 0 1 1 x 11 x
1 0 1 = 5 =1 0 1 1 55
0 0 0 0 1 0 1 11 1 0 1 1 1
• Nella pratica si usano accorgimenti particolari basatisull’operazione di scorrimento (shift ).
33© Piero Demichelis
Divisione in binario
• Come per le altre operazioni applichiamo le stesse regole che usiamo col sistema decimale:
- Esempio:1 0 1 0 1 1 10 0 0 1 1 1 21 / 3 = 71 0 10 1 1
1 0 01 1
0 0 1 11 10 0
34© Piero Demichelis
L’operazione di shift
• Equivale ad una moltiplicazione o divisione per la base.
• Consiste nel “far scorrere ” i bit (a sinistra o a destra) inserendo opportuni valori nei posti lasciati liberi.
• In decimale equivale a moltiplicare (shift a sinistra) o dividere (shift a destra) per 10.
• In binario equivale a moltiplicare (shift a sinistra) o dividere (shift a destra) per 2.
35© Piero Demichelis
Shift a sinistra
• Si inserisce come LSB un bit a zero
• Equivale ad una moltiplicazione per due
0011 « 1 = 0110 ( 3 × 2 = 6 )0011 « 2 = 1100 ( 3 × 22 = 12 )0011 « 3 = 11000 ( 3 × 23 = 24 )
0 0 1 1
0 1 1 0
« 1 (shift a sinistra di 1 posizione)
0
36© Piero Demichelis
Shift a destra
• Si inserisce come MSB un bit a zero
• Equivale ad una divisione per due
0110 » 1 = 0011 ( 6 : 2 = 3 )0110 » 2 = 0001 ( 6 : 4 = 1 ) troncamento!
0 1 1 0
0 1 1 0
» 1 (shift a destra di 1 posizione)
0
37© Piero Demichelis
Moltiplicazioni
• Una qualsiasi moltiplicazione tra due numeri può essere trasformata in una serie di shift e di somme, operazioni che vengono eseguite molto velocemente dai microprocessori.
• Ad esempio il prodotto 14 x 13 diventa:14 · 13 = 14 · (8 + 4 + 1) = 14 · 8 + 14 · 4 + 14 · 11410 = 11102 1 1 1 1
1110000 +1110 « 3 + 1110 « 2 + 1110 111000 +
1110 =10110110
38© Piero Demichelis
Limiti della rappresentazione
• Quando scriviamo sulla carta non ci preoccupiamo quasi mai della grandezza dei numeri (a meno di particolari necessità).
• Nelle macchine numeriche un numero deve essere rappresentato in un particolare dispositivo elettronico interno che si chiama registro ed è paragonabile ad una cella di memoria.
• Caratteristica fondamentale di questo dispositivo è la sua dimensione (numero di bit) stabilita in sede di progetto: ovvero in un elaboratore potremo rappresentare solo una quantità limitata di numeri.
39© Piero Demichelis
Limiti della rappresentazione
• Ad esempio se il nostro contenitore (registro) è lungo 5 bit:
potremo rappresentare solamente i numeri binari compresi tra 0
0 0 0 0 0e 31
1 1 1 1 1
• Inoltre dovremo in qualche modo introdurre il segno dei numeri!
40© Piero Demichelis
I numeri con segno
• Oltre al problema relativo al valore del numero bisognatrovare il modo di rappresentare il segno.
• Il segno dei numeri può essere solo di due tipi:positivo ( + )negativo ( - )
• Sembrerebbe quindi facile rappresentarlo in binario, tuttavia la soluzione più semplice (1 bit riservato al segno) non è sempre conveniente.
• Per tener conto del segno anziché il sistema numericobinario si utilizzano dei codici binari che hanno tuttaviacome base, ovviamente, il sistema numerico binario.
41© Piero Demichelis
Modulo e segno
• Su N bit, un bit è destinato al segno (in binario 0 = +,1 = -) e N-1 bit al valore assoluto (anche detto modulo)
S modulo
• E’ un codice che ricorda molto il nostro modo dirappresentare i numeri sulla carta.
• Presenta però gravi svantaggi dovuti alla doppiarappresentazione dello zero (esistono e sono leciti infattisia + 0, che - 0) e alla complessità delle operazioniaritmetiche.
42© Piero Demichelis
Modulo e segno
• Esempi - usando una codifica su quattro bit:+ 310 → 0011MS
− 310 → 1011MS
• Si ha una doppia rappresentazione dello zero:0000MS → + 010
1000MS → − 010
• In generale su N bit sono rappresentabili i valori:
- ( 2N-1 - 1 ) ≤ x ≤ + ( 2N-1 - 1 )
8 bit => [ -127 ÷ +127 ]16 bit => [ -32.767 ÷ +32.767 ]
43© Piero Demichelis
Complemento a 1
• Considerando numeri binari di n bit, si definiscecomplemento a uno di un numero A la quantità:
A = 2n - 1 – A
• Viene anche detto semplicemente complemento.
• Regola pratica:il complemento a uno di un numero binario A si ottiene cambiando il
valore di tutti i suoi bit (complementando ogni bit)- Esempio:
A = 1011 → A = 0100
44© Piero Demichelis
Complemento a 2
• Considerando numeri binari di n bit, si definiscecomplemento a due di un numero A la quantità:
A = 2n – A
Regola pratica:il complemento a due di un numero binario A si ottiene sommando
uno al suo complemento (a uno)
- Esempio:
A = 1011 → A = 0100 → A = 0101
45© Piero Demichelis
Complemento a 2
• E’ usato per rappresentare numeri relativi:
( A ≥ 0 ) 0 A2 (= AMS)( A < 0 ) complemento a 2 di A
• In questo modo l’MSB indica il segno: 0 = +, 1 = -
• Regola alternativa per la determimazione del complemento a due: si parte da destra, si lasciano inalterati tutti gli zeri fino al primo unoche si lascia inalterato, si complementano tutti gli altri bit
• Esempio:A = 001101001000; A = 110010111000
46© Piero Demichelis
Complemento a 2
• Esempio - usando una codifica su 4 bit:
+ 310 → 0 ( 32 ) → 0011CA2
- 310 → - 0011 → 1100 + 1 → 1101CA2
• In generale su N bit sono rappresentabili i valori:
- ( 2N-1 ) ≤ x ≤ + ( 2N-1 - 1 )
8 bit => [ -128 ÷ +127 ]16 bit => [ -32.768 ÷ +32.767 ]
47© Piero Demichelis
Somma e sottrazione in complemento a 2
• La somma si effettua direttamente, senza badare ai segnidegli operandi, come fossero due normali numeri binari.
• La sottrazione si effettua sommando al minuendo ilcomplemento a 2 del sottraendo:
A – B → A + (- B) ovvero: A + B
• Esempio:0 1 0 1 0 + 10 +1 0 1 0 0 = - 12 =1 1 1 1 0 - 2
48© Piero Demichelis
Overflow
• Si usa il termine overflow per indicare l’errore che siverifica in un sistema di calcolo automatico quando ilrisultato di un’operazione non è rappresentabile con la medesima codifica e numero di bit degli operandi.
• Nella somma in binario puro si ha overflow quando siopera con un numero fisso di bit e si genera un riporto(carry) sul bit più significativo (MSB, quello più a sinistra).
Esempio: somma tra numeri di 4 bit in binario puro
0 1 0 1 +1 1 1 0 =
overflow! → 1 0 0 1 1
49© Piero Demichelis
Overflow in complemento a 2
1. Operandi con segno discorde:- non si può mai verificare overflow!!!!!
2. Operandi con segno concorde: - c’è overflow quando il risultato ha segno discorde da quello dei
due operandi
3. In ogni caso, si trascura sempre il carry (riporto) oltre il MSB
Esempi:0 1 0 1 + 1 1 1 0 +0 1 0 0 = 1 1 0 1 =1 0 0 1 1 1 0 1 1 =
overflow! carry, risultato OK
50© Piero Demichelis
Fixed-point
• Si usa un numero fisso di bit per la parte intera e per quella frazionaria (e non si rappresenta la virgola!)
• Ad esempio (4 + 4 bit, binario puro):
15.9375 = 111111110.0625 = 00000001
virgola sottintesa
51© Piero Demichelis
Fixed-point
• Vantaggi:- gli operandi sono allineati per cui le operazioni aritmetiche
risultano facili ed immediate;- la precisione assoluta è fissa
• Svantaggi:- l’intervallo di valori rappresentati è assai modesto- la precisione dei numeri frazionari rappresentati molto scarsa
• Utilizzo tipico:- DSP (Digital Signal Processor)- Sistemi digitali per applicazioni specifiche (special-purpose)- Numeri interi nei calcolatori
52© Piero Demichelis
Rappresentazione di numeri interi
• A causa dell’estrema semplicità che presentano le operazioni aritmetiche in complemento a 2, in tutte le macchine numeriche i numeri interi vengono rappresentati in questo codice.
• Il numero di bit utilizzati dipende dalla macchina: si tratta generalmente di 16 bit (interi corti) o 32 bit (interi lunghi).
• La rappresentazione è nota col nome di fixed-point e il punto frazionario è supposto all’estrema destra della sequenza di bit (parte frazionaria nulla).
53© Piero Demichelis
Rappresentazione di numeri reali
• Le rappresentazioni fin qui considerate hanno il pregio dirappresentare esattamente i numeri (almeno quelli interi) ma richiedono un numero di bit esorbitante quando ilnumero da rappresentare ha valore elevato.
• La rappresentazione dei numeri frazionari che deriva daicodici precedenti, ovvero in fixed point, a causa delle fortiapprossimazioni che impone è usata raramente.
• Generalmente viene utilizzato un apposito codice notocome floating point che consente di rappresentare in un numero limitato di bit grandezze di qualsiasi valore anchese condizionate da approssimazioni più o meno elevate.
Elementi di Informatica - Aritmetica del calcolatore 54 © A. Valenzano - 1996-2
Rappresentazione di numeri in floating point
Realizza un compromesso tra l'intervallodei valori rappresentati e la precisionedella rappresentazione.Utilizza una notazione del tipo mantissa + esponente dove il numero di bit dedicati
• alla mantissa influisce sulla precisione• all' esponente influisce sull' ampiezza
dell'inter-vallo di valori rappresentabili
55Elementi di Informatica - Aritmetica del calcolatore 55 © A. Valenzano - 1996-2
La notazione scientifica
• Numeri in virgola fissa su 6 cifre decimali. Intervallo esprimibile:
0 ÷ 999999 (≅ 106)• Numeri in notazione scientifica su 6
cifre. Forma:X.YYY⋅10WW
• Dove la parte intera X esprime la quantità, il numero di cifre della parte frazionaria YYY la precisione, l’esponente WW l’ordine di grandezza.
56Elementi di Informatica - Aritmetica del calcolatore 56 © A. Valenzano - 1996-2
La notazione scientifica (2)
• Intervallo di valori espressi:0 (0.000⋅100) ÷ 10100 (9.999⋅1099)
• Con 6 cifre, si rappresentano sempre 106 numeri differenti, ma
– Nella rappresentazione in virgola fissa, sono equispaziati
– Nella rappresentazione in virgola mobile, non sono distribuiti uniformemente: vicino allo zero, i numeri differiscono di 10-3; vicino al valore massimo, differiscono di 10-3⋅1099= 1096.
Elementi di Informatica - Aritmetica del calcolatore 57 © A. Valenzano - 1996-2
Standard IEEE P754
Definisce i formati per la rappresentazione dei numeri in virgola mobile ma anche:
• le conversioni tra formati floating pointdifferenti;
• le conversioni tra numeri f. p. ed interi o numeri rappresentati in codice BCD;
• i risultati delle operazioni aritmetiche;• i metodi di trattamento di situazioni di
eccezione (es. divisione per zero, errori di overflow, under-flow etc.).
Elementi di Informatica - Aritmetica del calcolatore 58 © A. Valenzano - 1996-2
Single basic format P754 (32 bit)I numeri sono pensati nella forma
normalizzata:X = (-1)s(1.m)2e
dove:
• s è il bit di segno;
• e è l'esponente rappresentato in codice eccesso 127 (cioè esponente vero + 127) su 8 bit ( -126 ≤ e ≤ 127);
Elementi di Informatica - Aritmetica del calcolatore 59 © A. Valenzano - 1996-2
Single basic format P754 (32 bit)• m è la mantissa rappresentata in forma
normalizzata su 23 bit in modo che il primo bit abbia peso 2-1;(il bit 20 sempre uguale a 1 non viene rappresentato ed è detto hidden bit)
Esempio:
13.2510
va trasformato nella forma normalizzata:
+1101.012 = +1.101012⋅23
Elementi di Informatica - Aritmetica del calcolatore 60 © A. Valenzano - 1996-2
Struttura della rappresentazione single
basic format
s e m
11.7510 = 1011.112 = 1.01111*23 ⇒s = 0e = 10000010m = 01111....
Esempio: rappresentare 11.7510 in P754 s.b.f.
0 10000010 01111000000000000000000
Elementi di Informatica - Aritmetica del calcolatore 61 © A. Valenzano - 1996-2
Caratteristiche della rappresentazione P754 su 32
bitRange della rappresentazione: si considerano i valori assoluti dei numeri normalizzati rappresentabili:
Nmax = 1.111... ·2127 = 3.4 · 1038
Nmin = 1.000... ·2-126 = 1.17 · 10-38
Precisione della rappresentazione: due valori rappresentabili e consecutivi differiscono per 2e-23 dove “e” èl’esponente vero (non in codice eccesso 127)
62Elementi di Informatica - Aritmetica del calcolatore 62 © A. Valenzano - 1996-2
Distribuzione dei numeri in f.p.
1 2 4 8-1-2- 4- 8
1.0..* 2
0 1.0..* 2
1 1.0..* 2
2 1.0..* 2
3
223
numeri 223
numeri
63Elementi di Informatica - Aritmetica del calcolatore 63 © A. Valenzano - 1996-2
Interpretazione di un numero f.p.
Sia s il bit del segno, e l’esponente, f la parte frazionaria.
• Se e = 0 ed f = 0, il valore è (-1)s⋅0, cioè +0 oppure -0
• Se e = 0 ed f ≠ 0, è una forma denormalizzata (esempio: si possono rappresentare gli interi su 23 bit, ecc.)
64Elementi di Informatica - Aritmetica del calcolatore 64 © A. Valenzano - 1996-2
Interpretazione di un numero f.p. (2)
• Se 0 < e < 255, è una forma normalizzata e il valore è
(-1)s⋅(1.f)⋅2(e-127)
• Se e = 255 ed f ≠ 0, si rappresenta(-1)s(∞)
cioè un numero infinitamente grande o infinitamente piccolo
65Elementi di Informatica - Aritmetica del calcolatore 65 © A. Valenzano - 1996-2
Interpretazione di un numero f.p. (3)
• Se e = 255 ed f = 0, non si tratta di un numero valido (not a number, NAN): permette di codificare condizioni particolari, quali operazione non valida, overflow, ecc.
66Elementi di Informatica - Aritmetica del calcolatore 66 © A. Valenzano - 1996-2
Operazioni in f.p.
Gli operandi sono da riportare nella forma:
±1.xxxxx…x⋅2a
±1.yyyyy…y⋅2b
dove a e b sono gli esponenti eccesso 127
SOMMA – SOTTRAZIONESi eseguono le operazioni con gli algoritmi del modulo e segno.
67Elementi di Informatica - Aritmetica del calcolatore 67 © A. Valenzano - 1996-2
Operazioni in f.p. (2)
Si devono allineare i numeri rispetto al punto decimale, riportandoli allo stesso esponente. Si fa scorrere a destra il valore minore (in modulo) di un numero di posizioni pari alla differenza degli esponenti.La differenza degli esponenti si può fare direttamente sui valori eccesso 127: (a’+127)-(b’+127) = a’-b’.L’esponente del risultato è quello del modulo maggiore.Potrebbe essere richiesta una ri-normalizzazione del risultato.
68Elementi di Informatica - Aritmetica del calcolatore 68 © A. Valenzano - 1996-2
Operazioni in f.p. (3)PRODOTTO
Si sommano gli esponenti normalizzati e si sottrae 127: (a’+127) + (b’+127) =(a’+b’+127)+127.Si moltiplicano le mantisse di 24 bit, ottenendo il prodotto su 48 bit: il risultato deve essere troncato ai 24 bit più significativi (precisione di 2-23).Può essere richiesta una ri-normalizzazione: 1.x… ⋅ 1.y… < 1002= 4
69Elementi di Informatica - Aritmetica del calcolatore 69 © A. Valenzano - 1996-2
Operazioni in f.p. (4)
DIVISIONESi sottraggono gli esponenti normalizzati e si somma 127: (a’+127) - (b’+127) = (a’-b’).Il dividendo, di 24 bit, si estende a 48 bit, inserendo zeri a destra, e si divide per il divisore, di 24 bit: il risultato, di 24 bit, ha la precisione di 2-23.Può essere richiesta una ri-normalizzazione.
70Elementi di Informatica - Aritmetica del calcolatore 70 © A. Valenzano - 1996-2
Osservazioni sul f.p.
I risultati delle operazioni in f.p. possono dipendere dall’ordine di esecuzione.Esempio
1016 + 2 - 1016
e1016 - 1016 + 2
danno risultati diversi.
71Elementi di Informatica - Aritmetica del calcolatore 71 © A. Valenzano - 1996-2
Osservazioni sul f.p. (2)
In generale, in f.p. valea + b = a
sea / b > 224 ≅ 16⋅106
Esempio:non ha senso incrementare di uno un valore positivo a se a è molto maggiore di 1.
624 10162 ⋅≅⟩ba 624 10162 ⋅≅⟩ba 624 10162 ⋅≅⟩ba 624 10162 ⋅≅⟩ba 624 10162 ⋅≅⟩ba 624 10162 ⋅≅⟩ba 624 10162 ⋅≅⟩ba 624 10162 ⋅≅⟩ba 624 10162 ⋅≅⟩ba 624 10162 ⋅≅⟩ba 624 10162 ⋅≅⟩ba 624 10162 ⋅≅⟩ba
72© Piero Demichelis
Floating-point
• E’ basata sul formato esponenziale (notazione scientifica)
N = mantissa ⋅ base esponente
- Ricorda le notazioni:
standard 3.5 × 104 3.5E+4scientifico 0.35 × 105 0.35E+5
• Nei sistemi di elaborazione- Base = 2- Mantissa ed esponente sono rappresentati in binario
73© Piero Demichelis
Floating-point
• Vantaggi:- grande intervallo di valori rappresentabili- errore relativo fisso
• Svantaggi:- operandi non allineati per cui le operazioni aritmetiche risultano
molto complesse- errore assoluto variabile e dipendente dal valore del numero
• E’ la rappresentazione utilizzata da tutti i calcolatori elettronici per rappresentare i numeri frazionari ed è stata standardizzata dall’IEEE.
74© Piero Demichelis
Formato IEEE-P754
• Standard IEEE per il floating-point:- Rappresentazione binaria di
mantissaesponentesegno
• Singola precisione: 32 bit (float)
• Doppia precisione: 64 bit (double)
23 bit8 bit
esponentesegno mantissa1 bit
52 bit11 bit
esponentesegno mantissa1 bit
precisione: circa 7 cifre decimali
precisione: circa 17 cifre decimali
75© Piero Demichelis
Overflow e Underflow
• A causa della precisione variabile è possibile avere erroridi rappresentazione:- numeri troppo grandi: overflow- numeri troppo piccoli: underflow
Esempio: IEEE P754
0-1038 -10-38 10-38 1038
overflow
underflow
76© Piero Demichelis
Rappresentazioni di dati non numerici
• Qualunque insieme finito di oggetti può essere codificatotramite valori numerici associando ad ogni oggetto un codice (ad esempio un numero intero).
• Nel sistema numerico binario per rappresentare K oggettidistinti occorre un numero minimo di bit pari a:
N = ⎡ log2 K ⎤
77© Piero Demichelis
Caratteri
• E’ sicuramente il tipo di informazione più scambiata: occorre pertanto una codifica standard.
- la più usata fa riferimento al codice ASCII (American Standard Code for Information Interchange)
- in passato era molto diffuso il codice EBCDIC (Extended BCD Interchange Code)
- codice UNICODE
78© Piero Demichelis
Codice ASCII
• E’ usato anche nelle telecomunicazioni.
• Usa 8 bit per rappresentare:- i 52 caratteri alfabetici (a ÷ z , A ÷ Z)- le 10 cifre (0 ÷ 9)- i segni di interpunzione (,;:!?&%=+-/ ecc.)- un gruppo di caratteri di controllo tra cui:
CR ( 13 ) Carriage ReturnLF,NL ( 10 ) New Line, Line FeedFF,NP ( 12 ) New Page, Form FeedHT ( 9 ) Horizontal TabVT ( 11 ) Vertical TabNUL ( 0 ) NullBEL ( 7 ) BellEOT ( 4 ) End-Of-Transmission
79© Piero Demichelis
Codice ASCII
• Ad esempio per rappresentare il messaggio “Auguri a tutti!” è necessaria la seguente sequenza:
01000001 A 00100000 spazio01110101 u 01110100 t01100111 g 01110101 u01110101 u 01110100 t01110010 r 01110100 t01101001 i 01101001 i00100000 spazio 00100001 !01100001 a
Fine Rappresentazione dei dati