informatica b ingegneria elettrica · • come vengono gestite le informazioni in un ... • la...

46
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA INFORMATICA B Ingegneria Elettrica Rappresentazione della informazione

Upload: hoanghanh

Post on 16-Feb-2019

220 views

Category:

Documents


1 download

TRANSCRIPT

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

INFORMATICA BIngegneria Elettrica

Rappresentazione della informazione

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

Problema della rappresentazione

• Come vengono gestite le informazioni in un calcolatore?§ Numeri interi§ Numeri con la virgola§ Caratteri§ Immagini§ ...

2

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

Rappresentazione unaria

• La rappresentazione unaria è sicuramente la codifica (basata su un sistema additivo) più semplice dei numeri § La barretta I rappresenta il numero 1§ La sequenza IIIIII denota il numero 6 e così via

• La dimensione della rappresentazione cresce in modo lineare con il numero da rappresentare

• Impraticabile per gestire numeri grandi

3

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

I numeri romani

• È un altro sistema additivo• Minimizza la dimensione della rappresentazione rispetto alla

rappresentazione unaria: simboli per multipli di 5 • Alfabeto: {I V X L C D M}• Numeri naturali: combinazioni di tali simboli. Per evitare di

usare nuovi simboli 4 viene codificato come 5-1 scritto IV ecc.• Problemi con numeri non multipli di 5 e numeri grandi

§ 19 rappresentato da X IX § 1281 rappresentato da MCCLXXX I § 50.000 rappresentato da una sequenza di 50 M

4

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

Rappresentazione decimale

• Codifica posizionale basata sul numero 10• Alfabeto: {0 1 2 3 4 5 6 7 8 9}• I numeri si leggono da sinistra a destra e sono associati a

potenze di 10 (mille, diecimila, ecc.)• Es. la sequenza ‘5312’ rappresenta il numero

§ 5 x 103 + 3 x 102 + 1 x 101 + 2 x 100

• La notazione posizionale può essere utilizzata in qualsiasi altra base

5

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

Codifica BINARIA

• Usata dal calcolatore per tutte le informazioni§ Alfabeto: { 0, 1 }§ BIT (“BInary digIT”):

• unità elementare di informazione

§ Facile da implementare: dispositivi che assumono due stati• Acceso/spento• Due valori di tensione: Vdd e Vgnd

• Numeri binari naturali:la sequenza di n bit bi (cifre binarie):

bn-1 bn-2 … b0, essendo bi in {0, 1}rappresenta in base 2 il valore:

bn -1 x 2n-1 +bn-2 x 2n-2 +… +b0 x 20

6

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

Numeri binari naturali

• Con n bit (n >1) codifichiamo 2n numeri nell’intervallo [0; 2n-1]• Con 1 Byte (cioè una sequenza di 8 bit):

§ 00000000bin ->0dec

§ 00001000bin -> 1 x 23 = 8dec

§ 00101011bin -> 1 x25 +1 x 23 +1 x21 + 1 x 20 = 43dec

§ 11111111bin -> S i =0,1,2,3,4,5,6,7 1 x 2i = 255dec

• Conversione bin->dec e dec->bin

§ bin->dec -S i bi 2i: 11101bin = (24+23+22+20)= 29dec

§ dec->bin - metodo dei resti

7

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

Conversione da decimale a binario naturale

• Si calcolano i resti delle divisioni per due:1. Decidere se il numero sia pari (resto 0)

oppure dispari (resto 1), e annotare il resto2. Dividere per 2 il numero (trascurando il

resto)3. Ripartire dal punto 1 fino a ottenere 0

come risultato della divisione

• Questo approccio è chiamato metodo dei resti

19 : 2 | 19 : 2 | 14 : 2 | 02 : 2 | 010

: 2 | 1

19dec->10011bin

8

Cifra più significativa

Cifra meno significativa

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

Conversione da decimale a binario naturale

29 : 2 = 14 (1)14 : 2 = 7 (0)

7 : 2 = 3 (1)3 : 2 = 1 (1)1 : 2 = 0 (1)

