48
1 Università di Pavia - corso di Fondamenti di Informatica Rappresentazione dei numeri in virgola fissa Il numero complessivo di cifre significative dei numeri che possono essere rappresentate in un calcolatore è limitato dalla capacità di una cella di memoria (con k bit, in modulo e segno, si rappresentano i numeri compresi fra –2 k-1 +1 e 2 k-1 -1) Quando si utilizzano numeri in cui sia presente sia una parte intera, sia una decimale si può ricorrere alla rappresentazione detta in Virgola Fissa in cui si fissa la posizione che la virgola deve avere all’interno del numero da rappresentare Ciò equivale a stabilire a priori il numero di cifre da utilizzare sia per la parte intera, sia per quella decimale Per i numeri negativi si può utilizzare ancora la tecnica del complemento

113 Università di Pavia - corso di Fondamenti di Informatica Rappresentazione dei numeri in virgola fissa Il numero complessivo di cifre significative

Embed Size (px)

Citation preview

Page 1: 113 Università di Pavia - corso di Fondamenti di Informatica Rappresentazione dei numeri in virgola fissa Il numero complessivo di cifre significative

1Università di Pavia - corso di Fondamenti di Informatica

Rappresentazione dei numeri in virgola fissa

• Il numero complessivo di cifre significative dei numeri che possono

essere rappresentate in un calcolatore è limitato dalla capacità di una

cella di memoria (con k bit, in modulo e segno, si rappresentano i numeri

compresi fra –2k-1+1 e 2k-1-1)

• Quando si utilizzano numeri in cui sia presente sia una parte intera, sia

una decimale si può ricorrere alla rappresentazione detta in Virgola

Fissa in cui si fissa la posizione che la virgola deve avere all’interno del

numero da rappresentare

• Ciò equivale a stabilire a priori il numero di cifre da utilizzare sia per la

parte intera, sia per quella decimale

• Per i numeri negativi si può utilizzare ancora la tecnica del complemento

Page 2: 113 Università di Pavia - corso di Fondamenti di Informatica Rappresentazione dei numeri in virgola fissa Il numero complessivo di cifre significative

2Università di Pavia - corso di Fondamenti di Informatica

Rappresentazione dei numeri in virgola fissa

Esempio: memorizzare 72.6 con 12 bit, di cui 4 riservati alle cifre decimali

72 0b0

36 0b1

18 0b2

9 1b3

4 0b4

2 0b5

1 1b6

0 0b7

0.6

1.2 1 b-1

0.4 0 b-2

0.8 0 b-3

1.6 1 b-4

72.610 = 0100 1000 10012

Rappresentare -72.6: -72.610 = 1011 0111 01112

In pratica il numero è stato moltiplicato per 24, avendo stabilito di avere 4 cifre

decimali

Problema: ridotto intervallo di rappresentazione dei numeri e ridotta

precisione di rappresentazione

Page 3: 113 Università di Pavia - corso di Fondamenti di Informatica Rappresentazione dei numeri in virgola fissa Il numero complessivo di cifre significative

3Università di Pavia - corso di Fondamenti di Informatica

Rappresentazione normalizzata dei numeri reali

• Qualsiasi numero reale 0 può essere rappresentato in modo univoco in base b>1 nella forma:

0 1

0 1 ,0 ,con

1

signdZ

bdbsign

i

i

ii

• Questa rappresentazione equivale a:

d-1 d-2 … d0, d-1 d-2 … per >0

0, d-1 d-2 … per =0

0, 0 … 0 d--1 d--2 … per <0

• Se =0, la rappresentazione è semplicemente 0

• In pratica si deve fissare una variabilità finita per l’indice i

Page 4: 113 Università di Pavia - corso di Fondamenti di Informatica Rappresentazione dei numeri in virgola fissa Il numero complessivo di cifre significative

4Università di Pavia - corso di Fondamenti di Informatica

Rappresentazione normalizzata dei numeri reali

1758.37 = 0.175837 104

-0.001 = -0.1 10-2

1 = 0.1 101

5000 = 0.5 104

In generale qualunque numero A può essere rappresentato da:

1. Il segno di A (S= segno, con la convenzione: 0 = +, 1 = -);

2. Le cifre significative di A (M= mantissa) rappresentate in una forma normalizzata;

se n sono le cifre utilizzate e B è la base del sistema di numerazione, l’intervallo

di variabilità della mantissa è: B-n M < 1;

3. L’esponente (E) a cui bisogna elevare la base B per ottenere il fattore per cui

moltiplicare la mantissa per ottenere A

A = S 0.M x B E

Page 5: 113 Università di Pavia - corso di Fondamenti di Informatica Rappresentazione dei numeri in virgola fissa Il numero complessivo di cifre significative

5Università di Pavia - corso di Fondamenti di Informatica

Rappresentazione in virgola mobile

Per una rappresentazione effettiva si conviene di:

• eliminare i simboli ridondanti

