• Non ci sono risultati.

Sistemi numerici

N/A
N/A
Protected

Academic year: 2021

Condividi "Sistemi numerici"

Copied!
80
0
0

Testo completo

(1)

Rappresentazione di

dati numerici

(2)

Sistemi numerici

• Si suddividono in:

- Non posizionali : quali ad esempio il sistema di numerazione

romano (i cui simboli sono: I, II, III, IV, V, X, L, C, D, M) oppure quello egiziano

- Posizionali : quali ad esempio il sistema arabo (decimale) e il sistema maya (ventesimale).

• Nei sistemi posizionali le operazioni aritmetiche risultano molto agevoli mentre in quelli non posizionali sono

alquanto complicate.

(3)

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

1 n

i i

i m

N d r

= −

= ∑ ⋅

(4)

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)

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)

Sistema binario

• r = 2

• cifre: { 0, 1 }

- Esempio:

1012 = 1 × 22 + 0 × 21 + 1 × 20

= 4 + 0 + 1 = 510

(7)

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)

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 numeri binari (ad ogni 4 cifre binarie corrisponde 1 cifra

esadecimale)

( 1 1 0 1 1 0 0 0 1) 2 = ( 1 B 1 )

(9)

Sistema base 5

• r = 5

• cifre: { 0, 1, 2, 3, 4 }

- Esempio:

1015 = 1 × 52 + 0 × 51 + 1 × 50

= 25 + 0 + 1 = 2610

(10)

Sistema binario

• Caratteristiche

- su n cifre si rappresentano 2n numeri; ad esempio su 4 cifre:

- Prime 16 potenze del 2:

0 ... 0 1000 ... 8

1 ... 1 1001 ... 9

10 ... 2 1010 ... 10

11 ... 3 1011 ... 11

100 ... 4 1100 ... 12

101 ... 5 1101 ... 13

110 ... 6 1110 ... 14

111 ... 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 ... 16384

26 ... 64 215 ... 32768 27 ... 128 216 ... 65536

(11)

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

(12)

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 15

8 256 0 255

16 65,536 0 65,535

32 4,294,967,296 0 4,294,967,295

(13)

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)

Conversione da binario a decimale (2)

B) Metodo consigliato: da

0 1

2 2 2

2 1

1

...

)

( N d r d r d r d r d

V =

n n

+

n n

+ + +

0 1

2 3

2 1

0 1

2 3

2 2

1

0 1

2 2 2

2 1

1

) )

....

) )

(...(

. ...

) ...

(

...

) (

d r

d r

d r

d r

d r

d

d r

d r

d r

d r

d

d r

d r

d r

d r

d N

V

n n

n

n n

n n

n n

n n

+ +

+ +

+

=

=

=

= +

+ +

+ +

=

= +

+ +

+ +

=

mettendo in evidenza i fattori comuni, si ricava:

(15)

Conversione da binario a decimale (3)

Si deduce il seguente algoritmo:

1. Si parte dalla cifra più significativa 2. Si moltiplica per la base

3. Si somma la cifra successiva

4. Si ripete da 2. fino ad arrivare a d0

Esempio: 10102 = ((1*2+0)*2+1)*2+0 = 1010

(16)

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)

Esempio

• Esempio:

13 6 3 1 0 quozienti

1 0 1 1 resti

d0 d1 d2 d3

1310 = 11012

(18)

Numero di bit della

rappresentazione binaria

Problema: dato N10, quanti bit (n) occorrono per rappresentarlo in base 2 ?

Con n bit il massimo numero rappresentabile è:

1 2

2

1

0

max =

=

=

n n

i

N i

Con n-1 bit il massimo numero rappresentabile è:

1 2

2 1

2

0 '

max = =

n= n i

N i

(19)

Numero di bit della

rappresentazione 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-1 2n-1 < x+1 ≤ 2n n-1 < log2(x+1) ≤ n

(20)

Numero di bit della

rappresentazione binaria (3)

n = ⎡log2 (x+1)⎤

⎡k⎤ = intero superiore o uguale a k In generale, per una base r:

n = ⎡logr (x+1)⎤

(21)

Numero di bit della

rappresentazione 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)