76 : 2 = 38 (0)38 : 2 = 19 (0)19 : 2 = 9 (1)9 : 2 = 4 (1)4 : 2 = 2 (0)2 : 2 = 1 (0)1 : 2 = 0 (1)

29dec = 11101bin

76dec = 1001100bin

Del resto 76 = 19x4 = 1001100Per raddoppiare, in base due, si aggiunge uno zero in coda, così come si fa in base

dieci per decuplicare

9

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

Conversioni rapide bin à dec

• In binario si definisce una notazione abbreviata, sulla falsariga del sistema metrico-decimale:

K = 210 = 1.024 103 (Kilo)M = 220 = 1.048.576 106 (Mega)G = 230 = 1.073.741.824 109 (Giga)T = 240 = 1.099.511.627.776 1012 (Tera)

• È curioso (benché non sia casuale) come K, M, G e T in base 2 abbiano valori molto prossimi ai corrispondenti simboli del sistema metrico decimale, tipico delle scienze fisiche e dell’ingegneria

• L’errore risulta <10%

10

''

''

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

Conversioni rapide bin à dec: esempi

• 224 = 24 x 210 = 16 M, leggi “16 milioni”• 235 = 25x30 = 32 G, leggi “32 miliardi”• 248 = 28 x 240 = 256 T, leggi “256 bilioni”, o anche = 28210230

= 256 K G, leggi “256 mila miliardi”• 232 =22 230 =4 G

11

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

Lunghezza della rappresentazione binario naturale

• Quanti bit servono almeno per rappresentare in binario naturale un dato valore espresso in notazione decimale?

• # di bit = élog2 (valore+1)ù• Esempio: élog2 (74dec+1) ù = é6,2…ù = 7 bit

• In generale: élogB (valore+1)ù = # di cifre per rappresentare il valore in base B

• Esempio: élog10 (74dec+1)ù = é1,8…ù = 2 cifre

12

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

Aumento e riduzione dei bit in binario naturale

• Aumento dei bit§ Premettendo in modo progressivo un bit 0 a sinistra, il valore del

numero non muta4dec = 100bin = 0100bin = 00100bin = … 000000000100bin

5dec = 101bin = 0101bin = 00101bin = … 000000000101bin

• Riduzione dei bit§ Cancellando in modo progressivo un bit 0 a sinistra, il valore del

numero non muta, ma bisogna arrestarsi quando si trova un bit 1!7dec = 00111bin = 0111bin = 111bin STOP !2dec = 00010bin = 0010bin = 010bin = 10bin STOP !

13

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

• Algoritmo di “addizione a propagazione dei riporti”• È l’algoritmo decimale elementare, adattato alla base 2

• Addizione naturale (a 8 bit):

• L’operazione di sottrazione è adattata allo stesso modo § Il secondo operando deve essere minore del primo

Operazioni con numeri binari naturali

Pesi 7 6 5 4 3 2 1 0

Riporto 1 1 1

Addendo 1 0 1 0 0 1 1 0 1 + 77dec

Addendo 2 1 0 0 1 1 1 0 0 = 156dec

Somma 1 1 1 0 1 0 0 1 233dec

14

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

Operazioni con numeri binari naturali

• L’overflow si verifica quando il risultato di un’operazione non può essere rappresentato sul numero di bit a disposizione

• Nella somma tra numeri naturali l’overflow si verifica quando la somma dei bit più significativi genera un riporto

Pesi 7 6 5 4 3 2 1 0

Riporto 1 1 1 1 1

Addendo 1 0 1 1 1 1 1 0 1 + 125dec

Addendo 2 1 0 0 1 1 1 0 0 = 156dec

Somma 0 0 0 1 1 0 0 1 25dec !

overflow

1

risultato errato!

Riporto “perduto”

15

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

Numeri interi relativi in modulo e segno

• Necessità: nel computer il segno di un numero deve essere rappresentato in qualche modo con cifre binarie!

• Numeri binari interi relativi in modulo e segno§ Il primo bit a sinistra rappresenta il segno del numero (bit di segno), i

bit rimanenti rappresentano il valore• 0 per il segno positivo• 1 per il segno negativo

