80
Rappresentazione di dati numerici

Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

Embed Size (px)

Citation preview

Page 1: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

Rappresentazione di dati numerici

Page 2: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

2© Piero Demichelis

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.

Page 3: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

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

Page 4: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

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.

Page 5: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

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

Page 6: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

6© Piero Demichelis

Sistema binario

• r = 2

• cifre: { 0, 1 }

Esempio:

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

= 4 + 0 + 1 = 510

Page 7: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

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

Page 8: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

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

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

Page 9: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

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

Page 10: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

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

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 ... 16384 26 ... 64 215 ... 32768 27 ... 128 216 ... 65536 28 ... 256

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 28 ... 256

Page 11: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

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)

Page 12: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

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. minimoval. massimo

416 0 158256 0 25516 65,536 0 65,53532 4,294,967,296 0 4,294,967,295

Page 13: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

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

Page 14: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

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:

Page 15: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

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

Page 16: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

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.

Page 17: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

17© Piero Demichelis

Esempio

• Esempio:

13 6 3 1 0 quozienti1 0 1 1 restid0 d1 d2 d3

1310 = 11012

Page 18: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

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

Page 19: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

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

Page 20: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

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)

Page 21: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

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.

Page 22: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

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

Page 23: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

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.

Page 24: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

24© Piero Demichelis

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

Page 25: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

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

Page 26: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

26© Piero Demichelis

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

Page 27: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

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.

Page 28: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

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

Page 29: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

29© Piero Demichelis

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

Page 30: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

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 dei prestiti:

11 1 0 0 - 12 -

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

Page 31: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

31© Piero Demichelis

Sottrazione completa

• Analogamente alla somma, è possibile definire la sottrazione completa (sottrazione tra due bit ed un borrow )

A B Borrow

SPrest

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

Page 32: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

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

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

Page 33: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

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

0 0 1 1 1 1 0 0

Page 34: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

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.

Page 35: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

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

Page 36: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

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

Page 37: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

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

Page 38: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

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.

Page 39: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

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

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

Page 40: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

40© Piero Demichelis

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.

Page 41: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

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

Page 42: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

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 ]

Page 43: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

43© Piero Demichelis

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

Page 44: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

44© Piero Demichelis

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 A0101

Page 45: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

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

• Esempio:A = 001101001000; A = 110010111000

Page 46: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

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 ]

Page 47: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

47© Piero Demichelis

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

Page 48: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

48© Piero Demichelis

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

Page 49: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

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

Page 50: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

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

Page 51: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

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

Page 52: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

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

Page 53: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

53© Piero Demichelis

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.

Page 54: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

Elementi di Informatica - Aritmetica del calcolatore 54 A. Valenzano - 1996-2002

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

Page 55: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

55Elementi di Informatica - Aritmetica del calcolatore 55 A. Valenzano - 1996-2002

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

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

Page 56: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

56Elementi di Informatica - Aritmetica del calcolatore 56 A. Valenzano - 1996-2002

La notazione scientifica (2)

• Intervallo di valori espressi:

0 (0.000100) 10100 (9.9991099)

• 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-31099= 1096.

Page 57: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

Elementi di Informatica - Aritmetica del calcolatore 57 A. Valenzano - 1996-2002

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

Page 58: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

Elementi di Informatica - Aritmetica del calcolatore 58 A. Valenzano - 1996-2002

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

Page 59: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

Elementi di Informatica - Aritmetica del calcolatore 59 A. Valenzano - 1996-2002

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

Page 60: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

Elementi di Informatica - Aritmetica del calcolatore 60 A. Valenzano - 1996-2002

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

Page 61: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

Elementi di Informatica - Aritmetica del calcolatore 61 A. Valenzano - 1996-2002

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)

Numero massimo di valori rappresentabili: 232

Page 62: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

62Elementi di Informatica - Aritmetica del calcolatore 62 A. Valenzano - 1996-2002

Distribuzione dei numeri in f.p.

1 2 4 8-1-2- 4- 8

1.0..* 201.0..* 2

11.0..* 2

21.0..* 2

3

223

numeri 223

numeri

Page 63: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

63Elementi di Informatica - Aritmetica del calcolatore 63 A. Valenzano - 1996-2002

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)s0, cioè +0 oppure -0

• Se e = 0 ed f 0, è una forma denormalizzata (esempio: si possono rappresentare gli interi su 23 bit, ecc.)

Page 64: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

64Elementi di Informatica - Aritmetica del calcolatore 64 A. Valenzano - 1996-2002

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

Page 65: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

65Elementi di Informatica - Aritmetica del calcolatore 65 A. Valenzano - 1996-2002

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.

Page 66: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

66Elementi di Informatica - Aritmetica del calcolatore 66 A. Valenzano - 1996-2002

Operazioni in f.p.

Gli operandi sono da riportare nella forma:

1.xxxxx…x2a

1.yyyyy…y2b

dove a e b sono gli esponenti eccesso 127

SOMMA – SOTTRAZIONESi eseguono le operazioni con gli algoritmi del modulo e segno.

Page 67: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

67Elementi di Informatica - Aritmetica del calcolatore 67 A. Valenzano - 1996-2002

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.

Page 68: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

68Elementi di Informatica - Aritmetica del calcolatore 68 A. Valenzano - 1996-2002

Operazioni in f.p. (3)

PRODOTTOSi 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

Page 69: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

69Elementi di Informatica - Aritmetica del calcolatore 69 A. Valenzano - 1996-2002

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.

Page 70: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

70Elementi di Informatica - Aritmetica del calcolatore 70 A. Valenzano - 1996-2002

Osservazioni sul f.p.

I risultati delle operazioni in f.p. possono dipendere dall’ordine di esecuzione.

Esempio

1016 + 2 - 1016

e

1016 - 1016 + 2

danno risultati diversi.

Page 71: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

71Elementi di Informatica - Aritmetica del calcolatore 71 A. Valenzano - 1996-2002

Osservazioni sul f.p. (2)

In generale, in f.p. vale

a + b = a

se

a / b > 224 16106

Esempio:

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

624 10162 b

a 624 10162 b

a 624 10162 b

a 624 10162 b

a 624 10162 b

a 624 10162 b

a 624 10162 b

a 624 10162 b

a 624 10162 b

a 624 10162 b

a 624 10162 b

a 624 10162 b

a

Page 72: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

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

Page 73: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

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.

Page 74: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

74© Piero Demichelis

Formato IEEE-P754

• Standard IEEE per il floating-point: Rappresentazione binaria di

mantissaesponente segno

• Singola precisione: 32 bit (float)

• Doppia precisione: 64 bit (double)

23 bit8 bit

esponentesegno mantissa

1 bit

52 bit11 bit

esponentesegno mantissa

1 bit

precisione: circa 7 cifre decimali

precisione: circa 17 cifre decimali

Page 75: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

75© Piero Demichelis

Overflow e Underflow

• A causa della precisione variabile è possibile avere errori di rappresentazione: numeri troppo grandi: overflow numeri troppo piccoli: underflow

Esempio: IEEE P754

0-1038 -10-38 10-38 1038

overflow

underflow

Page 76: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

76© Piero Demichelis

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

Page 77: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

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

Page 78: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

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 Tab

NUL ( 0 ) NullBEL ( 7 ) BellEOT ( 4 ) End-Of-Transmission

Page 79: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

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

Page 80: Rappresentazione di dati numerici. © Piero Demichelis 2 Sistemi numerici Si suddividono in: Non posizionali : quali ad esempio il sistema di numerazione

Fine Rappresentazione dei dati