• fissare la lunghezza della mantissa

• fissare la lunghezza dell’esponente

• utilizzare per l’esponente una convenzione che permetta di rappresentare numeri

positivi e negativi senza l’indicazione esplicita del segno (complemento alla base o

tecnica dell’eccesso, sommando una opportuna costante)

• disporre gli elementi rimasti (segno, esponente, mantissa) in un ordine

convenzionale

Quindi A viene rappresentato dalla sequenza:

S E M

Page 6: 113 Università di Pavia - corso di Fondamenti di Informatica Rappresentazione dei numeri in virgola fissa Il numero complessivo di cifre significative

6Università di Pavia - corso di Fondamenti di Informatica

Rappresentazione in virgola mobile

Esempi:

• in base 10: 1 cifra per il segno (0 = +, 1 = -), 2 cifre per l’esponente,

rappresentato in complemento, e 8 cifre per la mantissa

S E E M M M M M M M M

1758.37 0.175837 104 0 04 17583700

-0.001 -0.1 10-2 1 98 10000000

1 0.1 101 0 01 10000000

5000 0.5 104 0 04 50000000

-63517.8 -0.635178 105 1 05 63517800

-0.0000635178 -0.635178 10-4 1 96 63517800

Page 7: 113 Università di Pavia - corso di Fondamenti di Informatica Rappresentazione dei numeri in virgola fissa Il numero complessivo di cifre significative

7Università di Pavia - corso di Fondamenti di Informatica

Rappresentazione in virgola mobile

Esempi:

• in base 2: 1 bit per il segno (0 = +, 1 = -), 8 bit per l’esponente,

rappresentato in complemento e 23 bit per la mantissa

1001100011111000.0111011 0. 10011000111110000111011 216

0 00010000 10011000111110000111011

-0.0000000000101100110011111 -0. 101100110011111 2-10

1 11110110 10110011001111100000000

Cosa corrisponde al numero seguente rappresentato in virgola mobile?

11101101111110001111100000000000

-0. 111100011111 2-37

0.0000000000000000000000000000000000000111100011111

Page 8: 113 Università di Pavia - corso di Fondamenti di Informatica Rappresentazione dei numeri in virgola fissa Il numero complessivo di cifre significative

8Università di Pavia - corso di Fondamenti di Informatica

Formato dei dati numerici in virgola mobile

• Numeri reali in singola precisione: 32 bit (1 per il segno, 8 per

l’esponente, 23 per la mantissa); in doppia precisione: 64 (1, 11, 52)

• In singola precisione l’esponente varia quindi tra -128 e +127

• Si parla di dinamica per descrivere l’intervallo dei numeri

rappresentabili –2127 < N < 2127 (circa -1038< N < 1038)

• La mantissa di 23 bit permette di rappresentare numeri con circa 7

cifre decimali significative

• Per valori superiori a 1038 o inferiori a -1038 si parla di overflow

• Per valori inferiori al minimo numero positivo rappresentabile ( 0)

o superiori al massimo numero negativo rappresentabile si parla di

underflow

Page 9: 113 Università di Pavia - corso di Fondamenti di Informatica Rappresentazione dei numeri in virgola fissa Il numero complessivo di cifre significative

9Università di Pavia - corso di Fondamenti di Informatica

Formato dei dati numerici in virgola mobile

Passi per ottenere la rappresentazione binaria

• trasformazione in binario

• normalizzazione

• memorizzazione

Esempio: 75.125

75 1

37 1

18 0

9 1

4 0

2 0

1 1

0

0.125

0.250 0

0.500 0

1.000 1

75.12510 = 1001011.0012

1001011.001 0.1001011001 27

Quindi in singola precisione:

0 00000111 10010110010000000000000

Page 10: 113 Università di Pavia - corso di Fondamenti di Informatica Rappresentazione dei numeri in virgola fissa Il numero complessivo di cifre significative

10Università di Pavia - corso di Fondamenti di Informatica

Formato dei dati numerici in virgola mobile

Esempio: 0.0375

0.0375 0

0.0750 0

0.1500 0

0.3000 0

0.6000 0

1.2000 1

0.4000 0

0.8000 0

1.6000 1

210 10010000.00375.0

421001.010010000.0

Quindi in singola precisione:

0 11111100 10011001100110011001100

Page 11: 113 Università di Pavia - corso di Fondamenti di Informatica Rappresentazione dei numeri in virgola fissa Il numero complessivo di cifre significative

11Università di Pavia - corso di Fondamenti di Informatica

Operazioni tra numeri in Virgola Mobile

Operazioni di moltiplicazione e divisione:1) Le mantisse vengono moltiplicate o divise

2) Gli esponenti vengo sommati o sottratti

3) Se necessario, la mantissa viene rinormalizzata e l’esponente corretto

Operazioni di somma o sottrazione:1) L’esponente più piccolo viene reso uguale al più grande spostando la