• Con n bit (n ³2) codifichiamo 2n numeri nell’intervallo (-2n-1, 2n-1)

• Esempi con n = 9 (8 bit + un bit per il segno)§ 000000000m&s = + 0 = 0dec

§ 000001000m&s = + 1 ´ 23 = 8dec

§ 100001000m&s = - 1 ´ 23 = -8dec

§ … e così via …

16

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

Osservazioni sulla rappresentazione m&s

• Il bit di segno è applicato al numero rappresentato, ma non fa propriamente parte del numero in quanto tale§ Il bit di segno non ha significato numerico

• Distaccando il bit di segno, i bit rimanenti rappresentano il valore assoluto del numero (in binario naturale)

• L’estensione del numero di bit della codifica si effettua aggiungendo/togliendo zeri dalla seconda cifra da sinistra (con le stesse regole dei numeri binari naturali)

• Inefficiente: due codifiche per lo 0 (+0 e -0)• Complessità di implementazione (sottrazione)

17

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

Lunghezza della rappresentazione m&s

• Quanti bit servono almeno per rappresentare in binario modulo e segno un dato valore espresso in notazione decimale?

• #bit = élog2 (valore+1)ù +1

• Esempio: élog2 (74dec+1) ù +1 = é6,2…ù+1 = 8 bit

18

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

• Somma di due numeri con stesso segno§ Si sommano i valori assoluti dei due numeri (sono due numeri naturali)§ Si aggiunge al risultato il segno dei due operandi

• Somma di due numeri con segno discorde§ Si effettua la sottrazione tra il valore assoluto più grande e quello più

piccolo (sono due numeri naturali)§ Si aggiunge al risultato il segno dell’operando con valore assoluto

maggiore

• La sottrazione funziona in modo simile§ Si inverte il segno del secondo operando§ Si esegue la somma secondo le regole mostrate sopra

Operazioni con numeri binari m&s

19

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

Rappresentazione binaria in complemento a 2 (C2)

• Numeri interi relativi in complemento a 2: il C2 è un sistema binario, ma il primo bit (quello a sinistra, il più significativo) ha peso negativo, mentre tutti gli altri bit hanno peso positivo

• La sequenza di bit:bn -1 bn-2 … b0

rappresenta in C2 il valore:bn -1 ´(-2n-1)+ bn-2´2n-2 + … + b0´20

• Il bit più a sinistra è ancora chiamato bit di segno

20

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

Esempi di numeri a 3 Bit in C2

• 000C2 = –0´22 + 0´21 + 0´20 = 0dec

• 001C2 = –0´22 + 0´21 + 1´20 = 1dec

• 010C2 = –0´22 + 1´21 + 0´20 = 2dec

• 011C2 = –0´22 + 1´21 + 1´20 = 2+1 = 3dec

• 100C2 = –1´22 + 0´21 + 0´20 = -4dec

• 101C2 = –1´22 + 0´21 + 1´20 = -4+1 = -3dec

• 110C2 = –1´22 + 1´21 + 0´20 = -4+2 = -2dec

• 111C2 = –1´22 + 1´21 + 1´20 = -4+2+1 = -1dec

N.B.: in base al bit di segno il numero zero è considerato positivo

21

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

Confronto tra interi relativi in m&s e in C2

• Se si utilizza 1 Byte: da –128 a 127dec. 127 m&s 01111111 C2 01111111

126 01111110 01111110... ... ...

2 00000010 000000101 00000001 00000001

+0 00000000 00000000-0 10000000 --1 10000001 11111111-2 10000010 11111110

... ... ...-126 11111110 10000010-127 11111111 10000001-128 - 10000000

22

L’intervallo rappresentato

dal complemento

a 2 è asimmetrico

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

Invertire un numero in C2

• L’inverso additivo (o opposto) di un numero rappresentato in C2 si ottiene:

1. Invertendo (negando) ogni bit del numero (0->1 e 1->0)2. Sommando 1 alla posizione meno significativa

• Esempio:§ 01011C2 = 1´23+1´21+1´20 = 8+2+1 = 11dec

§ 10100 + 1 = 10101C2 = -1´24+1´22 +1´20 = -16+4+1 = -11dec