Numero di bit della

rappresentazione binaria (5)

210 = 1024 ≅ 103 → Kilo

220 = 1.048.576 ≅ 106 → Mega 230 = 1.073.741.824 ≅ 109 → Giga

(23)

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)

Esempio

• Regola: si moltiplica per due la parte frazionaria e si

prende la cifra intera prodotta dal risultato proseguendo fino alla precisione richiesta.

- Esempio: 0.34 x 2

0.68 x 0.3410 = 0.01012

2 1.36 x

2 0.72 x

2

1.44 ecc. 13.3410 = 1101.01012

(25)

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)

Conversioni tra sistemi in base qualsiasi

• E’ ovvio che le regole di conversione decimale-binario

sono 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 0 1 3 0 1

36510 = 10317

(27)

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)

Somma in binario

• Regole base:

0 + 0 = 0

0 + 1 = 1

1 + 0 = 1

1 + 1 = 0 con riporto (carry) di 1

• Si effettuano le somme parziali tra i bit dello stesso peso, propagando gli eventuali riporti:

1 1

0 1 1 0 + 6 + 0 1 1 1 = 7 = 1 1 0 1 13

(29)

Somma completa

• La somma completa (full addition) tiene conto del riporto per 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)

Sottrazione in binario

• Regole base:

0 – 0 = 0

0 – 1 = 1 con prestito (borrow) di 1 1 – 0 = 1

1 – 1 = 0

• Si eseguono le sottrazioni bit a bit tenendo conto dei prestiti:

1

1 1 0 0 - 12 -

1 0 1 0 = 10 = 0 0 1 0 2

(31)

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)

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 1

1 1 0 1 1 1

• Nella pratica si usano accorgimenti particolari basati sull’operazione di scorrimento (

shift

).

(33)

Divisione in binario

• Come per le altre operazioni applichiamo le stesse regole che usiamo col sistema decimale:

- Esempio:

1 0 1 0 1 1 1

0 0 0 1 1 1 21 / 3 = 7 1 0 1

0 1 1 1 0 0

1 1 0 0 1 1

1 1 0 0

(34)

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)

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)

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)

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 · 1

1410 = 11102 1 1 1 1

1110000 + 1110 « 3 + 1110 « 2 + 1110 111000 + 1110 = 10110110

(38)

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)

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 0 e 31

1 1 1 1 1

• Inoltre dovremo in qualche modo introdurre il segno dei numeri!

(40)

I numeri con segno

• Oltre al problema relativo al valore del numero bisogna trovare 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 numerico binario si utilizzano dei

codici binari

che hanno tuttavia come base, ovviamente, il sistema numerico binario.

(41)

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 di rappresentare i numeri sulla carta.

• Presenta però gravi svantaggi dovuti alla doppia

rappresentazione dello zero (esistono e sono leciti infatti sia + 0, che - 0) e alla complessità delle operazioni

aritmetiche.

(42)

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)

Complemento a 1

• Considerando numeri binari di

n

bit, si definisce

complemento 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)

Complemento a 2

• Considerando numeri binari di

n

bit, si definisce

complemento 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)

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 uno che si lascia inalterato, si complementano tutti gli altri bit

• Esempio:

A = 001101001000; A = 110010111000

(46)

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)

Somma e sottrazione in complemento a 2

• La somma si effettua direttamente, senza badare ai segni degli operandi, come fossero due normali numeri binari.

• La sottrazione si effettua sommando al minuendo il complemento 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)

Overflow

• Si usa il termine

overflow

per indicare l’errore che si verifica in un sistema di calcolo automatico

quando il risultato di un’operazione non è rappresentabile con la medesima codifica e numero di bit degli operandi.

• Nella somma in binario puro si ha overflow quando si opera 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)

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 =

carry, risultato OK

(50)

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 = 11111111 0.0625 = 00000001

virgola sottintesa

(51)

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)

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)