mantissa verso destra del numero di cifre pari alla differenza tra gli esponenti (shift per ottenere un corretto incolonnamento)

2) Le mantisse vengono sommate o sottratte

3) Se necessario, la mantissa viene rinormalizzata e l’esponente corretto

A: 0,6502 x102 =

Shift: 0,006502 x104 +

B: 0,2347 x104 =

A+B: 0,241202 x104

NB Nello shift si potranno perdere alcune cifre meno significative, ma sono quelle di peso minore del numero più piccolo.

Nell’esempio le cifre in rosso verrebbero perse se si utilizzassero solo 4 cifre decimali per la mantissa

Page 12: 113 Università di Pavia - corso di Fondamenti di Informatica Rappresentazione dei numeri in virgola fissa Il numero complessivo di cifre significative

12Università di Pavia - corso di Fondamenti di Informatica

Standard IEEE 754

• Un numero reale 0 viene scritto in binario come 1.b1b2b3… 2e

• La mantissa è perciò variabile nell’intervallo 1 < 2

• Il numero viene memorizzato su 32 bit

– 1 bit di segno

– 8 bit di esponente

– 23 bit per la mantissa

• Poiché la prima cifra è sempre 1, questa cifra non viene memorizzata. Di fatto

la mantissa ha 24 cifre binarie, di cui la prima sottintesa

• L’esponente viene memorizzato sommando il valore costante 127 (notazione

eccesso 127)

Esempio: rappresentare 1.0

0 01111111 0000000 00000000 00000000

Page 13: 113 Università di Pavia - corso di Fondamenti di Informatica Rappresentazione dei numeri in virgola fissa Il numero complessivo di cifre significative

13Università di Pavia - corso di Fondamenti di Informatica

Esempi IEEE 754

• -1

1 01111111 0000000 00000000 00000000

• 2 = 1 21

0 10000000 0000000 00000000 00000000

• -3 = -1.1 21

1 10000000 1000000 00000000 00000000

• 0.5 = 1 2-1

0 01111110 0000000 00000000 00000000

• 0.666666

0 01111110 0101010 10101010 10101010

• 3.141593

0 10000000 1001001 00001111 11011100

Page 14: 113 Università di Pavia - corso di Fondamenti di Informatica Rappresentazione dei numeri in virgola fissa Il numero complessivo di cifre significative

14Università di Pavia - corso di Fondamenti di Informatica

Codifica di dati non numerici: definizioni

• I calcolatori lavorano soltanto con i numeri, ma devono poter trattare anche

altre entità: per questa ragione sono stati inventati i codici.

• Alfabeto è un insieme finito di simboli (caratteri) distinti

• Parola o Stringa è una sequenza finita di simboli

Esempi:

U={1} alfabeto unario; A={0, 1} alfabeto binario; B={A, B, C, …, Z}

alfabeto inglese; C={A, B, …, Z, 0, 1, …, 9} alfabeto alfanumerico

• Parola è una successione finita di caratteri di un alfabeto

1011001101 è una parola di A o di C

SFSJKGH è una parola di B o di C

SF120C è una parola di C

Page 15: 113 Università di Pavia - corso di Fondamenti di Informatica Rappresentazione dei numeri in virgola fissa Il numero complessivo di cifre significative

15Università di Pavia - corso di Fondamenti di Informatica

Alfabeto usato dai calcolatori

I calcolatori lavorano utilizzando due simboli:

– INTERRUTTORE: aperto/chiuso

– TRANSISTOR: conduce/non conduce

– LIVELLO DI TENSIONE: alto/basso

– RIFLETTIVITÀ DI UN’AREOLA: alta/bassa

– DOMINIO DI MAGNETIZZAZIONE:

I calcolatori utilizzano quindi una logica e un’aritmetica binaria

Ai due stati stabili di un dispositivo, ai due valori di una grandezza,

vengono associati convenzionalmente i simboli 0 e 1

Page 16: 113 Università di Pavia - corso di Fondamenti di Informatica Rappresentazione dei numeri in virgola fissa Il numero complessivo di cifre significative

16Università di Pavia - corso di Fondamenti di Informatica

Alfabeti usati dall’uomo

• { A, B, C, D, … ,Z }

• { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }

• { ; , . ! ? : ( ) ‘ “… }

• { Caratteri giapponesi }

• { Caratteri arabi }

• È necessario stabilire delle regole di corrispondenza, dette

CODIFICHE

• La codifica metterà in corrispondenza biunivoca ogni SIMBOLO

appartenente all’alfabeto più ricco con una STRINGA di simboli

appartenenti all’alfabeto più ridotto

Page 17: 113 Università di Pavia - corso di Fondamenti di Informatica Rappresentazione dei numeri in virgola fissa Il numero complessivo di cifre significative

17Università di Pavia - corso di Fondamenti di Informatica

Codifica

• Dato un insieme I di elementi qualsiasi, si dice codifica di I