• Con due applicazioni dell’algoritmo si riottiene il numero iniziale –(–A) = A § Lo zero in C2 è (correttamente) opposto di se stesso ( –0 = 0 )

23

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

Conversione da decimale a C2 (usando il minimo numero di bit)

• Se Ddec ³ 0:1. Convertire Ddec in binario naturale2. Aggiungere il bit 0 in testa alla sequenza di bit ottenuta§ Esempio: 154dec Þ 10011010bin Þ 010011010C2

• Se Ddec < 0:1. Trascurare il segno e converti Ddec in binario naturale2. Aggiungere il bit 0 in testa alla sequenza di bit ottenuta3. Calcolare l’opposto del numero così ottenuto, secondo la procedura

di inversione in C2

§ Esempio: -154dec Þ 154dec Þ 10011010bin ÞÞ 010011010bin Þ 101100101 + 1 Þ 101100110C2

• Con n bit (n ³2) codifichiamo 2n numeri nell’intervallo [-2n-1, 2n-1)

• Occorrono 9 bit sia per 154dec che per -154dec

24

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

Osservazioni sul C2

• Il segno è incorporato nel numero rappresentato in C2, non è semplicemente applicato (come in m&s)

• Si può eseguire l’estensione del numero di bit della codifica replicando il bit più a sinistra§ La riduzione si può effettuare fino a che non si trova una sequenza 10

o 01 poiché il primo bit rappresenterà il segno

• Il bit più significativo rivela il segno: 0 per numero positivo, 1 per numero negativo (il numero zero è considerato positivo), ma…

• Se il numero è negativo, NON si può distaccare il bit più significativo e dire che i bit rimanenti rappresentano il valore assoluto del numero

• Implementazione hardware della sottrazione è semplificata

25

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

Lunghezza della rappresentazione C2

• Quanti bit servono almeno per rappresentare in binario complemento a 2 un dato valore espresso in notazione decimale?

• Se valore ³ 0 allora #bit = élog2 (valore+1)ù +1• Se valore < 0 allora #bit = élog2 (abs(valore))ù +1

• Esempio: élog2 74decù+1 = é6,2…ù+1 = 8 bit

26

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

Operazioni con numeri in C2

• L’addizione di numeri in complemento a 2 è identico a quello dei numeri binari naturali (il bit di segno è elaborato come gli altri bit)

• Somma di due numeri a 8 bit:

• La sottrazione viene eseguita con l’operazione di somma:A – B = A + (– B)

Pesi 7 6 5 4 3 2 1 0

Riporto 1 1 1

Addendo 1 0 1 0 0 1 1 0 1 + 77dec

Addendo 2 1 0 0 1 1 1 0 0 = -100dec

Somma 1 1 1 0 1 0 0 1 -23dec

27

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

Pesi 7 6 5 4 3 2 1 0

Riporto 1 1 1 1

Addendo 1 0 1 0 0 1 1 0 1 + 77dec

Addendo 2 0 1 0 1 1 1 0 0 = 92dec

Somma 1 0 1 0 1 0 0 1 -87dec !

Overflow:risultato negativo!

overflow

risultato errato!

Operazioni con numeri in C2

nessunriporto

“perduto”

28

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

Rilevare l’overflow in C2

• Se gli addendi sono tra loro discordi (di segno diverso) non si verifica mai

• Se gli addendi sono tra loro concordi, si verifica se e solo se il risultato è discorde§ addendi positivi ma risultato negativo§ addendi negativi ma risultato positivo

29

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

Riporto e overflow in C2

• Si ha overflow quando il risultato corretto dell’addizione eccede il potere di rappresentazione dei bit a disposizione§ La definizione di overflow non cambia

• Nelle operazioni su numeri C2 l’overflow non ha alcuna relazione con il riporto

• Si può avere overflow senza “riporto perduto”§ Capita quando da due addendi positivi otteniamo un risultato

negativo, come nell’esempio precedente• Si può avere un “riporto perduto” senza overflow

§ Può essere un innocuo effetto collaterale§ Capita quando due addendi discordi generano un risultato positivo (si

provi a sommare +12 e -7)

