...

Sistemi di numerazione e codifica dell`informazione

by user

on
Category: Documents
13

views

Report

Comments

Transcript

Sistemi di numerazione e codifica dell`informazione
Sistemi di Numerazione
– Tutti i sistemi di numerazione sono fondati
sullo stesso principio:
• la “base” (b) è un numero intero maggiore di 1;
• la base corrisponde al numero di diversi simboli
che si adoperano;
• il numero è costituito da una sequenza di simboli
(cifre); la posizione della cifra rappresenta la
potenza della base (a partire da 0, da destra
verso sinistra);
• il simbolo della cifra rappresenta il fattore che
moltiplica la potenza della base;
• il valore del numero è costituito dalla somma dei
vari termini;
– Ad esempio, nel sistema decimale, 123
significa: 1*10^2 + 2*10^1 + 3*10^0
– Nel sistema decimale la base è 10, e quindi
vi sono 10 simboli, ovvero le cifre da 0 a 9.
– Il sistema decimale si è imposto per il fatto
che si impara a contare con le dita, e
l’uomo ha dieci dita.
1
Sistema Binario
– Il sistema binario è un sistema di
numerazione a base 2; vi sono quindi solo
due simboli: 0 e 1;
– Il sistema binario è il più semplice possibile
– Il sistema binario si presta particolarmente
al calcolo automatico, in quanto:
• il dispositivo di calcolo, al livello più elementare,
deve tenere conto di 2 soli “stati” o possibilità
(On/Off, Aperto/Chiuso), riducendo le possibilità
di errore
• Qualsiasi altro sistema dovrebbe distinguere tra
diversi “livelli”.
– I numeri rappresentati in forma binaria
sono ovviamente più lunghi (da 3 a 4 volte)
di quelli rappresentati in forma decimale:
• ciò che si guadagna in semplicità ed efficienza lo
si perde in compattezza;
• nel campo dell’automazione questo scambio è
quasi sempre vantaggioso.
2
Sistema binario: esempi
• Esempio dei primi numeri in forma
binaria:
0
1
2
3
4
5
6
7
8
9
10
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
• Esempio di decodifica di un numero
binario:
– Da binario a decimale:
• 1011011: sono 7 cifre;
• si parte (da sinistra) con la potenza 6:
• 1*2^6 + 0*2^5 + 1*2^4 + 1*2^3 + 0*2^2 + 1*2^1 +
1*2^0 = 64 + 16 + 8 + 2 + 1 = 91
3
Il sistema ottale ed
esadecimale
– I numeri binari non sono pratici per l’uso
umano: sono difficili da leggere e troppo
lunghi.
• Ma in certi casi è necessario capire cosa avviene
esattamente dentro un computer, e quindi si
devono trattare dei numeri binari.
• Per migliorare la leggibilità, si raggruppano i
numeri binari a gruppi di 3 o 4 cifre binarie
(sempre a partire da destra).
• Ad un gruppo di 3 cifre corrispondono 2^3 = 8
combinazioni; questo equivale ad un sistema di
numerazione a base 8, detto anche sistema
ottale.
• Ad un gruppo di 4 cifre corrispondono 2^4 = 16
combinazioni; questo equivale ad un sistema di
numerazione a base 16, detto anche sistema
esadecimale.
– Nel sistema ottale bastano 8 cifre
• per cui si usano le prime 8 cifre del sistema
decimale, ovvero le cifre 0,1,2,3,4,5,6,7.
– Nel sistema esadecimale ne occorrono 16:
• si è convenuto di usare le 10 cifre del sistema
decimale (da 0 a 9), più le prime 6 lettere
dell’alfabeto (da A, che rappresenta 10, ad F, che
rappresenta 15).
4
Il sistema ottale
• Per passare da binario ad ottale:
– si divide il numero in triplette, a partire da
destra;
• se il numero di cifre binarie non è multiplo di tre,
l’ultima tripletta sulla sinistra conterrà solo una o
due cifre: in tal caso si aggiungono degli zeri a
sinistra fino a costituire una tripletta completa;
• ad esempio, 1011011 diventa (001)(011)(011)
– si sostituisce ad ogni tripletta la
corrispondente cifra ottale, secondo lo
schema:
000
001
010
011
100
101
110
111
==>
==>
==>
==>
==>
==>
==>
==>
0
1
2
3
4
5
6
7
• Nell’esempio precedente: 1011011 diventa 133
• Il sistema ottale è molto comodo
perché usa le stesse cifre del
decimale, ma:
• è’ ormai usato raramente, perché i moderni
computer sono basati su bytes di 8 bit, che non
sono multipli di 3
5
Il sistema esadecimale
• Per passare da binario ad
esadecimale:
– si divide il numero in gruppi di 4 cifre, a
partire da destra;
• se il numero di cifre binarie non è multiplo di
quattro, l’ultima gruppo sulla sinistra conterrà un
numero di cifre inferiore: in tal caso si aggiungono
degli zeri a sinistra fino a costituire un gruppo
completo di 4 cifre;
• ad esempio, 1011011 diventa (0101)(1011)
– si sostituisce ad ogni gruppo di 4 cifre la
corrispondente cifra esadecimale, secondo
lo schema:
0000
0001
0010
0011
0100
0101
0110
0111
==>
==>
==>
==>
==>
==>
==>
==>
0
1
2
3
4
5
6
7
1000
1001
1010
1011
1100
1101
1110
1111
==>
==>
==>
==>
==>
==>
==>
==>
8
9
A
B
C
D
E
F
• Nell’esempio precedente: 1011011 diventa 5B
• Il sistema esadecimale è ormai
adottato universalmente.
6
Bit e Byte
• Bit
– Il bit (binary digit) è l’equivalente di una
cifra binaria: 0 oppure 1.
• Il bit sta alla base del funzionamento dei
computer (di tutti i computer, dall’ENIAC del 1946
all’ultimo Pentium Pro): in altri termini, i circuiti
elementari eseguono esclusivamente operazioni
su singoli bit.
• Tuttavia il bit è una quantità troppo piccola da
trattare isolatamente: per motivi di efficienza e di
praticità i bit sono sempre trattati a gruppi.
• I gruppi di bit sono chiamati byte e word.
• Byte
– Il byte è la quantità più piccola di
informazione effettivamente trattata dal
computer
• I primi computer utilizzavano byte da 6 bit, che
potevano essere comodamente rappresentati da
2 cifre ottali
• E’ ormai universalmente diffuso l’utilizzo del byte
come pacchetto di 8 bit, per cui i due termini sono
praticamente sinonimi.
• In francese si dice octet
7
Byte e Word
– 1 byte = 8 bit = 2 cifre esadecimali
– Un byte di 8 bit può contenere 2^8 = 256
diverse combinazioni di cifre binarie.
– Cosa può rappresentare un byte?
• Un numero intero positivo compreso tra 0 e 255;
• oppure un numero intero relativo compreso tra 128 e +127;
• un carattere
– con qualche approssimazione, come si vedrà più
avanti: vi sono diversi tipi di codifica
(corrispondenze) tra byte e caratteri, e per alcuni
alfabeti non basta un solo byte…
• in generale, un “atomo” di informazione di
qualsiasi genere (numerica, grafica, suono, video)
secondo una particolare codifica.
– Un byte rimane una quantità troppo piccola
per gran parte degli usi
• I circuiti dei computer sono progettati per trattare
contemporaneamente (in parallelo) pacchetti di
due o più byte, chiamati comunemente word.
8
Word
• Word
– Corrisponde alla quantità di bit trattata
contemporaneamente dal processore
– Un word (parola) è un multiplo del byte:
• la dimensione effettiva dipende dal tipo di
processore;
• i processori per Pc più antichi (Intel 8088)
usavano word di 1 byte, ovvero 8 bit;
• la generazione successiva (Intel 80286) usava
word di 2 byte, ovvero 16 bit;
• gran parte dei processori esistenti usano word di
4 byte (32 bit);
• un numero ancora limitato di processori di fascia
alta usa word di 8 byte (64 bit).
• In passato alcune macchine (CDC) usavano word
di 60 bit (10 byte da 6 bit)
9
Byte come unità di misura
– Il byte è l’unità di misura universale nel
mondo informatico
• Viene usata per misurare le dimensioni delle
memorie e di periferiche di ogni genere (dischi
rigidi, dischetti, nastri, CD…).
• I multipli del byte sono espressi come potenze di
1000, come nel sistema metrico decimale
• In realtà le potenze di 10 non sono comode in
campo informatico, che è basato sulla
numerazione binaria e sulle potenze di 2.
• Un compromesso è stato trovato partendo dal
fatto che 2^10 = 1024 è circa 1000, 2^20 =
1.048.576 è circa 1.000.000, e così via.
– Kilobyte (circa mille byte)
• è abbreviato in KB o “Kappa”; 1 KB = 2^10 =
1024 byte, circa 10^3.
– Megabyte (circa un milione di byte)
• è abbreviato in MB o “Mega”; 1 MB = 2^20 =
1.048.576 byte, circa 10^6.
– Gigabyte (circa un miliardo di byte)
• è abbreviato in GB o “Giga”; 1 GB = 2^30 =
1.073.741.824, circa 10^9.
– Terabyte (circa 1000 miliardi di byte)
• è abbreviato in TB o “Tera”; 1 TB = 2^40 =
1.099.511.627.776, circa 10^12.
10
Alcuni ordini di grandezza
• Una cartella dattiloscritta: 2 KB
• Una pagina di monitor in B/N, in modo testo (25
righe * 80 colonne): 2KB
• Una pagina di libro, solo testo: 6-8 KB
• Un libro (manuale di computer), solo testo: 5 M
• Una pagina di monitor a colori, a media
risoluzione (600*800*3 byte): 1,5 MB
• Una immagine (un quarto di pagina), ad alta
risoluzione, non compressa: 600 K.
• Idem, compressa (GIF o JPEG): 60-100KB
• 1 enciclopedia (testo e immagini compresse):
circa 1 GB.
• 1 ora di musica, non compressa: 650 MB
• 1 ora di musica, compressa (MP3): 60 MB
• 2 ore di film (DVD): 4,7 GB
• 2 ore di film, compressi (DIVX): 700-800 MB
11
Caratteri
– La prima codifica dei caratteri (BCD, binary
coded decimal) usava 6 bit per carattere
(64 combinazioni)
• vi erano solo le maiuscole e un po’ di
punteggiatura.
– Il primo standard ASCII (American
Standard Code for Information
Interchange), del 1968, usa 7 bit (128
combinazioni)
• viene introdotta la distinzione tra maiuscole e
minuscole e una gamma più completa di segni e
punteggiatura; non vi sono caratteri accentati;
• lo standard ASCII riserva i primi 32 codici a
caratteri “speciali” per il controllo della
trasmissione.
– IBM introduce EBCDIC (Extended BinaryCoded Decimal Interchange Code), una
codifica estesa a 8 bit (256 combinazioni)
• la codifica e l’ordinamento dei caratteri sono
completamente diversi da quelli ASCII;
• rimane confinata in ambito IBM
12
Il codice ASCII
– Con l’avvento del DOS e dei primi PC
viene introdotto un “ASCII esteso” a 8 bit
(256 combinazioni).
• I primi 128 caratteri coincidono con l’ASCII
standard;
• gli altri 128 possono variare a seconda della
versione nazionale, e comprendono caratteri
grafici e caratteri accentati.
– A metà degli anni ‘80 la ISO (International
Standard Organization) introduce nuovi tipi
di estensioni ASCII (ISO 8859)
• 6 set di caratteri “Latin” (Latin 1 corrisponde
all’Europa occidentale, 2 Est, 3 Sud, 4 Nord, 5
Turco, 6 Nordico), più Greco, Cirillico, Arabo ed
Ebraico;
• questo standard non comprende più i caratteri
grafici;
• Latin 1 è lo standard usato da Windows e HTML
• Verrà probabilmente introdotto un Latin 0 con il
simbolo dell’euro.
– L’ultimo standard è UNICODE, che usa 16
bit (65535 combinazioni).
• UNICODE consente di rappresentare i caratteri di
24 lingue, comprese quelle orientali.
13
Esempi di ASCII
• Caratteri di controllo
– Vanno da 0 a 31; ad esempio:
• 7
• 8
• 9
Bell
Backspace
Tab
• Cifre numeriche
– Da 48 a 57 (0x30 - 0x3f)
• 48
• 57
Zero
Nove
• Caratteri maiuscoli
– Da 65 a 90 (0x41 - 0x5a)
• 65
• 90
A
Z
• Caratteri minuscoli
– Da 97 a 122 (0x61 - 0x7a)
• 97
• 122
a
z
• Simboli vari
– Tutti gli altri
• 43
• 58
+
:
14
Rappresentazione di numeri
• Valori booleani
• Falso è sempre rappresentato come 0
• Vero è sempre rappresentato come diverso da 0
(in genere, 1)
• Numeri Interi
• Il primo bit è usato per il segno
• I numeri negativi sono rappresentati come
“complemento a 2”
– Interi di 1 byte
• da -128 a +127
– Interi di 2 byte
• da -32768 a +32767
– Interi di 4 byte
• da -2147483648 a 2147483647
15
Numeri Floating Point
• Reali (Floating Point)
• Possono essere di 32, 64, 128 bit.
• Vi sono diverse codifiche, ma il criterio è sempre
lo stesso.
• La codifica più diffusa è IEEE (Institute of
Electrical and Electronical Engineers).
• Il numero è il prodotto di una mantissa per una
base elevata ad un esponente;
– in IEEE la base è 2:
– numero = frazione * 2 ^ (esponente - bias)
– la frazione è normalizzata in modo che il primo bit
sia sempre 1
– il bias serve ad evitare l’uso di esponenti negativi
– 1 bit è sempre usato per il segno
– Reali a 32 bit (4 byte)
• 8 bit per l’esponente e 23 per la mantissa
• Il bias è 127
• I numeri rappresentabili vanno da 1.17549E–38 a
3.40282E+ 38
• La precisione è di 6-7 cifre decimali
– Reali a 64 bit (8 byte)
• 11 bit per l’esponente e 52 per la mantissa
• Il bias è 1023
• I numeri rappresentabili vanno da 2.22507E–308
a 1.79769E+308
• La precisione è di 15-16 cifre decimali
16
Fly UP