mediante parole di un alfabeto A un procedimento che permette di

stabilire una corrispondenza biunivoca tra gli elementi di I e le

parole di un sottoinsieme Q dell’insieme delle parole di A.

Esempio: codifica di lettere tramite cifre decimali

A 01, B 02, C 03, D 04, . . . , Z 26

• Un codice binario è quindi la codifica dei simboli di un alfabeto

mediante stringhe di bit; se C è la cardinalità di (n. di elementi)

per il numero n di bit da utilizzare deve valere: C 2n . Ossia:

)(log2n C = M

Page 18: 113 Università di Pavia - corso di Fondamenti di Informatica Rappresentazione dei numeri in virgola fissa Il numero complessivo di cifre significative

18Università di Pavia - corso di Fondamenti di Informatica

Codici non ridondati e ridondanti

Se n = M il codice è non ridondante (usa il minimo numero di bit per codificare tutti i simboli di )

Se n > M il codice è ridondante (usa più bit del necessario per codificare tutti i simboli di )

Si definisce distanza di Hamming (H) di un codice:Il minimo numero di bit di cui differiscono due parole qualsiasi del

codice• Se n=M → H=1• Se c’è ridondanza H ≥ 1

Aggiungendo opportunamente la ridondanza alle parole si possono ottenere codici a rilevazione e/o a correzione di errore

• Si può dimostrare che per i codici a sola rilevazione:• N° di bit errati rilevati: R = H-1

• e che per i codici a correzione:• N° di bit errati corretti: C ≤ (H-1)/2• N° di bit errati rilevati: R = H-C-1

Page 19: 113 Università di Pavia - corso di Fondamenti di Informatica Rappresentazione dei numeri in virgola fissa Il numero complessivo di cifre significative

19Università di Pavia - corso di Fondamenti di Informatica

Codici Ridondanti a Rivelazione/Correzione

Sono codici con distanza di Hamming H > 1 e possono avere la caratteristica di rivelare o correggere uno o più bit errati

Parità:• È un codice con H = 2.• Si ottiene dal codice non ridondante aggiungendo 1 bit in

modo che il numero complessivo di bit uguali a “1” sia pari (parità pari) o dispari (parità dispari)

• Avendo H=2 può solo rilevare gli errori, e solo se questi accadono singolarmente o in un numero dispari nella stessa parola di codice

Page 20: 113 Università di Pavia - corso di Fondamenti di Informatica Rappresentazione dei numeri in virgola fissa Il numero complessivo di cifre significative

20Università di Pavia - corso di Fondamenti di Informatica

Codici di Hamming

• Sono codici ridondanti con H>2 e perciò con capacità di auto correzione.

• Il più noto e semplice ha H=3: dato un codice non ridondante di n bit,

vengono inseriti in particolari posizioni k bit di controllo.

• Perché possa essere corretto un errore (singolo) deve valere:

n ≤ 2k –k –1

• Corregge un bit in posizione arbitraria

• Rivela la presenza di un solo errore

• Funziona bene se gli errori sono distribuiti casualmente

Esempio: parola di 7 bit (n = 7)

Per creare un codice di Hamming con H=3 bisogna rispettare la relazione

precedente e quindi usare 4 bit di controllo aggiuntivi (k = 4).

Page 21: 113 Università di Pavia - corso di Fondamenti di Informatica Rappresentazione dei numeri in virgola fissa Il numero complessivo di cifre significative

21Università di Pavia - corso di Fondamenti di Informatica

Codici Ciclici

Usati nella trasmissione a distanza su linee rumorose, soprattutto se sono possibili errori a raffica.

Sono codici rivelatori di errore, ma non autocorrettori.

In casi di errore rivelato il messaggio deve essere ritrasmesso.

Un messaggio M di k bit da trasmettere viene trattato come un polinomio di grado k-1, i cui coefficienti sono i bit del messaggio.

Preso un altro polinomio G di grado r si arriva attraverso operazioni modulo 2 su M e G, ad un terzo polinomio T di grado t (con k<t≤k+r), divisibile per G.

I coefficienti di T costituiscono la stringa di bit da trasmettere.

In ricezione un algoritmo analogo divide T per G. Se il resto della divisione è ≠ 0 il messaggio deve essere ritrasmesso.

Page 22: 113 Università di Pavia - corso di Fondamenti di Informatica Rappresentazione dei numeri in virgola fissa Il numero complessivo di cifre significative

22Università di Pavia - corso di Fondamenti di Informatica

Codifica delle cifre decimali

Vi sono diverse codifiche delle cifre decimali

• Codice BCD (Binary Coded Decimal): ogni cifra decimale viene

codificata con 4 bit. È un codice pesato perché il valore di ogni cifra

viene ottenuto eseguendo una somma pesata delle quattro cifre

binarie che lo compongono

• Codice ad eccesso tre: è basato sul codice BCD. Ogni codifica si

ottiene sommando 3 alla codifica BCD. Non è un codice pesato. Per

passare da una cifra alla cifra corrispondente al complemento a 9

basta complementare le cifre binarie della sua codifica

• Codice 2421: i numeri indicano ordinatamente i pesi delle 4 cifre

binarie. Come per l’eccesso tre, le codifiche di una cifra e della cifra

corrispondente al complemento a 9 sono fra loro complementari

Page 23: 113 Università di Pavia - corso di Fondamenti di Informatica Rappresentazione dei numeri in virgola fissa Il numero complessivo di cifre significative

23Università di Pavia - corso di Fondamenti di Informatica

Codifica delle cifre decimali

BCD Eccesso 3 2421

0 0000 0011 0000

1 0001 0100 0001

2 0010 0101 0010

3 0011 0110 0011

4 0100 0111 0100

5 0101 1000 1011

6 0110 1001 1100

7 0111 1010 1101

8 1000 1011 1110

9 1001 1100 1111

• Sono tutti codici che lasciano 6 configurazioni inutilizzate delle 16 a

disposizione con 4 bit

Page 24: 113 Università di Pavia - corso di Fondamenti di Informatica Rappresentazione dei numeri in virgola fissa Il numero complessivo di cifre significative

24Università di Pavia - corso di Fondamenti di Informatica

• Per il modo in cui viene creato si dice che è un codice riflesso. Serve a

codificare un numero in modo che le stringhe di bit che rappresentano numeri

consecutivi differiscano per un solo bit. Il codice Gray elimina il problema di

transizioni spurie passando da una codifica alla successiva

• Dato un numero, si può passare dalla sua codifica binaria b=bm bm-1 … b1 b0 alla

codifica Gray g=gm gm-1 … g1 g0 nel modo seguente:

è il simbolo di somma modulo 2 (EXOR - or esclusivo)

Codice Gray

mibbg

bg

iii

mm

0 1

b2 b1 b0

0 0 0

0 0 1

0 1 0

0 1 1

1 0 0

1 0 1

1 1 0

1 1 1

g2 g1 g0

0

1

g2 g1 g0

0

1

1

0

g2 g1 g0

0

1

1 1

1 0

g2 g1 g0

0 0

0 1

1 1

1 0

g2 g1 g0

0 0

0 1

1 1

1 0

1 0

1 1

0 1

0 0

g2 g1 g0

0 0

0 1

1 1

1 0

1 1 0

1 1 1

1 0 1

1 0 0

g2 g1 g0

0 0 0

0 0 1

0 1 1

0 1 0

1 1 0

1 1 1

1 0 1

1 0 0

mibgb

gb

iii

mm

0 1

mentre il passaggio inverso è

Page 25: 113 Università di Pavia - corso di Fondamenti di Informatica Rappresentazione dei numeri in virgola fissa Il numero complessivo di cifre significative

25Università di Pavia - corso di Fondamenti di Informatica

Codifica di informazioni alfanumeriche

• Per convenzione, si definisce alfabeto esterno di un calcolatore l’insieme dei

caratteri che è in grado di leggere e stampare mediante i dispositivi di I/O.

Questo alfabeto comprende almeno 64 caratteri (esempio codice Field data):

– le 26 lettere dell’alfabeto inglese maiuscole

– le 10 cifre decimali

– 28 caratteri vari (spazio, segni di punteggiatura, etc.)

In genere si utilizzano codici a 7 o 8 bit

• EBCDIC (Extended Binary Coded Decimal Interchange Code): 8 bit.

Rappresenta caratteri alfanumerici e speciali. Personalizzato per le varie

nazionalità (necessita di conversioni e ormai obsoleto)

• UNICODE: rappresenta con 16 bit tutti i caratteri della lingua parlata

dall’uomo (usato da Java e adottato da HP, IBM, Microsoft, Oracle, …)

Page 26: 113 Università di Pavia - corso di Fondamenti di Informatica Rappresentazione dei numeri in virgola fissa Il numero complessivo di cifre significative

26Università di Pavia - corso di Fondamenti di Informatica

Codice ASCII

American Standard Code for Information Interchange Ne esistono due versioni:

• 7 bit → 128 simboli; in questo caso l’ottavo bit è usato a volte come ridondanza (H=2) per la rilevazione di un errore (bit di parità)

• 8 bit → 256 simboli (ASCII esteso); codifica anche lettere accentate e caratteri grafici; l’estensione non è standardizzata e quindi fra i 128 simboli aggiunti può succedere che alla stessa codifica corrispondano simboli diversi

È il codice più usato per la codifica dei caratteri alfanumerici (lettere e cifre) oltre che per simboli di interpunzione e vari. Ad esempio: . ; : , ( ) [ ] { } / \ < > = ? ! ~ | # $ % & * ^ - @ ecc.

Page 27: 113 Università di Pavia - corso di Fondamenti di Informatica Rappresentazione dei numeri in virgola fissa Il numero complessivo di cifre significative

27Università di Pavia - corso di Fondamenti di Informatica

Codice ASCII

Page 28: 113 Università di Pavia - corso di Fondamenti di Informatica Rappresentazione dei numeri in virgola fissa Il numero complessivo di cifre significative

28Università di Pavia - corso di Fondamenti di Informatica

Codifica delle immagini

• In un calcolatore tutto è discreto

• L’immagine è un insieme continuo di informazioni (luce, colore) in due

dimensioni

• Quando si memorizzano immagini pittoriche o fotografiche si scompone

artificiosamente l'immagine in una sequenza di elementi di informazione

codificati con sequenze binarie

Page 29: 113 Università di Pavia - corso di Fondamenti di Informatica Rappresentazione dei numeri in virgola fissa Il numero complessivo di cifre significative

29Università di Pavia - corso di Fondamenti di Informatica

Codifica bitmap di Immagini

• L'immagine viene suddivisa in un reticolo di punti detti pixel (picture

element)