30

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

Rappresentazione ottale ed esadecimale

• Ottale o in base otto (oct):§ Si usano solo le cifre 0-7

534oct = 5oct´8dec2 + 3oct´8dec

1 + 4oct´8dec0 = 348dec

• Esadecimale o in base sedici (hex):§ Si usano le cifre 0-9 e le lettere A-F per i valori 10-15

B7Fhex = Bhex´16dec2 + 7hex´16dec

1 + Fhex´16dec0 =

= 11dec´16dec2 + 7dec´16dec

1 + 15dec´16dec0 = 2943dec

• Entrambe queste basi sono facili da convertire in binario, e viceversa

• Sono due rappresentazioni comode per rappresentare in modo più compatto dati binari

31

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

Conversioni bin à hex

1. Si scompone da destra verso sinistra il numero binario in quadruplette (aggiungendo eventualmente 0 a sinistra per ottenere un numero di cifre multiplo di 4)

2. Si converte ciascun gruppo di cifre nell’equivalente numero esadecimale

• Es: 010011110101011011bin == 0001bin 0011bin 1101bin 0101bin 1011bin == 1hex 3hex Dhex 5hex Bhex == 13D5Bhex

• La conversione bin->oct funziona allo stesso modo, scomponendo in triplette

32

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

Conversioni hex à bin

• Ciascuna cifra esadecimale è convertita nell’equivalente cifra binaria ed le stringhe binarie risultanti vengono concatenate

• Esempio: A7B40Chex=Ahex 7hex Bhex 4hex 0hex Chex =

= 1010bin 0111bin 1011bin 0100bin 0000bin 1100bin == 101001111011010000001100bin

• La conversione oct->bin funziona allo stesso modo

33

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

Numeri frazionari

• I numeri frazionari compresi tra 0 e 1 possono essere rappresentati con la sequenza di bit

0,b - 1 b - 2 … b- n essendo bi Î {0, 1}che rappresenta in base 2 il valore:

b- 1´2-1 + b-2´2-2 + … + b - n´2 - n

• Esempio: 0,1011bin (in binario)0,1011bin = 1´2-1 + 0´2-2 + 1´2-3 + 1´2-4 = 1/2 + 1/8 + 1/16 = = 0,5 + 0,125 + 0,0625 = 0,6875dec

34

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

Numeri frazionari

• Algoritmo per convertire un numero n frazionario in base 10 in base 2:

1. Il risultato in base 2 è inizializzato a 0,2. Moltiplicare n per 23. La parte intera del risultato viene aggiunta come cifra meno

significativa del numero in base 24. Si torna al passo 2 considerando la parte frazionaria del risultato al

posto di n

• Terminazione dell’algoritmo§ Soltanto i numeri del tipo m/2n possono essere rappresentati con

un numero finito di cifre§ In alternativa ci si ferma quando il numero di cifre calcolate

costituisce un’approssimazione sufficiente

35

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

Numeri frazionari

• Esempio: convertire (0.587)10 in base 20.587 × 2 = 1.174 parte intera = 10.174 × 2 = 0.348 parte intera = 00.348 × 2 = 0.696 parte intera = 00.696 × 2 = 1.392 parte intera = 10.392 × 2 = 0.784 parte intera = 00.784 × 2 = 1.568 parte intera = 1...

• Il risultato (approssimato) è 0,100101

36

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

Numeri reali in virgola fissa

• Necessità: nel computer la virgola deve essere rappresentata in qualche modo con cifre binarie!

• Si può rappresentare un numero reale in virgola fissa (o fixedpoint) concatenando la rappresentazione della parte intera (in modulo e segno) con la parte frazionaria:

19,6875dec = 10011,1011 virgola fissa

poiché si ha:19dec = 10011bin e 0,6875dec = 0,1011bin

• La rappresentazione utilizza un numero fisso di bit per rappresentare la parte intera ed per quella frazionaria§ Nell’esempio 5 bit per la parte intera, 4 bit per quella frazionaria

37

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

Numeri reali in virgola fissa

