informatica b ingegneria elettrica · • come vengono gestite le informazioni in un ... • la...
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