• Ogni pixel viene codificato con una sequenza di bit

000000000000000000000000000000000000000000100000000000000000000010100000000000000000001000100000000000000000100000100000000000000010000000100000000000001000000000100000000000100000000000100000

La qualità dell'immagine dipende dal numero di pixel per unità di lunghezza e dal numero di bit utilizzati per codificare ogni pixel.

Page 30: 113 Università di Pavia - corso di Fondamenti di Informatica Rappresentazione dei numeri in virgola fissa Il numero complessivo di cifre significative

30Università di Pavia - corso di Fondamenti di Informatica

Codifica bitmap di Immagini

La soluzione di aumentare il numero di pixel non è possibile perché questo aumenterebbe lo spazio necessario per memorizzare una immagine (si richiederebbe una compressione)

Problema: Non è possibile ingrandire a piacimento un'immagine perché non si

aumenta il dettaglio, ma si distinguono i

singoli pixel.

Page 31: 113 Università di Pavia - corso di Fondamenti di Informatica Rappresentazione dei numeri in virgola fissa Il numero complessivo di cifre significative

31Università di Pavia - corso di Fondamenti di Informatica

Codifica dei pixel

Immagini in bianco e nero: raramente si usa un solo bit. Ogni pixel di

solito si codifica con 8 bit per rappresentare diversi livelli di grigio (28 =

256 livelli)