Rappresentazione di numeri reali

• Le rappresentazioni fin qui considerate hanno il pregio di rappresentare esattamente i numeri (almeno quelli interi) ma richiedono un numero di bit esorbitante quando il

numero da rappresentare ha valore elevato.

• La rappresentazione dei numeri frazionari che deriva dai codici precedenti, ovvero in fixed point, a causa delle forti approssimazioni che impone è usata raramente.

• Generalmente viene utilizzato un apposito codice noto come floating point che consente di rappresentare in un numero limitato di bit grandezze di qualsiasi valore anche se condizionate da approssimazioni più o meno elevate.

(54)

Rappresentazione di numeri in floating point

Realizza un compromesso tra l'intervallo dei valori rappresentati e la precisione della 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

(55)

La notazione scientifica

• Numeri in virgola fissa su 6 cifre decimali. Intervallo esprimibile:

0 ÷ 999999 (≅ 10

6

)

• Numeri in notazione scientifica su 6 cifre. Forma:

X.YYY⋅10

WW

• 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.

(56)

La notazione scientifica (2)

• Intervallo di valori espressi:

0 (0.000⋅10

0

) ÷ 10

100

(9.999⋅10

99

)

• Con 6 cifre, si rappresentano sempre 10

6

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.

(57)

Standard IEEE P754

Definisce i formati per la rappresentazione dei numeri in virgola mobile ma anche:

le conversioni tra formati floating point differenti;

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.).

(58)

Single basic format P754 (32 bit)

I numeri sono pensati nella forma normalizzata:

X = (-1) s (1.m)2 e dove:

s è il bit di segno;

e è l'esponente rappresentato in codice

eccesso 127 (cioè esponente vero + 127)

su 8 bit ( -126 ≤ e ≤ 127);

(59)

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 2

0

sempre uguale a 1 non viene rappresentato ed è detto hidden bit)

Esempio:

13.25

10

va trasformato nella forma normalizzata:

+1101.01

2

= +1.10101

2

⋅2

3

(60)

Struttura della

rappresentazione single basic format

s e m

11.75

10

= 1011.11

2

= 1.01111*2

3

s = 0 e = 10000010 m = 01111....

Esempio: rappresentare 11.75

10

in P754 s.b.f.

0 10000010 01111000000000000000000

(61)

Caratteristiche della

rappresentazione P754 su 32

Range della rappresentazione: si bit

considerano i valori assoluti dei numeri normalizzati rappresentabili:

N

max

= 1.111... ·2

127

= 3.4 · 10

38

N

min

= 1.000... ·2

-126

= 1.17 · 10

-38

Precisione della rappresentazione: due valori rappresentabili e consecutivi differiscono per 2

e-23

dove “e” è

l’esponente vero (non in codice eccesso

127)

(62)

Distribuzione dei numeri in f.p.

1 2 4 8

-1 -2

- 4 - 8

1.0..*

20

1.0..*

21

1.0..*

22

1.0..*

23

223 numeri 223 numeri

(63)

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

(64)

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

(65)

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.

(66)

Operazioni in f.p.

Gli operandi sono da riportare nella forma:

±1.xxxxx…x⋅2

a

±1.yyyyy…y⋅2

b

dove a e b sono gli esponenti eccesso 127

SOMMA – SOTTRAZIONE

Si eseguono le operazioni con gli

algoritmi del modulo e segno.

(67)

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.

(68)

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… < 100

2

(69)

Operazioni in f.p. (4)

DIVISIONE

Si 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.

(70)

Osservazioni sul f.p.

I risultati delle operazioni in f.p.

possono dipendere dall’ordine di esecuzione.

Esempio

10

16

+ 2 - 10

16

e

10

16

- 10

16

+ 2

danno risultati diversi.

(71)

Osservazioni sul f.p. (2)

In generale, in f.p. vale a + b = a se

a / b > 2

24

≅ 16⋅10

6

Esempio:

non ha senso incrementare di uno un valore positivo a se a è molto maggiore di 1.

6

24 16 10

2 b

a 24 6