• La sequenza di bit rappresentante un numero frazionarioconsta di due parti di lunghezza prefissata§ Il numero di bit a sinistra e a destra della virgola è stabilito a priori

(alcuni bit potrebbero restare nulli)

• È un sistema di rappresentazione semplice, ma poco flessibile, e può condurre a sprechi di bit

• Per rappresentare in virgola fissa numeri molto grandi (oppure molto precisi) occorrono molti bit

38

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

Numeri reali in virgola mobile

• La rappresentazione in virgola mobile (o floating point) è usata spesso in base 10 (si chiama notazione scientifica):

1,37 ´ 107 notazione scientifica per intendere 13.700.000dec

• La rappresentazione binaria in virgola mobile si basa sulla relazione

R virgola mobile = M ´ 2E

39

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

Numeri reali in virgola mobile

• I numeri in virgola mobile sono rappresentati comunemente con lo standard IEEE 754 (singola precisione su 32 bit o doppia precisione su 64 bit)

• Segno: 1 per numero negativo, 0 per numero positivo• All’esponente viene sommato 127 (es: 21 -> esponente=127+1)

§ Esponenti<127 rappresentano numeri nell’intervallo [0;1)§ Esponente>127 rappresenta i numeri maggiori di 1

• La mantissa è normalizzata cioè la virgola viene spostata per ottenere la forma 1,X. Perciò si salva solo X§ Tranne quando l’esponente è 0; in tal caso la mantissa è 0,X

40

MantissaEsponenteSegno

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

Numeri reali in virgola mobile

• Esponente in (0;255) -> v10= (-1)segno x 1,mantissa x 2(esponente-127)

• Esponente=0 -> v10= (-1)segno x 0,mantissa x 2(-126)

• Valori particolari:§ Esponente=255 e mantissa!=0 -> valore NaN§ Esponente=255, mantissa=0 e segno=0 -> valore +Inf§ Esponente=255, mantissa=0 e segno=1 -> valore –Inf§ Esponente=0, mantissa=0 e segno=0 -> valore +0§ Esponente=0, mantissa=0 e segno=1 -> valore –0

41

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

Caratteri

• I caratteri sono rappresentati con una codifica numerica• La più comune è la codifica ASCII (American Standard Code

for Information Interchange) che utilizza 8bit

42

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

Immagini

• Le immagini sono rappresentate come una matrice di pixel

• Ad ogni pixel è associata una codifica binaria del colore

43

Pixel

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

Immagini

• Assegnando un bit ad ogni pixel si possono rappresentare solo immagini in bianco e nero

• Per rappresentare immagini a diversi livelli di grigio o a colori: a ogni pixel è associata una sequenza di bit

• Nei monitor è utilizzato lo standard RGB§ Ogni colore è ottenuto mescolando tre diverse gradazioni dei colori

primari (rosso verde e blu)§ Per ogni pixel bisogna specificare quali sono i livelli dei tre colori

• Risoluzione: numero di pixel presenti sullo schermo (800×600, 1024×768, 1600×1200)

44

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

Nei computer …

• La rappresentazione delle informazioni dipende dall’architettura del computer e dal compilatore utilizzato

• Nel linguaggio C compilato per una moderna architettura:§ int: rappresentati in C2§ unsigned int: rappresentati in binario naturale§ short int, int e long int : esistono 3 possibili dimensioni per la

rappresentazione di un interosizeof(short int) <= sizeof(int) <= sizeof(long int)in genere int è a 32 bit

§ float: numeri reali in virgola mobile a singola precisione (32 bit)§ double: numeri reali in virgola mobile a doppia precisione (64 bit)§ char: ASCII (8 bit)

§ L’operatore sizeof(tipo_di_dato) restituisce la dimensione in numero di byte del tipo di dato o della variabile specificati

45

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

Calcolo dello spazio di memoria dati richiesto

• Il programma richiede uno spazio di memoria per i dati pari a§ 2 byte per i§ 2 byte per j§ 1 byte per c§ 4 byte per f

• Per un totale di 9 byte§ Assumendo che una

variabile int occupi 2 byte

#include <stdio.h>

void main() {

int i, j;

char c;

float f;

printf("Hello World");

}

46