Immagini a colori: i colori vengono ottenuti tramite la combinazioni di

almeno 3 colori base, detti primari. La composizione può avvenire

tramite la tecnica di sintesi sottrattiva o additiva in funzione del tipo di

dispositivo utilizzato (stampante, monitor o televisore)

• Per codificare un pixel si devono codificare i tre colori primari (es.

RGB), la cui combinazione consente di ottenere il colore del pixel

stesso

• Per ciascun colore primario spesso si usano 8 bit e quindi in totale per

codificare ciascun pixel servono 24 bit

• Ciò consente di codificare 224 ~ 16 milioni di colori diversi

• Con profondità di colore si intende il numero di bit utilizzati per

codificare i pixel

Page 32: 113 Università di Pavia - corso di Fondamenti di Informatica Rappresentazione dei numeri in virgola fissa Il numero complessivo di cifre significative

32Università di Pavia - corso di Fondamenti di Informatica

Occupazione di memoria di un’immagine

L’occupazione di memoria di un’immagine dipende da:

definizione o risoluzione dell’immagine (intesa come il numero

di pixel per unità di lunghezza: dot per inch = DPI)

Numero dei colori (dipende a sua volta dal numero di bit usati

per codificarli: 8, 16, 24 bit)

Tipo immagine Definizione Colori Occupazione

Televisiva 720 x 625 256 (8 bit) ~ 440 kByte

Monitor di PC 1024 x 768 65.536 (16 bit) 1,5 MByte

Fotografica 15.000 x 10.000 16.000.000(24 bit)

~ 430 MByte

Page 33: 113 Università di Pavia - corso di Fondamenti di Informatica Rappresentazione dei numeri in virgola fissa Il numero complessivo di cifre significative

33Università di Pavia - corso di Fondamenti di Informatica

Formati di file bitmap

TIFF (Tagged Image File Format): Profondità fino a 24 bit e

vari metodi di compressione

GIF (Graphics Interchange Format): consente di memorizzare

più immagini in uno stesso file

JFIF (Jpeg File Interchange Format) e SPIFF implementano il

metodo di codifica JPEG (Joint Photographers Expert Group),

formato standard che usa due tipi di compressione molto

utilizzato su Internet. Prevede la tecnica di visualizzazione

interallacciata (l’immagine viene composta per righe alterne

per cui viene caricata velocemente, ma diventa più nitida man

mano che viene completata)

BMP (BitMaP) usata con Windows supporta immagini con

profondità 1, 4, 8 e 24 bit