10 16 2 b

a 24 6

10 16 2 b

a 24 6

10 16 2 b

a 24 6

10 16 2 b

a 24 6

10 16 2 b

a 24 6

10 16 2 b

a 24 6

10 16 2 b

a 24 6

10 16 2 b

a 24 6

10 16 2 b

a 24 6

10 16 2 b

a 24 6

10 16 2 b

a

(72)

Floating-point

• E’ basata sul formato esponenziale (

notazione scientifica

) N = mantissa ⋅ base esponente

- Ricorda le notazioni:

standard 3.5 × 104 3.5E+4 scientifico 0.35 × 105 0.35E+5

• Nei sistemi di elaborazione

- Base = 2

- Mantissa ed esponente sono rappresentati in binario

(73)

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)

Formato IEEE-P754

• Standard IEEE per il floating-point:

- Rappresentazione binaria di mantissa

esponente segno

• Singola precisione: 32 bit (float)

• Doppia precisione: 64 bit (double)

23 bit 8 bit

esponente

segno mantissa

1 bit

52 bit 11 bit

esponente

segno mantissa

1 bit

precisione: circa 7 cifre decimali

precisione: circa 17 cifre decimali

(75)

Overflow e Underflow

• A causa della precisione variabile è possibile avere errori di rappresentazione:

- numeri troppo grandi: overflow - numeri troppo piccoli: underflow

Esempio: IEEE P754

-1038 -10-38 0 10-38 1038

overflow

underflow

(76)

Rappresentazioni di dati non numerici

• Qualunque insieme finito di oggetti può essere

codificato

tramite valori numerici associando ad ogni oggetto un

codice

(ad esempio un numero intero).

• Nel sistema numerico binario per rappresentare K oggetti distinti occorre un numero minimo di bit pari a:

N = ⎡ log2 K ⎤

(77)

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)

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 Return

LF,NL ( 10 ) New Line, Line Feed FF,NP ( 12 ) New Page, Form Feed HT ( 9 ) Horizontal Tab

VT ( 11 ) Vertical Tab NUL ( 0 ) Null

BEL ( 7 ) Bell

EOT ( 4 ) End-Of-Transmission

(79)

Codice ASCII

• Ad esempio per rappresentare il messaggio “Auguri a tutti!” è necessaria la seguente sequenza:

01000001 A 00100000 spazio

01110101 u 01110100 t

01100111 g 01110101 u

01110101 u 01110100 t

01110010 r 01110100 t

01101001 i 01101001 i

00100000 spazio 00100001 ! 01100001 a

(80)

Fine Rappresentazione dei dati

Riferimenti

Documenti correlati

Di particolare interesse risulta l’andamento della corsa in funzione del peso: questo mette in evidenza una isteresi della sospensione, ovvero come quest’ultima, fissato il

Determinare il numero di termini necessario, nello sviluppo in serie di log(1+x), per calcolare il valore numerico di log(2) commettendo un errore relativo inferiore a 1.e-2,

Il sistema di risposta allo stress è piu' efficace per affrontare stressors acuti o di breve durata, in quanto gli animali sono in grado di allontanarsi da

La leadership nelle scuole, e nello specifico, il ruolo del “capo di istituto”, è di grande attualità in quasi tutti i paesi che hanno da tempo intrapreso la via dell’autonomia.. Ne

Un ulteriore fatto a difesa della nuova funzione di questa molecola è che Hsp72 ha un peso molecolare maggiore della grandezza dei pori della barriera di filtrazione

La differenza di due vettori `e un altro vettore che si ottiene per costruzione grafica disegnando i due vettori dati in modo che partano dallo stesso punto (punto di applicazione),

Nel III Canto del Paradiso Dante sale al primo cielo (quello della Luna) ove si trovano coloro che hanno il grado più basso di. beatitudine, perché indotti o forzati in vita a

Poiché Daptomicina viene eliminata principalmente per via renale, Cubicin deve essere utilizzato, in pazienti con qualsiasi grado di compromissione della funzionalità renale (Cr