Sei sulla pagina 1di 56

Rappresentazione dell'informazione

in un calcolatore
Informazioni:
Dati che, interpretati secondo regole predefinite, hanno un significato.
Ad esempio: testi, numeri interi e reali, immagini, suoni, etc.;

Come rappresentare informazioni nel calcolatore?


 uso di tecnologia digitale: all’interno della CPU le informazioni vengono
rappresentate da 2 possibili valori di tensione elettrica {Vhigh, Vlow}
 In generale, a seconda del tipo di dispositivo considerato, i valori zero ed
uno sono rappresentati:
da una tensione elettrica (alta, bassa);
da un differente stato di polarizzazione magnetica (positiva, negativa);
da luce e buio; etc.

Unita' di informazione nel calcolatore: bit.

Ogni informazione viene trasformata nel calcolatore in una sequenza di bit


(forma BINARIA), cioè in una sequenza di 0 e 1, p.e. 00011010
Codifica dei numeri
Noi utilizziamo Il sistema di numerazione arabico, introdotto in Europa
dagli arabi nel Medio Evo:
E` decimale (in base 10): rappresenta i numeri tramite sequenze di cifre che
vanno da 0 a 9 (dieci cifre).
E` posizionale: il peso attribuito ad ogni cifra e' funzione della posizione che
occupa. (Esistono anche sistemi additivi, in cui ogni unità e' rappresentata da
un unico simbolo o non posizionali come quello romano).

I sistemi posizionali consentono di rappresentare numeri grandi con un


numero limitato di cifre, e di svolgere su di essi calcoli più efficienti. Sono
caratterizzati da una base b e un alfabeto a.