Page 34: 113 Università di Pavia - corso di Fondamenti di Informatica Rappresentazione dei numeri in virgola fissa Il numero complessivo di cifre significative

34Università di Pavia - corso di Fondamenti di Informatica

Immagini vettoriali

Questo formato si usa in applicazioni di progettazione meccanica, architettonica, elettronica, e in tutte quelle applicazioni in cui l’immagine viene costruita con elementi di alto livello quali linee, cerchi, poligoni, archi, colori, ecc.

Al contrario delle immagini bitmap in cui l’elemento di informazione è il pixel, in quelle vettoriali gli elementi dell’immagine sono gli oggetti grafici che la compongono

circle 98 66 50polyline 0 48 88 152 88 48

Ogni oggetto è codificato attraverso un identificatore (es. polyline, circle, etc.) e alcuni parametri quali le coordinate del centro e la lunghezza del

raggio (per la circonferenza) o le coordinate dei vertici (per il poligono)

Page 35: 113 Università di Pavia - corso di Fondamenti di Informatica Rappresentazione dei numeri in virgola fissa Il numero complessivo di cifre significative

35Università di Pavia - corso di Fondamenti di Informatica

Formato vettoriale per le immagini

Vantaggi:

Indipendenza dal dispositivo di visualizzazione e dalla sua

risoluzione

Gli elementi grafici sono indipendenti l’uno dall’altro e si

possono elaborare distintamente

minore occupazione di memoria rispetto alla grafica bitmap

Svantaggi:

applicabilità limitata: un’immagine fotografica non si può

scomporre in elementi primitivi

limiti nell’utilizzo in quanto si possono manipolare immagini

vettoriali solo con il software utilizzato per crearle o

compatibile

Page 36: 113 Università di Pavia - corso di Fondamenti di Informatica Rappresentazione dei numeri in virgola fissa Il numero complessivo di cifre significative

36Università di Pavia - corso di Fondamenti di Informatica

Formati di file vettoriali

PostScript: incorporato in molte stampanti, si è evoluto nel

tempo e consente di rappresentare immagini vettoriali e

bitmap anche a colori con diverse tecniche di compressione.

Formati derivati del PostScript sono EPS e PDF

DXF (Drawing Interchange Format) usato da molti programmi

di disegno memorizza i vettori in formato testo. La versione

binaria DXB è più compatta ma meno diffusa

Page 37: 113 Università di Pavia - corso di Fondamenti di Informatica Rappresentazione dei numeri in virgola fissa Il numero complessivo di cifre significative

37Università di Pavia - corso di Fondamenti di Informatica

Rappresentazione di immagini in movimento

Immagini in movimento vengono rappresentate attraverso

sequenze di immagini fisse (frame) visualizzate ad una

frequenza sufficientemente alta da consentire all’occhio umano

di ricostruire il movimento (24, 25 o 30 immagini al secondo)

Lo standard multimediale per le immagini in movimento, MPEG,

codifica ciascun frame separatamente secondo lo standard

JPEG

Si utilizzano tecniche di compressione in quanto un minuto di

filmato a 25 fotogrammi al secondo richiederebbe uno spazio di

memorizzazione di 644 MByte (un CD contiene 680 MByte)

Page 38: 113 Università di Pavia - corso di Fondamenti di Informatica Rappresentazione dei numeri in virgola fissa Il numero complessivo di cifre significative

38Università di Pavia - corso di Fondamenti di Informatica

Algebra Booleana (George Boole (1815-1864))

• Il simbolo “::=“ significa “è definito / composto da”

• Il simbolo “|” significa “oppure”

• L’algebra di Boole è definita su due elementi (vero | falso, 0 | 1)

• Costante booleana ::= 1 | 0

• Operatore booleano ::= NOT | AND | OR

• Una variabile booleana può assumere solo uno dei due valori 0 o 1

Page 39: 113 Università di Pavia - corso di Fondamenti di Informatica Rappresentazione dei numeri in virgola fissa Il numero complessivo di cifre significative

39Università di Pavia - corso di Fondamenti di Informatica

Operatori Booleani

• NOT (simbolo ):

simbolo grafico

10 01

0 1

1 0

xx

Page 40: 113 Università di Pavia - corso di Fondamenti di Informatica Rappresentazione dei numeri in virgola fissa Il numero complessivo di cifre significative

40Università di Pavia - corso di Fondamenti di Informatica

Operatori Booleani

• AND (prodotto logico); simbolo * oppure •

1 * 1 = 1

1 * 0 = 0 * 1 = 0 * 0 = 0

simbolo grafico

x y x * y

0 0 0

0 1 0

1 0 0

1 1 1

Page 41: 113 Università di Pavia - corso di Fondamenti di Informatica Rappresentazione dei numeri in virgola fissa Il numero complessivo di cifre significative

41Università di Pavia - corso di Fondamenti di Informatica

Operatori Booleani

• OR (somma logica); simbolo +

0 + 0 = 0

1 + 0 = 0 + 1 = 1 + 1 = 1

simbolo grafico

x y x + y

0 0 0

0 1 1

1 0 1

1 1 1

Page 42: 113 Università di Pavia - corso di Fondamenti di Informatica Rappresentazione dei numeri in virgola fissa Il numero complessivo di cifre significative

42Università di Pavia - corso di Fondamenti di Informatica

Funzioni booleane o logiche

• Sulle variabili booleane può essere definita una funzione booleana o

logica F(x1, x2, …, xn) che per ogni n-pla xi assume valori 0 e 1

• Una particolare funzione logica F è definita quando ad essa è

assegnata una “tavola di verità”, una tabella in cui è specificato il

valore che assume F in corrispondenza di ogni combinazione delle

variabili x1, x2, …, xn

• Il numero di combinazioni di n variabili è 2n, cioè la tavola della

verità è costituita da 2n righe

• Nell’algebra di Boole vale il teorema di dualità che dice:

Ogni identità e ogni proprietà resta valida se si scambiano tra loro

gli elementi 0 e 1 e gli operatori AND e OR

• Una espressione è duale di un’altra se ottenuta scambiando AND

con OR e 0 con 1. Se un teorema è vero, anche il suo duale è vero

Page 43: 113 Università di Pavia - corso di Fondamenti di Informatica Rappresentazione dei numeri in virgola fissa Il numero complessivo di cifre significative

43Università di Pavia - corso di Fondamenti di Informatica

Proprietà dell’algebra booleana

0

1

00

xx

xxx

xx

x

1

0

11

xx

xxx

xx

x

xx

yxyx

yxyxx

xyxx

zxyxzyx

zyxzyx

xyyx

)(

Prop. commutativa

Prop. associativa

Prop. Distributiva

Prop.assorbimento

De Morgan

Duale

yxyx

yxyxx

xyxx

zxyxzyx

zyxzyx

xyyx

)(

Idempotenza

Complementazione

{

Page 44: 113 Università di Pavia - corso di Fondamenti di Informatica Rappresentazione dei numeri in virgola fissa Il numero complessivo di cifre significative

44Università di Pavia - corso di Fondamenti di Informatica

Operatori Universali

NAND (/) = negazione dell’AND

1 / 1 = 0

1 / 0 = 0 / 1 = 0 / 0 = 1

simbolo grafico

x y x / y

0 0 1

0 1 1

1 0 1

1 1 0

NAND e NOR sono detti universali perché possono da soli realizzare i tre operatori fondamentali NOT, AND e OR

NOR ( ) = negazione dell’OR

0 0 = 1

1 0 = 0 1 = 1 1 = 0

simbolo grafico

x y x y

0 0 1

0 1 0

1 0 0

1 1 0

Page 45: 113 Università di Pavia - corso di Fondamenti di Informatica Rappresentazione dei numeri in virgola fissa Il numero complessivo di cifre significative

45Università di Pavia - corso di Fondamenti di Informatica

Operatori Universali

yxyxyxyx

yxyxyxyx

xxxx

0

0

yxyxyxyx

yxyxyxyx

xxxx

1

1

Solo NANDSolo NOR

Not

Or

And

yxyx

yxyx

xxx

zyxzyx

xx

x

)()(

0

01

Proprietà:

yxyx

yxyx

xxx

zyxzyx

xx

x

/

/

/

/)/()//(

1/

10/

Not

And

Or

Page 46: 113 Università di Pavia - corso di Fondamenti di Informatica Rappresentazione dei numeri in virgola fissa Il numero complessivo di cifre significative

46Università di Pavia - corso di Fondamenti di Informatica

Operatori Universali

• Realizzazione tramite NAND NOR

NOT

OR

AND

x x x x

x x

y y

yx yx yx yx

yx yx yx

x x

y y

yx

Page 47: 113 Università di Pavia - corso di Fondamenti di Informatica Rappresentazione dei numeri in virgola fissa Il numero complessivo di cifre significative

47Università di Pavia - corso di Fondamenti di Informatica

Operatore OR-esclusivo (EXOR)

• L’operatore EXclusive-OR o EXOR è anche detto sommatore modulo 2.

Il simbolo grafico è

• Può essere ricavato tramite i 3 operatori elementari:

x y x y

0 0 0

0 1 1

1 0 1

1 1 0

y xyxyxyxf ,

Page 48: 113 Università di Pavia - corso di Fondamenti di Informatica Rappresentazione dei numeri in virgola fissa Il numero complessivo di cifre significative

48Università di Pavia - corso di Fondamenti di Informatica

Operatore OR-esclusivo (EXOR)

• L’exor è anche detto funzione DISPARITÀ, perché è vero solo quando un

numero dispari dei suoi argomenti è vero

• Proprietà:

aassociativ

acommutativ

1

0

1

0

zyxzyx

xyyx

xx

xx

xx

xx