Alfabeto (a): l’insieme delle cifre disponibili per esprimere i numeri; ogni
cifra ha un valore compreso tra 0 e (b-1). (Ad esempio, nella numerazione
decimale l’alfabeto e` a={0,1,2,3,4,5,6,7,8,9}).
Base (b): è la cardinalità dell’alfabeto (il numero di simboli che lo
compongono). Ad esempio, nel caso decimale, b=10.
Codifica dei Numeri Naturali
Dato un sistema di numerazione posizionale <a, b> con b=p e a={0,1,2,...p-
1}; sia anan-1...a1a0 la codifica di un numero naturale N in base p; allora il
valore di N, in base decimale è dato dalla formula:

Np = anpn+an-1pn-1+...a1p1+a0p0

o, in forma più compatta:


Np = ∑i=0,..n (ai . pi)

Con n cifre in base p e' possibile rappresentare pn numeri naturali diversi da 0


a pn-1 (i due limiti si ottengono sostituendo a tutti gli n coefficienti a i 0 oppure
p-1 rispettivamente). Infatti, il numero massimo si ottiene utilizzando la cifra
massima (p-1) per ogni posizione:

(p-1).pn-1 + (p-1). pn-2 +....(p-1) .p1+(p-1)=


= pn - pn-1 + pn-1 - pn-2 + pn-2 - ... - p + p - 1 = = pn - 1
Convertire un naturale in base 10 in base non
decimale

La formula:
Np = an . pn+an-1. pn-1+...a1.p1+a0

si può riscrivere come:

Np = a0 + p . (a1 + p . (...+p . (an-1 +an . p))..)

Eseguendo la divisione intera per p:

Np div p = (a1 + p . (... p . (an-1 +an . p))..)=Q1

Np mod p = a0 [resto della divisione intera]

Applichiamo la divisione intera per p sul risultato Q1 della divisione


precedente:
Q1 div p = (a2 + p . (...p . (an-1 +an . p))..)=Q2

Q1 mod p = a1 [resto della divisione intera]


Convertire un naturale in base 10 in base non
decimale

Ripetiamo il procedimento su Q2, Q3, etc. per ottenere le cifre rimanenti (a2,
a3, .. an).

In pratica, il procedimento da seguire è:

Sia N il numero.
1. Si divide N per la nuova base p; sia Q il quoziente ed R il
resto.
2. Si converte R nella corrispondente cifra della nuova base
p.
3. Si aggiunge la cifra così ottenuta a sinistra delle cifre
ottenute in precedenza.
4. Se Q=0, fine; Altrimenti poni N = Q e torna al passo 1.
Conversione binaria

Si vuole convertire un numero N (in base 10), nella corrispondente


rappresentazione in base 2.
 Applicando il procedimento visto, bisogna effettuare successive divisioni
per 2.
 Il risultato e' la sequenza di 0 e 1 ottenuti considerando i resti delle
divisioni dalla meno significativa alla più significativa.

Esempio: Convertire in forma binaria N10=331


Divisione Quoziente Resto (ai)
331 : 2 165 1
165 : 2 82 1
82 : 2 41 0
41 :2 20 1
20 : 2 10 0
10 : 2 5 0
5:2 2 1
2:2 1 0
1:2 0 1 quindi: (331)10 = (101001011)2
Esempi
1. Convertire in forma binaria (base p=2) N10=44
Divisione Quoziente Resto (ai)
44 : 2 22 0
22 : 2 11 0
11 : 2 5 1
5:2 2 1
2:2 1 0
1:2 0 1 quindi: (44)10 = (101100)2

2. Convertire in forma ottale (base p=8) N10=44


Divisione Quoziente Resto (ai)
44 : 8 5 4
5:8 0 5 quindi: (44)10 = (54)8

3. Convertire in forma esadecimale (base p=16) N10=44


Divisione Quoziente Resto (ai)
44 : 16 2 12 (C16)
2 : 16 0 2 quindi: (44)10 = (2C)16
Tabella Riassuntiva

Sistema di numerazione
Decimale Binario Ottale Esadecimale
0 0000 00 0
1 0001 01 1
2 0010 02 2
3 0011 03 3
4 0100 04 4
5 0101 05 5
6 0110 06 6
7 0111 07 7
8 1000 10 8
9 1001 11 9
10 1010 12 A
11 1011 13 B
12 1100 14 C
13 1101 15 D
14 1110 16 E
15 1111 17 F
Aritmetica Binaria: operazioni sui numeri naturali

Definizione delle operazioni aritmetiche


elementari
A B r/p riporto Somma prestito Diff.
0 0 0 0 0 0 0
0 1 0 0 1 1 1
1 0 0 0 1 0 1
1 1 0 1 0 0 0
0 0 1 0 1 1 1
0 1 1 1 0 1 0
1 0 1 1 0 0 0
1 1 1 1 1 1 1

(r/p esprime il riporto/prestito della colonna precedente)


Somma di due numeri binari naturali:

Viene eseguita incolonnando i numeri e sommando tra loro i bit incolonnati,


partendo dai meno significativi, in ordine di peso crescente.

 Per la somma di due numeri positivi di lunghezza K possono essere


necessari K+1 posti.
 Se sono disponibili solo K cifre si genera un errore di overflow (o
trabocco).

Esempio: (11011)2+(00110)2

11011 + (27)
00110 = (6)
--------
100001 (33)

Il bit più alto (bit di carry) corrisponde ad un bit del registro Program Status
Word (PSW).
Sottrazione di numeri binari naturali:

Viene eseguita incolonnando i numeri e sottraendo tra loro i bit incolonnati,


partendo dai meno significativi, in ordine di peso crescente.

Ipotesi: si suppone che si generi sempre un numero positivo

1100 - (12)
0011 = (3)
-----
1001 (9)
Codici per i Numeri Relativi

Consideriamo l’insieme dei numeri relativi (interi):

Z={-∞, ..., -1, 0, +1,... +∞}

Vogliamo rappresentare gli elementi di questo insieme in forma binaria.

Avendo sempre un numero limitato di bit, possiamo utilizzarne uno per la


rappresentazione del segno (+ o -).
Numeri relativi:
Rappresentazione con modulo e segno - 1
Il primo bit della rappresentazione del numero intero viene utilizzato come bit
di segno (in genere 0 positivo, 1 negativo). Gli altri bit indicano il modulo
(valore assoluto) del numero.

Ad esempio:
 parole di 5 bit: +5 = 00101
-10 = 11010

 parole a 16 bit: +13 = 0000000000001101


-13 = 1000000000001101
Rappresentazione con modulo e segno - 2
Abbiamo due rappresentazioni diverse per lo zero:
-0 = 10000
+0 = 00000

Quindi, tramite m cifre in base 2 e' possibile rappresentare 2 m-1 numeri


diversi, da -(2m-1 - 1) a +(2m-1 -1).

Ad esempio:
 m = 2 ==> posso rappresentare 22 -1 = 3 numeri:
Valore Binario Valore Decimale
00 +0
01 +1
10 -0
11 -1

 m = 3, da -(22 - 1)=-3 a +(22 - 1)=3

 m = 16, da -32767 a +32767

 m = 32, da -2147483647 a + 2147483647


Numeri relativi:
Rappresentazioni in complemento
In realtà il modo più diffuso di codificare i numeri relativi all’interno di un
calcolatore sono le rappresentazioni in complemento, perché questo consente
importanti economie nella realizzazione dei circuiti aritmetici.

Definizioni: Complementi di un numero X alla base r.


 Il complemento alla base rappresentato su N cifre è:

rN – X

La somma del numero e del suo complemento alla base su N cifre dà una
stringa di N cifre a zero (la N+1-ma cifra è a 1, ma si perde a sinistra).

 Il complemento alla base diminuita rappresentato su N cifre è:

(rN - 1) – X

e si ottiene anche complementando a (cioè, sottraendo da) r-1 ogni cifra


della rappresentazione su N cifre del numero.
Numeri relativi:
Rappresentazione in Complemento a 1

 I numeri positivi sono rappresentati dal proprio modulo con anteposto un


bit di segno pari a zero.

 I numeri negativi sono il complemento ad uno del corrispondente positivo,


segno compreso (il segno è quindi sempre negativo).

 Si hanno due rappresentazioni per lo zero.

 Esempio: +7 = 0111; -7 = 1000.


Numeri relativi:
Rappresentazione in Complemento a 2

I numeri positivi sono rappresentati dal proprio modulo con anteposto un bit
di segno pari a zero.

I numeri negativi sono il complemento a due del corrispondente positivo,


segno compreso (il segno è quindi sempre negativo).

Si ha una sola rappresentazioni per lo zero.

Il più piccolo numero rappresentabile non ha corrispondente positivo: su 5 bit


si rappresentano i numeri da -16 a +15.

 Esempio: +7 = 0111; -7 = 1001.


Aritmetica intera: somma di numeri relativi

Si usa la rappresentazione in complemento a due, sommando colonna per


colonna i numeri (compreso il bit di segno, ma ignorando i riporti su questo);

Si può verificare overflow solo se gli operandi hanno ugual segno (producendo
un risultato di segno opposto).

La differenza viene realizzata con una somma (questo è il vantaggio della


rappresentazione in complemento a due).

Esempi:

0 000110 (+6) 0 000110 (+6)


0 001000 (+8) 1 111000 ( -8)
0 001110 (+14) 1 111110 ( -2)

1 111010 ( -6) 1 111010 ( -6)


0 001000 (+8) 1 111000 ( -8)
(1) 0 000010 (+2) (1) 0 000010 (-14)
Moltiplicazione e divisione:
Il metodo più semplice è operare sui moduli con le regole per i numeri naturali
ed attribuire il segno come prodotto di quello dei fattori.

Operare in questo modo sulle rappresentazioni in complemento a due porta in


generale a risultati scorretti: occorre usare tecniche complesse.

Metodo dello shift: per definizione di sistema posizionale uno shift del numero
a sinistra (a destra) di N posizioni equivale a moltiplicare (dividere) per 2N.

Esempi:
Rappresentando in modulo e segno il segno viene sempre replicato (se si
scarica un 1 è overflow):
0010 X 2 = 0100; 1010 X 2 = 0100 (overflow)
0010 DIV 2 = 0001; 1010 DIV 2 = 1001.

Rappresentando in complemento a due si fa uno shift di tutti i bit, segno


compreso (se cambia si ha overflow):
0010 X 2 = 0100;
1101 X 2 = 1010;
0101 X 2 = 1010 (overflow).
Codici per numeri frazionari
Sono numeri reali compresi fra zero e 1. Sia:

α={0,1,2,...p-1} con b=p

Dato un numero frazionario N, la sua rappresentazione in base p è data da


una sequenza di cifre :
0,a-1 a-2 a-3 ... a-n dove a-i  α ,  i=0,..n.

Il valore di N e` dato dalla formula:

Np = a-1 . p-1+a-2 . p-2+...a-n.p-n

o, in forma più compatta:

Np = i=1,..n (a-i . p-i)

Ad esempio:
Base decimale: p=10, N10= 0,587 = 5 . 10-1 + 8 . 10-2 + 7 . 10-3.
Base binaria: p= 2, N2= 0,1011 = (1 . 2-1+0 . 2-2+1 . 2-3+1 . 2-4)10 =
(0,6975)10
Conversione di un numero decimale frazionario dalla
base p alla base 10 - 1
Sia:
Np = a-1 . p-1+a-2. p-2+...a-n.p-n

Moltiplico Np per p:

Np .p = a-1 +a-2. p-1+...a-1.p-n+1

Il risultato è un reale eventualmente >1:

Parte intera I1 = a-1


Parte frazionaria F1 = a-2 . p-1 +...+a-n . p-n+1 =

Applichiamo ancora la moltiplicazione per p sulla parte frazionaria F1 ottenuta


nella divisione precedente:
Parte intera I2 = a-2
Parte frazionaria F2 = a-3 . p-1 +...+a-n . p-n+2

Ripetiamo il procedimento su F3, F4, etc. per ottenere le cifre rimanenti (a-3,
a-4, .. an).
Conversione di un numero decimale frazionario dalla
base p alla base 10 - 2

In pratica, il procedimento da seguire è:

Sia N il numero frazionario.


1. Si moltiplica N per la nuova base; sia I la parte intera e F la parte
frazionaria.

2. Si converte I nella corrispondente cifra della nuova base.

3. Si aggiunge la cifra così ottenuta a destra delle cifre ottenute in


precedenza (la prima cifra immediatamente a destra della virgola).

4. Se F=0 (oppure si sono ottenute le cifre richieste) fine; Altrimenti poni


N = F e torna al passo 1.

5. Il risultato è la sequenza di zeri e uni ottenuti considerando le parti


intere delle moltiplicazioni dalla più significativa alla meno significativa.
Conversione binaria di numeri frazionari:
Esempi - 1

Convertire in base 2: N10=0,875:

Moltiplicazione Parte Frazionaria Parte Intera (a-i)


0,875 . 2 0,75 1 (a-1)
0,75 . 2 0,5 1 (a-2)
0,5 . 2 0 1 (a-3) quindi (0,875)10 = (0,111)2

Convertire in base 8: N10=0,875:

Moltiplicazione Parte Frazionaria Parte Intera (a-i)


0,875 . 8 0 7 quindi (0,875)10 = (0,7)8

Convertire in base 16: N10=0,875

Moltiplicazione Parte Frazionaria Parte Intera (a-i)


0,875 . 16 0 14 (E16) quindi (0,875)10 = (0,E)16
Conversione binaria di numeri frazionari:
Esempi - 2

Convertire in base 2: N10=0,4

Moltiplicazione Parte Frazionaria Parte Intera (a-i)


0,4 . 2 0,8 0 (a-1)
0,8 . 2 0,6 1 (a-2)
0,6 . 2 0,2 1 (a-3)
0,2 . 2 0,4 0 (a-4)
0,4 . 2 0,8 0 (a-5)
.......... ..... ........
____
0,4 in base 2 è periodico: (0,4)10=(0,011001100....)2=(0,0110)2
Rappresentazione di Numeri Reali

Consideriamo l’insieme R dei numeri reali.

Ogni elemento di R, in generale, può essere espresso come somma di un


intero con un numero frazionario.

In pratica, un numero reale è individuato univocamente da:


una parte intera I
una parte frazionaria F
Rappresentazione dei reali in virgola fissa
Un numero prefissato di cifre viene dedicato alla parte intera ed a quella
frazionaria (rappresentazione in virgola fissa). Quindi:

Si calcola la rappresentazione della parte intera nella base data con la


formula:
Np = an . pn+an-1. pn-1+...a1.p1+a0

Si calcola la rappresentazione della parte frazionaria nella base data (tenendo


conto del numero di cifre disponibili) con la formula:

Np = a-1 . p-1+a-2. p-2+.a-n.p-n

Si giustappongono le rappresentazioni:
<rappresentazione I> . <rappresentazione F>

Ad esempio, riservando 11 bit per la parte intera e 5 per quella frazionaria:

331,697510= (00101001011,10110)2

La precisione è variabile e può essere scarsa per numeri di valore prossimo


allo zero
Rappresentazione dei reali in virgola mobile - 1
Ad un numero reale r vengono associati due numeri:

m = mantissa
n = esponente (o caratteristica)

Mantissa: numero frazionario con segno.


Ha valore compreso nell’intervallo ]-1, +1[.

Mantissa normalizzata: ha prima cifra dopo la virgola diversa da 0.


Il valore assoluto della mantissa, in questo caso, ha
valore compreso nell’intervallo [1/p, 1[

Esponente: un intero con segno.

La mantissa e l’esponente sono legati dalla relazione:

r = m . bn

dove b e' un numero intero che indica una base utilizzata per la notazione
esponenziale (in generale, se p è la base del sistema di numerazione, p = b).
Rappresentazione di reali in virgola mobile – 2

Per ogni numero reale vengono utilizzati m bit. Ad esempio, supponiamo di


avere a disposizione 32 bit, di cui:
1 bit per il segno della mantissa;
1 bit per il segno dell'esponente;
8 bit per il valore assoluto dell'esponente;
22 bit per la mantissa.

Rappresentiamo in virgola mobile il numero r= 26,5:


r= 0,1101012 . 21012

esponente mantissa
0 | 0 | 00000101 | 1101010000000000000000

Rappresentazione in virgola mobile di r=0,3125:


r = 0,1012 . 2-12
esponente mantissa
0 | 1 | 00000001 | 1010000000000000000000
Precisione nella rappresentazione di reali
Si può, in generale, osservare che:

 Quanto maggiore è il numero di bit riservati alla mantissa tanto maggiore


e’ il numero di cifre significative che possono essere memorizzate
(precisione);

 Quanto maggiore è il numero di bit riservati all’ esponente tanto


maggiore è l’ordine di grandezza della cifra che può essere rappresentata.

Precisione:
è data dal numero di cifre in base 10 rappresentabili con la mantissa.

Ad esempio:
Se la mantissa è rappresentata da 20 bit, la precisione è di 6 cifre (max
valore rappresentabile dalla mantissa 220-1  106 = 1000000).

Le cifre meno significative della mantissa che non possono essere


rappresentate nel numero di bit a disposizione vengono eliminate mediante
troncamento od arrotondamento.
Troncamento e arrotondamento
Esempio:
r=102910 = 0,10000000101 . 211
con: 10 bit per la mantissa, 5 bit per l'esponente.

Rappresentazione:
 con troncamento: 0 01011 1000000010 (=1028);
 con arrotondamento: 0 01011 1000000011 (=1030).

Esempio:
r= 0,810 = 0,11001100110..…x 20 (periodico)
con: 10 bit per la mantissa, 5 bit per l'esponente.

Rappresentazione:

 con troncamento: 0 00000 1100110011 (~0,7998)


 con arrotondamento): 0 00000 1100110011 (~0,7998)
Valori massimi e minimi rappresentabili:

Dipendono dall'esponente e dal metodo di rappresentazione.

Se il valore assoluto dell'esponente e' rappresentato da 10 bit:

 il massimo numero reale e' (in valore assoluto): 1 . 21023 ~ 10307

 il minimo numero reale e' (in valore assoluto): 0,1 . 2-1023 ~ 0,5 . 10-307

Accuratezza della macchina


E’ il più piccolo numero che, aggiunto ad 1,0 produce un risultato diverso da
1,0. tipicamente se i bit della mantissa sono 24, è
0,000000000000000000000001 ´ 2 0=2-24
cioè circa 6 ´ 10 -8
Codifica dei caratteri
I caratteri di un testo vengono codificati tramite sequenze di bit, utilizzando
un codice di traduzione.

Ancora molto usato è il codice ASCII (American Standard Code for


Information Interchange). Utilizza 7 bit e rappresenta 128 caratteri (mancano,
ad esempio, i caratteri accentati, greci etc.)

Esempio:
0 e’ codificato come 04810 e 3016 (e 011 00002)
9 e’ codificato come 05710 e 3916
a e’ codificato come 09710 e 6116
z e’ codificato come 12210 e 7A16

Vengono inseriti in un byte per cui 1 bit viene normalmente ignorato. In


trasmissione funziona come bit di parità per individuare errori.
Il valore (0 o 1) del bit di parità è scelto in modo che la sequenza di 1 sia pari.

Ad esempio: 0 => 3016 => 0 011 00002

Il codice ASCII esteso (ISO 8859) utilizza invece 8 bit (256 caratteri).
Tabella dei Codici ASCII (Basic Latin)
0 NUL 1 SOH 2 STX 3 ETX 4 EOT 5 ENQ 6 ACK 7 BEL
8 BS 9 HT 10 NL 11 VT 12 NP 13 CR 14 SO 15 SI
16 DLE 17 DC1 18 DC2 19 DC3 20 DC4 21 NAK 22 SYN 23 ETB
24 CAN 25 EM 26 SUB 27 ESC 28 FS 29 GS 30 RS 31 US
32 SP 33 ! 34 " 35 # 36 $ 37 % 38 & 39 '
40 ( 41 ) 42 * 43 + 44 , 45 - 46 . 47 /
48 0 49 1 50 2 51 3 52 4 53 5 54 6 55 7
56 8 57 9 58 : 59 ; 60 < 61 = 62 > 63 ?
64 @ 65 A 66 B 67 C 68 D 69 E 70 F 71 G
72 H 73 I 74 J 75 K 76 L 77 M 78 N 79 O
80 P 81 Q 82 R 83 S 84 T 85 U 86 V 87 W
88 X 89 Y 90 Z 91 [ 92 \ 93 ] 94 ^ 95 _
96 ` 97 a 98 b 99 c 100 d 101 e 102 f 103 g
104 h 105 i 106 j 107 k 108 l 109 m 110 n 111 o
112 p 113 q 114 r 115 s 116 t 117 u 118 v 119 w
120 x 121 y 122 z 123 { 124 125 } 126 ~ 127 DEL
ISO 8859-1 e Windows-1252
Il codice ISO 8859-1
estende il codice ASCII con
ulteriori 128 posizioni, di
cui le prime 32 riservate a
caratteri di controllo non
stampabili. Le successive
(da 160 a 255) definiscono
segni di punteggiatura,
caratteri accentati e spe-
ciali delle lingue latine. Vi
sono altre pagine di codice
ISO 8859 (-2, -3...) per
altri gruppi linguistici.
Windows 1252 definisce
le posizioni da 128 a 159,
evidenziate, con caratteri
stampabili; è adottato dalle
versioni anglosassoni e
nord-europee di Windows
3.1, 95 e NT.
Unicode – 1

Il tentativo di standardizzazione dei codici fatto con le pagine di codice


definite dalle famiglie di standard ISO 8859-X si è rivelato insufficiente: con la
diffusione degli elaboratori si sono resi necessari caratteri per molti altri
linguaggi (cirillico, cinese, giapponese, coreano…) anche con più scritture
oppure ideografici (in cui una nuova parola richiede un nuovo simbolo:
ideogrammi HAN unificati cinesi e giapponesi). Inoltre la diffusione di internet
richiede che la interpretazione dei caratteri delle pagine web sia uniforme in
tutto il mondo.

Nel 1986 con una iniziativa congiunta di Apple e Xerox iniziò la ricerca di un
sistema di codifica universale. Seguì nel 1991 la costituzione del consorzio
Unicode (Unique, Universal, Uniform Coding System) con obiettivo la
definizione del nuovo codice per caratteri; la prima versione (1.0) del codice è
stata rilasciata nel 1991, l’attuale è la 4.0, equivalente alla ISO/IEC 10646.

Il codice Unicode soddisfa tutte le necessità di tutti i principali linguaggi oggi


scritti - occidentali, medio-orientali, asiatici – prevedendo un insieme di
simboli rappresentabili assai ampio che è detto UCS (Universal Character
Set), suddiviso per gruppi di linguaggi omogenei in alfabeti detti script,
ciascuno occupante un multiplo di 16 code point.
Unicode – 2

Unicode è universale, efficiente,


uniforme e non ambiguo.

I simboli includono punteggiatura,


caratteri modificatori (o diacritici:
accenti, dieresi, tilde,…), alfabetici e
ideografici per un totale (ver. 4.0) di
96447 caratteri.

La maggior parte dei simboli risiede


nell’area BMP (Basic Multilingual
Plane) che occupa i primi 64K code
point (posizioni) del codice; questa
inizia con i caratteri ASCII e termina
con circa 6400 posizioni libere per
consentire la definizione di caratteri
proprietari.
Unicode – 3

Lo UCS può essere codificato in tre modi alternativi:


o UTF-81. E’ una codifica molto compatta, orientata al byte: trasforma ogni
code point in un singolo byte se si tratta di un carattere ASCII (uno dei
primi 128 code point), altrimenti in una sequenza di fino a quattro byte.
Presenta l’importante vantaggio della compatibilità con il codice ASCII; ciò
implica che quasi tutto il software esistente può utilizzarla.
o UTF-16 è la codifica di default; ogni code point dell’area BMP è codificato
con una singola word di 16 bit, consentendo di codificare un insieme di
oltre 65000 simboli, sufficiente per le necessità tutte le attuali lingue
vive. Esiste un meccanismo di estensione che consente di allocare due
word per code point, ottenendo circa 1.000.000 di ulteriori code point
detti surrogati, sufficienti per gli script di tutte le lingue storiche.
o UTF-32 codifica ogni carattere con una singola double word di 32 bit.

In ogni caso, la rappresentazione di un code point richiede al più quattro byte.


Unicode tratta solo la semantica e la codifica dell’elemento di testo ma non la
sua rappresentazione grafica, detta glifo, che viene definita anche dal font,
dal corpo e dallo stile scelti.

1
UTF sta per UCS Trasformation Format
Il set di caratteri Windows Glyph List 4 (WGL4)

E’ il set di caratteri pan-europeo definito da Microsoft per le versioni attuali di


Windows (da 98 in poi)e Office (da 97 in poi).

E’ visibile attraverso l’applicazione “Mappa Caratteri” o scegliendo


Inserisci -->Simbolo dai menù di Word.

Contiene caratteri per i linguaggi europei occidentali e centrali (pagina di


codice 1252), orientali (1250) nonché gli alfabeti cirillico (1251),
greco (1253), turco (1254) e innumerevoli simboli prima disponibili solo
attraverso il font Monotype Symbol, per un totale di 652 caratteri che
seguono la codifica Unicode.
Rappresentazioni Binarie - 1
Altri codici per caratteri, ad esempio, sono EBCDIC (Extended Binary Coded
Decimal Interchange Code) (8 bit) per elaboratori IBM, etc. Riassumendo:
 100 come intero con n = 32 bit (4 bytes):
100 : 2 0
50 : 2 0
25 : 2 1
12 : 2 0
6:2 0
3:2 1
1:2 1 Rappresentazione: 00000000000000000000000001100100

-100 Rappresentazione: 11111111111111111111111110011100


 100 come reale in virgola mobile, 1 byte per l'esponente, 3 bytes per la
mantissa:
Binario: (100)10 = (1100100)2
Normalizzato: 0.1100100 . 27
Esponente: 7 = 00000111
Rappresentazione: 00000011110010000000000000000000
Il primo bit e' il segno. Il primo bit della parte frazionaria e' omesso
perché essendo normalizzata e' sempre 1.
Rappresentazioni Binarie - 2

 -100. reale in virgola mobile.


Rappresentazione: 10000011110010000000000000000000

 '100' come stringa di caratteri con codifica ASCII:


00110001 3116
00110000 3016
00110000 3016

 '-100' come stringa di caratteri con codifica ASCII


00101101 ....

 E’ importante osservare che lo stesso dato (sequenza di simboli) può


essere rappresentato nella macchina in più modi a seconda del
tipo di dato di cui si tratta.

 Ancora, alla stessa sequenza di bit all’interno della memoria della


macchina possono essere associati simboli diversi a seconda del
tipo di dato (e quindi di codifica) considerati.
Codifica di audio ed immagini - 1
Suono: variazione continua della pressione dell’aria in un punto dello spazio.

Immagine: variazione continua delle informazioni di luminosità (luminanza)


e di colore (crominanza) all’interno del nostro campo visivo.

Entrambi possono essere rappresentati con segnali elettrici di tipo analogico,


continuamente variabili in ampiezza e nel tempo.
Per poterli immagazzinare in un elaboratore occorre sottoporli a conversione
A/D (Analogico-Digitale), un primo procedimento di codifica in due passi:
1. Campionamento. Si considera il valore del segnale solo in istanti
predeterminati. Se gli istanti di osservazione sono abbastanza
ravvicinati fra loro, è possibile ricostruire esattamente il segnale
analogico originale dal segnale campionato (non si perde informazione).
Quanto ravvicinati è stabilito dal teorema del campionamento,
dovuto a Nyquist.
Codifica di audio ed immagini - 2

Questo asserisce che, per segnali limitati nella frequenza massima 1


(tutti i segnali del mondo reale di pratica utilità), il processo di
ricostruzione avviene esattamente se la frequenza di
campionamento fc del segnale è superiore al doppio della differenza
fra la massima e la minima frequenza contenute nel segnale analogico
da campionare (banda del segnale B):

fc  2B

2. Quantizzazione: si rappresenta l’ampiezza dei campioni del segnale


con un numero finito N di bit. Ciò equivale ad ammettere che il segnale
possa assumere solo un valore fra 2N possibili.

1
In base al teorema di Fourier, ogni grandezza periodica può essere rappresentata
come somma di più grandezze sinusoidali di ampiezze opportune e frequenza multipla
della frequenza fondamentale della grandezza da rappresentare.
Codifica di audio ed immagini - 3

La quantizzazione introduce un errore e non è reversibile.

Maggiore è il numero N di bit associati a ogni campione, minore è l’errore


e migliore è la rappresentazione della grandezza. La perdita di informazione
equivale alla sovrapposizione al segnale originale di un rumore di
quantizzazione, percepibile come fruscio nell’ascolto del suono ricostruito.
Codifica di audio ed immagini - 4

Migliorare la qualità richiede l’aumento di N: un aumento sia della


occupazione di memoria nella macchina che della velocità del flusso dati,
(bit/sec.) necessario per riprodurre in tempo reale un suono o un filmato.

Voce (telefonia digitale, banda 300 – 3400 Hz): fc di 8KHz con 8 bit per
campione (64Kbps - bit per secondo);

Musica (CD audio): fc di 44.1KHz su due canali con 16 bit per campione
(1,4 Mbps, 630 MB per una ora di registrazione).

Immagini: codifica molto più impegnativa, sia per la memoria occupata


da una immagine che per l’entità del flusso dati necessario per
rappresentare immagini in movimento.

Fotografia di bassa qualità (80-100 dpi): 1/8 Mbyte;


buona riproduzione in b/n (1200 dpi): 16 Mbyte.
Codifica delle immagini - 1

Si procede diversamente a seconda che si tratti di immagini del mondo reale


(fotografiche, pittoriche…) o costruite al calcolatore con primitive grafiche:
 Immagini bitmap. L’immagine viene divisa in una matrice di pixel (crasi
di picture element), ciascuno dei quali viene campionato e quantizzato,
codificandolo con uno o più bit.
Codifica delle immagini - 2

 Immagini vettoriali. Sono immagini astratte, costruite al calcolatore con


primitive grafiche di alto livello linee, archi, poligonali, colori di
riempimento…) che vengono codificate individualmente con un adatto
linguaggio di descrizione.
Codifica di immagini bitmap - 1

La codifica con un solo bit per pixel consente la rappresentazione di immagini


in bianco e nero; impiegando più bit è possibile codificare immagini con più
livelli di grigio od a colori.

La colorimetria spiega che ogni colore può essere ricostruito come


combinazione di almeno tre colori base (i colori primari) opportunamente
scelti. La loro scelta, teoricamente arbitraria in larga misura, è stata
standardizzata per motivi di efficacia, costo e praticità.
Codifica di immagini bitmap - 2

La combinazione può avvenire in due modi:

 Sintesi additiva: il colore viene ricostruito sommando le lunghezze d’onda


di tre colori primari; è una tecnica usata nei monitor e negli schermi LCD.
I tre colori primari comunemente usati sono rosso, verde e blu (modello
RGB), gli stessi cui è sensibile l’occhio umano.

 Sintesi sottrattiva: si sottraggono alla luce bianca tutte le lunghezze


d’onda dei colori primari, ciascuno preso con adeguata intensità; le
lunghezze d’onda rimanenti formano il colore voluto.

E’ usata nelle stampanti, dove la luce bianca è quella riflessa dal foglio,
mentre il filtraggio dei colori avviene ad opera dell’inchiostro colorato che
viene deposto.

Una triade di colori primari molto usata è ciano, Magenta, giallo (cui viene
aggiunto anche il nero, dando luogo al modello CMYK: la combinazione dei
tre colori primari dà un nero “sporco”).
Codifica di immagini bitmap - 3

In ogni caso per rappresentare un pixel occorre, per ciascuno dei suoi tre
colori primari, un valore corrispondente alla quantità di inchiostro da
depositare o all’intensità luminosa da emettere.

Una codifica molto comune prevede otto bit per ciascuno dei tre colori primari,
cioè una profondità di colore (numero di bit per pixel) di 24 bit.

Spesso si cerca di ridurre la quantità di memoria necessaria per una


immagine, a parità di qualità, considerando che il numero di colori in essa
effettivamente presenti è abbastanza piccolo.

Si usa allora la tecnica della palette (“tavolozza”), anteponendo alla


rappresentazione dell’immagine una tabella (la tavolozza) che contiene il
codice che lega i colori presenti nell’immagine (rappresentati ad esempio da
un numero di 7 bit per la presenza di al più 128 colori) con le loro
rappresentazioni RGB o CMY, ciascuna con adeguata profondità.
Memorizzazione di immagini bitmap - 1

Quantità di memoria necessaria: prodotto del numero dei suoi pixel per la
profondità di colore o il logaritmo binario del numero di livelli di grigio
adottati.

Il numero di pixel è conosciuto note le dimensioni dell’immagine e la sua


definizione (numero di pixel per unità di lunghezza).

Le immagini bitmap sono memorizzate in file di opportuno formato, alcuni dei


quali prevedono la compressione dei dati.
Memorizzazione di immagini bitmap - 2
Alcuni dei formati bitmap più comuni:

 TIFF (Tagged Image File Format). Contengono delle etichette (tag) che
specificano le proprietà dei file e dell’immagine. Immagini a colori con
profondità fino a 24 bit e compressione.

 GIF (Graphics Interchange format), supporta la compressione e può


immagazzinare più immagini.

 JFIF (Jpeg File Interchange Format), implementa la codifica JPEG (Joint


Photographers Expert Group), standard ISO che prevede compressione
dei dati, possibilità di pixel trasparenti e interlacciamento con costruzione
dell’immagine a righe alterne.

 BMP (BitMaP), tipico di Windows e OS/2, supporta immagini con


profondità di 1,4,8 o 24 bit e compressione.

 PCX (PC Paintbrush), ha caratteristiche analoghe a BMP.


Codifica di immagini vettoriali

Ogni figura geometrica è un elemento di informazione codificato


attraverso un nome (p.e. polyline per le poligonali, …) e alcuni parametri
(centro e raggio per un cerchio, …).

La visualizzazione avviene “disegnando” le primitive sul dispositivo grafico


(video, stampante, plotter…); caratteristiche di tali codifiche:

 Indipendenza dal dispositivo di visualizzazione: la rappresentazione


grafica è calcolata al momento della visualizzazione e la risoluzione del
dispositivo sarà sempre sfruttata al meglio.

 Possibilità di modifiche di alto livello: vengono mantenute le


informazioni per operare sugli elementi primitivi e le loro relazioni.

 Applicabilità limitata: una immagine presa da mondo reale non è in


generale scomponibile in elementi primitivi.

 Limiti nell’utilizzo: per visualizzare l’immagine occorre disporre del


software che l’ha generata o di un software compatibile.
Memorizzazione di immagini vettoriali
I formati grafici più diffusi sono:

 Postscript (Adobe), in due versioni:


o Level 1, sia immagini vettoriali che bitmap in bianco e nero.
o Level 2, rappresenta anche immagini a colori secondo i modelli
RGB, CYMK e CIE1. Supporta la compressione.

 PDF (Portable Document Format), può inglobare immagini postscript e


prevede funzioni aggiuntive.

 DXF (Drawing Exchange Format), usato da molti programmi CAD;


prevede la registrazione testuale dei vettori.

 IGES (Initial Graphics Exchange Specifications), rappresenta dati


geometrici e topologici tridimensionali associando informazioni agli
oggetti rappresentati.

1
Centre International d’Eclairage, standard di definizione del colore indipendente dalla
periferica; in genere usato per la calibrazione.
Codifica di sequenze sonore e filmati

Considerazioni:

Necessità di ridurre lo spazio per rappresentare un’informazione senza perdita


del contenuto informativo.

Codifiche che tengano conto della probabilità di occorrenza di un simbolo (ad


esempio, “.” nel codice Morse per il carattere più probabile “e”).

Tecniche di compressione, codificano in modo compatto sequenze ripetute di


simboli.

Con perdita di contenuto, fattore di compressione 15-20:1, senza perdita di


contenuto, fattore di compressione 2:1.
Codifica delle informazioni e fabbisogno di memoria:

Tipo di Memoria necessaria


informazione
Testi Alcuni Kbyte per
pagina
Immagini 1/8 - 16 Mbyte
Sequenze sonore 10 - 40 Kbyte per
sec.
Filmati 0.6 Mbyte per
secondo

Potrebbero piacerti anche