Gianfranco Bentivoglio
INFORMATICA
CAP. 2
LA CODIFICA BINARIA DEI DATI
DISPENSE AD USO DEGLI STUDENTI DEL CORSO DI
“GESTIONE INFORMATICA DEI DATI AZIENDALI”
NOME FILE
AGG. AL:
C AP . 2-C ODIFICA BINARIA R EV . 3 AA05-06. DOC
11/12/05
TOTALE PAGINE
108
NESSUNA PARTE DI QUESTO TESTO PUÒ ESSERE RIPRODOTTA SENZA LA PREVENTIVA AUTORIZZAZIONE DELL’AUTORE
PAG. 2.2
INDICE
ARGOMENTI TRATTATI __________________________________________________6
LA CODIFICA DELL’INFORMAZIONE _______________________________________8
RAPPRESENTAZIONE ANALOGICA/ DIGITALE DELL'INFORMAZ. __________________________________10
ILPROCESSO DI “DECODIFICA” DEI DATI ______________________________________________________12
APPROFONDIMENTO: IL PROCESSO DI CODIFICA _____________________________________________13
IL CONCETTO DI INFORMAZIONE E DATO: UN ESEMPIO_________________________________________16
I DATI SONO UNA SEMPLIFICAZIONE DELLA REALTÀ ___________________________________________18
NON TUTTE LE INFORMAZIONI SONO CODIFICABILI ____________________________________________20
I DATI, DI PER SÉ, SONO PRIVI DI SIGNIFICATO ________________________________________________22
DATI DIVERSI POSSONO RAPPRESENTARE LA STESSA INFORMAZIONE __________________________24
CONVERGENZA DIGITALE __________________________________________________________________26
MOTIVAZIONE TECNOLOGICA PER L’USO DELLA CODIFICA BINARIA ______________________________28
IL BIT ____________________________________________________________________________________30
IL BYTE __________________________________________________________________________________32
CODIFICA DEL SUONO _________________________________________________94
STANDARD DI CODIFICA DEL SUONO_________________________________________________________96
LA CODIFICA STANDARD DI WINDOWS: .WAV __________________________________________________97
UN FORMATO COMPRESSO: MP3 ____________________________________________________________97
IL FORMATO REAL AUDIO___________________________________________________________________98
IL FORMATO MIDI __________________________________________________________________________98
CONFRONTO TRA LE DIVERSE CODIFICHE ___________________________________________________100
MA ALLORA COSA RAPPRESENTA QUEL BYTE IN MEMORIA? ___________________________________102
APPENDICE 1 GLI OPERATORI LOGICI___________________________________104
ESPRESSIONI BOOLEANE _________________________________________________________________106
LE PROPOSIZIONI ________________________________________________________________________108
I SISTEMI DI NUMERAZIONE_____________________________________________34
SISTEMI DI NUMERAZIONE ADDITIVI__________________________________________________________34
SISTEMA DI NUMERAZIONE POSIZIONALE ____________________________________________________36
QUALE È IL NUMERO PIÙ GRANDE CHE SI PUÒ RAPPRESENTARE, NELLA BASE X, CON N CIFRE _____38
LE DIVERSE BASI __________________________________________________________________________40
PASSAGGIO DA BASE “X” A BASE 10__________________________________________________________42
PASSAGGIO DA BASE 10 A BASE “X”__________________________________________________________44
IL VALORE DI UN NUMERO A SECONDA DELLA BASE ___________________________________________46
OPERAZIONI IN BINARIO____________________________________________________________________48
LA MOLTIPLICAZIONE ______________________________________________________________________50
LA CODIFICA BINARIA DELL’INFORMAZIONE ______________________________54
LA CODIFICA DEI CARATTERI _______________________________________________________________56
GLI STANDARD PER CODIFICARE I CARATTERI ________________________________________________58
CODIFICA DEI NUMERI IN ASCII ______________________________________________________________60
CODIFICA DEI NUMERI NATURALI ____________________________________________________________62
CODIFICA DEI NUMERI INTERI _______________________________________________________________64
I NUMERI NEGATIVI CODIFICATI IN COMPLEMENTO A 2 _________________________________________66
CODIFICA BINARIA VS. CODIFICA ASCII _______________________________________________________68
UN COMPROMESSO: LA CODIFICA BCD (BINARY CODE DECIMAL) ________________________________70
BCD VS. BINARIO _________________________________________________________________________72
COME SI PUÒ RAPPRESENTARE UN NUMERO INTERO ? ________________________________________74
NUMERI REALI: LA NOTAZIONE ESPONENZIALE________________________________________________76
NUMERI REALI: LA CODIFICA ________________________________________________________________78
CODIFICA DELLE IMMAGINI _____________________________________________80
UN PRIMO ELEMENTO: LA ”RISOLUZIONE” ____________________________________________________82
UN SECONDO ELEMENTO: LA PROFONDITÀ COLORE___________________________________________83
RIASSUMENDO____________________________________________________________________________84
LE TECNOLOGIE DIGITALI NELL'USO PROFESSIONALE _________________________________________84
FORMATO DELLA CODIFICA GRAFICA (“RASTER”) ______________________________________________86
CODIFICA VETTORIALE_____________________________________________________________________90
I FORMATI VETTORIALI _____________________________________________________________________91
CONFRONTO RASTER – VETTORIALE ________________________________________________________92
NESSUNA PARTE DI QUESTO TESTO PUÒ ESSERE RIPRODOTTA SENZA LA PREVENTIVA AUTORIZZAZIONE DELL’AUTORE
PAG. 2.4
CAP. 2 - LA CODIFICA BINARIA DEI DATI
INFORMATICA
PARLEREMO DI...
IL MEZZO SU CUI
RAPPRESENTARE
ED ELABORARE
L’INFORMAZIONE
IL MODO CON
CUI
RAPPRESENTARE
L’INFORMAZIONE
LA MODALITÀ CON
CUI ELABORARE
L’INFORMAZIONE
ARGOMENTI TRATTATI
In questo secondo capitolo parleremo del "modo" con cui si rappresentano le informazioni, affinché possano essere poi trattate con
procedimenti automatici su un computer. Più precisamente verranno trattati i seguenti argomenti:
1. i concetti di "informazione" e "dato", mettendo in evidenza:
• la differenza tra i due termini che, se nel linguaggio corrente vengono usati come sinonimi (con l’accezione di
“conoscenza”, relativa a qualcosa o qualcuno), in ambito strettamente informatico assumono significati profondamente distinti;
• la necessità di codificare l’informazione in modo che
possa essere comunicata e elaborata;
• alcuni aspetti significativi del processo di codifica;
• le motivazioni tecnologiche che, all’interno
dell’elaboratore, rendono necessaria un particolare tipo
di codifica, la codifica binaria;
2. il sistema di numerazione binario, analizzato sotto il punto di vista
prettamente matematico, e visto come un sistema di numerazione alternativo al sistema decimale;
3. la rappresentazione, in formato binario, delle diverse tipologie di
informazione usate dall'uomo (come numeri, testo, suoni, immagini).
• I CONCETTI DI INFORMAZIONE E DATO
• I SISTEMI DI NUMERAZIONE
Infine ci sembra giusto sottolineare l’importanza che gli studi sulla
rappresentazione dell’informazione hanno avuto ai fini di una corretta
comprensione del processo elaborativo messo in atto dal nostro cervello ed il rilevante contributo che, in questo senso, ha dato
l’informatica.
• LA CODIFICA BINARIA
DELL’INFORMAZIONE
NESSUNA PARTE DI QUESTO TESTO PUÒ ESSERE RIPRODOTTA SENZA LA PREVENTIVA AUTORIZZAZIONE DELL’AUTORE
PAG. 2.6
CAP. 2 - LA CODIFICA BINARIA DEI DATI
INFORMATICA
“CODIFICA”
PER POTER
COMUNICARE ED ELABORARE LE
INFORMAZIONI
SIA DA PARTE DELL’UOMO CHE DI
LA CODIFICA DELL’INFORMAZIONE
Come già detto nell'introduzione,
“L’INFORMAZIONE è la “conoscenza” relativa a oggetti, fatti, concetti, eventi e procedimenti che, in un
certo contesto, ha un particolare significato”
DEFINIZIONE ISO
SISTEMI AUTOMATICI È NECESSARIO
CODIFICARLE
SU UN SUPPORTO FISICO,
MEDIANTE SIMBOLI E OPPORTUNE
REGOLE DI CODIFICA
I DATI RAPPRESENTANO IL
RISULTATO DI QUESTO PROCESSO DI
CODIFICA DELLE
Noi uomini, attraverso i sensi, riceviamo continuamente informazioni dai
nostri simili e dal mondo circostante. Questo processo, che chiamiamo percezione, è tuttavia un fatto immediato, che non ci permette di memorizzare
e di trasmettere ad altri le informazioni che abbiamo percepito.
Il primo problema che dobbiamo affrontare, per poter:
descrivere un fenomeno che non possiamo riprodurre direttamente o
rappresentare un oggetto che non abbiamo a portata di mano;
esprimere un concetto astratto;
comunicare a qualcun’altro la nostra conoscenza;
memorizzare da qualche parte l'informazione che abbiamo percepito
per poterla utilizzare in un secondo momento;
produrre nuove informazioni sulla base di quelle che abbiamo già
acquisito;
è quello di individuare una forma con cui rappresentare le informazioni
affinché queste possano essere comunicate (sia tra uomini, che
tra l’uomo ed una macchina), memorizzate (in modo da essere mantenute
nel tempo) ed elaborate (sia dall’uomo che mediante procedimenti automatici).
INFORMAZIONI
NESSUNA PARTE DI QUESTO TESTO PUÒ ESSERE RIPRODOTTA SENZA LA PREVENTIVA AUTORIZZAZIONE DELL’AUTORE
PAG. 2.8
CAP. 2 - LA CODIFICA BINARIA DEI DATI
INFORMATICA
Più precisamente si può affermare che,
affinché una INFORMAZIONE possa essere comunicata, memorizzata ed elaborata, deve essere rappresentata su un supporto fisico, mediante un insieme opportuno di simboli e secondo specifiche regole di codifica.
E questo è sempre vero, sia che il trattamento dell'informazione sia fatto
dall'uomo, che tramite sistemi automatici.
Il risultato finale di questo processo di codifica
dell’informazione è rappresentato dai DATI .
In questo senso si può precisare che:
I DATI sono la rappresentazione delle informazioni in
un determinato codice.
I DATI sono “registrati” su un supporto fisico.
I DATI sono gli “oggetti” che vengono scambiati nel
processo comunicativo.
I DATI sono gli “oggetti” su cui operano i metodi di
elaborazione automatici.
È importante sottolineare che il DATO rappresenta il modo con cui riproduciamo gli aspetti significativi della realtà (ovvero gli aspetti che abbiano
per noi una qualunque rilevanza), indipendentemente dal fatto che poi
quel dato debba essere elaborato o meno con un calcolatore.
Ad esempio:
PER RAPPRESENTARE
UNA PERSONA
UN LUOGO
UN OGGETTO
UN AZIENDA
POTREMMO UTILIZZARE I SEGUENTI DATI
•
•
•
•
•
•
•
•
•
dati anagrafici,
curriculum professionale,
aspetto fisico
dati geografici
dati storici
dati di fabbricazione
dati di utilizzo
ragione sociale,
dati di bilancio
NESSUNA PARTE DI QUESTO TESTO PUÒ ESSERE RIPRODOTTA SENZA LA PREVENTIVA AUTORIZZAZIONE DELL’AUTORE
La rappresentazione di un'informazione attraverso dei dati è infatti l'unico modo che abbiamo per comunicare, memorizzare ed elaborare l'informazione stessa. Questo processo di codifica dell'informazione assume una rilevanza ancora maggiore quando il trattamento dell'informazione dovrà essere fatto su sistemi automatici.
RAPPRESENTAZIONE ANALOGICA/ DIGITALE DELL'INFORMAZ.
Su un piano fisico la rappresentazione dell'informazione può assumere
due forme:
ANALOGICA: in cui l'informazione è rappresentata in modo
continuo da un'altra grandezza
DIGITALE: in cui l'informazione è rappresentata in modo discreto da una sequenza di campioni (di norma interpretabili
come numeri)
Ad esempio, l'informazione “tempo” può avere una rappresentazione
(o continua) come quella fornita dalla posizione della lancetta
che si sposta sul quadrante dell'orologio oppure una rappresentazione
DIGITALE, attraverso numeri mostrati sul display di un orologio digitale.
ANALOGICA
Allo stesso modo l'informazione “temperatura”, può essere rappresentata attraverso l'altezza della colonnina di mercurio del normale termometro (e quest'altezza varia in modo continuo col variare della temperatura)
oppure attraverso i numeri di un termometro digitale (e la temperatura
indicata varia in modo discontinuo).
Oppure l'informazione “peso” può essere rappresentata, su una bilancia
“analogica” attraverso il movimento dell’ago sul quadrante, mentre una
bilancia digitale mostra il peso attraverso i numeri del suo display. In
questo ultimo caso è importante sottolineare che se la bilancia ha la
precisione di una cifra decimale, potrà mostrare le differenze fra 60,1 e
60,2 grammi, ma non un peso intermedio: infatti le cifre sul display passeranno da 60,1 a 60,2 senza poterlo rappresentare.
Digitalizzazione
Il “mondo reale” è continuo, e mentre la rappresentazione della realtà,
che viene fatta dall'uomo è molto spesso di tipo analogico, quella che
viene usata all'interno del calcolatore, può essere solamente digitale. Il
processo di conversione di grandezze analogiche in grandezze discrete
(digitali) è chiamato “DIGITALIZZAZIONE”. L'uso di segnali discreti
permette la rappresentazione di dati quali testo, immagini, suoni, video,
ecc. tramite numeri binari.
PAG. 2.10
CAP. 2 - LA CODIFICA BINARIA DEI DATI
INFORMATICA
“DECODIFICA”
CONOSCENDO IL SIGNIFICATO DEI
SIMBOLI E LE REGOLE DI CODIFICA
È POSSIBILE
ESTRARRE
LE INFORMAZIONI CONTENUTE
NEI DATI ATTRAVERSO UN
PROCESSO DI DECODIFICA
LE INFORMAZIONI SONO IL
SIGNIFICATO CHE NOI
ATTRIBUIAMO AI DATI IN
ILPROCESSO DI “DECODIFICA” DEI DATI
Viceversa, avendo disponibili dei DATI e conoscendo:
• il significato dei simboli con cui sono stati rappresentati,
• e le regole di codifica,
possiamo “estrarre” informazioni dai dati attraverso
un processo di decodifica.
Ad esempio, conoscendo il curriculum di una persona, possiamo
avere un'idea delle sue capacità professionali e decide per se assumerla o meno. Oppure, conoscendo i dati di bilancio di un'azienda, e sapendo interpretare questi dati (le regole di decodifica), possiamo dare un giudizio sull'azienda stessa e decidere se acquistare
azioni o meno.
In altre parole si può affermare che:
premesso che sia nota la conoscenza dei simboli e del
sistema di codifica, la “decodifica” dei DATI “produce”
INFORMAZIONE;
in questo senso l’INFORMAZIONE rappresenta il significato che noi attribuiamo ai DATI in relazione alla realtà
che essi rappresentano.
Un'ultima considerazione che possiamo fare sul processo di codifica dell'informazione è questa:
se è vero che l'uomo comunica attraverso i DATI, allora
è anche vero che, per COMUNICARE, l'uomo ha necessità
di condividere i sistemi di codifica (in base ai quali i
dati stessi vengono prodotti a partire dall'informazione).
RELAZIONE ALLA REALTÀ CHE
ESSI RAPPRESENTANO
NESSUNA PARTE DI QUESTO TESTO PUÒ ESSERE RIPRODOTTA SENZA LA PREVENTIVA AUTORIZZAZIONE DELL’AUTORE
PAG. 2.12
INFORMATICA
APPROFONDIMENTO: IL PROCESSO DI CODIFICA
Dedichiamo al processo di codifica un rapido approfondimento.
Un codice può essere definito dai seguenti tre elementi:
• un alfabeto, ovvero l’insieme dei “segni” elementari
(simboli) che comporranno il codice e mediante i quali
verranno rappresentate le informazioni;
• le regole sintattiche, ovvero l’insieme delle regole che
descrivono come comporre e riconoscere un insieme
corretto e valido di segni;
• le regole semantiche, che indicano come assegnare e
ricavare un significato dai segni.
Definito che sia il codice “X”, definiamo
CODIFICA DI UN’INFORMAZIONE NEL CODICE
“X”
il processo che, utilizzando il codice “X” , porta alla registrazione dell’informazione utilizzando i simboli del suo
alfabeto, composti secondo le regole sintattiche.
Per contro con il termine di:
DECODIFICA DI UN DATO, IN BASE AL CODICE
“X”
indichiamo l’operazione inversa, ovvero quella che in
base alle regole semantiche del codice X permette
l’interpretazione del dato registrato e la ”estrazione”
dell’informazione contenuta.
CAP. 2 - LA CODIFICA BINARIA DEI DATI
Senza volerci addentrare nei meandri della semiologia, ci sembra
interessante evidenziare una importante classificazione dei codici
(G.R.Cardona) nelle seguenti due categorie1:
• Codici elementari, in cui ogni segno dell’alfabeto codifica
direttamente una informazione; essi sono indipendenti dalla
lingua degli interlocutori che debbono leggerli e permettono
di esprimere direttamente un significato. Ad esempio Rientrano in questa prima categoria:
− i cartelli relativi alla segnaletica stradale,
− i simboli utilizzati sui comandi delle auto,
− nel settore informatico appartengono a questa categoria le
icone utilizzate nelle interfacce grafiche dei recenti sistemi.
• Codici strutturati, composti da più segni dell’alfabeto, uniti
secondo regole sintattiche, a volte anche complesse, spesso strettamente dipendenti dalla lingua degli interlocutori.
In questa seconda categoria entrano i sistemi di scrittura (esempio di codifica finalizzato alla comunicazione di informazioni) e numerazione (esempio di codifica di informazioni
quantitative) .Alcuni esempi di codici, che rientrano nelle definizioni appena date, sono i seguenti:
− le note musicali,
− il sistema di misurazione del tempo,
− codici scientifici (chimica),
− codici per telecomunicazioni (protocolli),
− codici crittografici (“codici segreti”).
1 questi concetti saranno utili quando si affronterà lo studio dei codici usati
nell’informatica per la rappresentazione linguistica e numerica
NESSUNA PARTE DI QUESTO TESTO PUÒ ESSERE RIPRODOTTA SENZA LA PREVENTIVA AUTORIZZAZIONE DELL’AUTORE
PAG. 2.14
CAP. 2 - LA CODIFICA BINARIA DEI DATI
INFORMATICA
INFORMAZIONE DATO
INFORMAZIONE
IL CONCETTO DI INFORMAZIONE E DATO: UN ESEMPIO
> Quante mele ci sono nella figura ?
> 12
Sicuramente questa sarà stata la risposta di ognuno di noi
In un attimo, senza avere una chiara consapevolezza del complesso processo che stiamo mettendo in atto, abbiamo realizzato un
processo di codifica di una informazione quantitativa mediante:
le cifre decimali (i simboli),
il sistema di numerazione decimale (regole di codifica)
Il risultato di questo processo di codifica è stato il numero 12 (dato);
tale dato successivamente potrà essere comunicato e potrà essere
elaborato.
Anche se avremo modo di approfondire questo concetto nelle pagine che seguono, ci sembra fin da ora importante sottolineare come
12, il dato in quanto tale, non abbia alcun significato se non in relazione alla situazione che abbiamo descritto.
Nei paragrafi seguenti vogliamo approfondire alcuni aspetti del processo di codifica e della differenza che esiste tra informazione e dato:
12
1. IL DATO RAPPRESENTA SOLO UNA PARTE DEL MONDO REALE, QUELLA CHE
CI INTERESSA COMUNICARE, MEMORIZZARE ED ELABORARE ED IN QUESTO
SENSO È UNA SEMPLIFICAZIONE DELLA REALTÀ;
2. NON TUTTE LE INFORMAZIONI SONO CODIFICABILI;
3. I DATI, DI PER SÉ, SONO PRIVI DI SIGNIFICATO; MA I DATI POSSONO ESSERE
ELABORATI ANCHE SENZA CONOSCERE L’INFORMAZIONE CHE
RAPPRESENTANO;
4. DATI DIVERSI POSSONO RAPPRESENTARE LA STESSA INFORMAZIONE E DATI
UGUALI POSSONO RAPPRESENTARE INFORMAZIONI DIVERSE.
NESSUNA PARTE DI QUESTO TESTO PUÒ ESSERE RIPRODOTTA SENZA LA PREVENTIVA AUTORIZZAZIONE DELL’AUTORE
PAG. 2.16
CAP. 2 - LA CODIFICA BINARIA DEI DATI
INFORMATICA
1° - I DATI RAPPRESENTANO LA REALTÀ ?
I DATI SONO UNA SEMPLIFICAZIONE DELLA REALTÀ
In relazione al processo di codifica delle informazioni, il primo aspetto che è importante sottolineare, è il seguente:
i DATI, in quanto rappresentazione simbolica di informazioni, sono una astrazione di una sola parte del
mondo reale (ovvero di quella parte che si ritiene essere interessante comunicare, memorizzare, elaborare ).
Questo implica che i dati, in quanto astrazione di una parte del
mondo reale, sono anche una semplificazione dei fatti, nel senso
che certe proprietà e caratteristiche degli oggetti reali vengono ignorate in quanto ritenute marginali ed irrilevanti per il particolare utilizzo che se ne intende fare.
QUALI DATI RAPPRESENTANO
AL MEGLIO QUESTA DONNA ?
• ALTEZZA
• COLORE OCCHI
• COLORE CAPELLI
• MISURA SENO
• MISURA VITA
• MISURA FIANCHI
MISS
• TITOLO
STUDIO
• ETA’
• LINGUE
CONOSCIUTE
• STATO CIVILE
• ESPERIENZE
LAVORATIVE
• INDIRIZZO
• ATTIVITÀ
• N. FIGLI
LAVORATRICE CONSUMATRICE
NESSUNA PARTE DI QUESTO TESTO PUÒ ESSERE RIPRODOTTA SENZA LA PREVENTIVA AUTORIZZAZIONE DELL’AUTORE
Vedremo nei capitoli successivi come questo aspetto, in fase di
progettazione di un nuovo programma, presenti notevoli criticità per
il fatto che qualcuno debba decidere fino a che punto fermarsi nel
processo di semplificazione, ossia, in altre parole, deve decidere
cosa è importante e cosa non lo è.
Esempio:
Le informazioni relative ad una persona possono essere rappresentati attraverso diverse serie di dati, a secondo delle esigenze di elaborazione
che si possono avere:
• dati relativi all’aspetto fisico (altezza, colore degli occhi, colore dei
capelli, misura del seno,...), se l’obiettivo è la ricerca di una miss;
• dati professionali (titolo di studio, lingue conosciute, precedenti esperienze lavorative), se l’obiettivo è quello di selezionare un nuovo dipendente;
• dati anagrafici (età, attività, stato civile, n. figli, indirizzo di residenza)
se l’obiettivo è quello di identificare un soggetto per realizzare
un’analisi di mercato.
PAG. 2.18
CAP. 2 - LA CODIFICA BINARIA DEI DATI
INFORMATICA
2° - TUTTE LE INFORMAZIONI SONO CODIFICABILI ?
NON TUTTE LE INFORMAZIONI SONO CODIFICABILI
Un secondo aspetto su cui vogliamo soffermare la nostra attenzione
è legato alla seguente domanda:
> E’ possibile codificare qualunque informazione?
La risposta è :
> No!
Esistono infatti numerose situazioni in cui noi produciamo nuove informazioni senza passare (almeno in maniera esplicita) attraverso
questo processo di codifica dell’informazione: è il caso delle informazioni afferenti alla sfera emotiva e sentimentale.
L’esempio riportato nella pagina accanto mostra come non sia possibile identificare l’elaborazione eseguita, pur sapendo che la risposta alla domanda “mi piace questo fiore?” , dipenderà dalle tante
informazioni che abbiamo sul fiore (“ha dei bei colori?”, “è profumato?”, “ha un bell’aspetto?”, ecc.).
INFORMAZIONI
DI PARTENZA
A) COLORE
B) PROFUMO
C) ASPETTO
D) ????????
ELABORAZIONE
?
INFORMAZIONE
FINALE
IL FIORE
E’ BELLO (O NON E’ BELLO) !!
NESSUNA PARTE DI QUESTO TESTO PUÒ ESSERE RIPRODOTTA SENZA LA PREVENTIVA AUTORIZZAZIONE DELL’AUTORE
Il fatto di non saper codificare tali informazioni, ci impedisce di decifrare il tipo di elaborazione eseguita dal nostro cervello e quindi, in
definitiva, di riprodurla su delle macchine.
Pertanto questo tipo di elaborazioni non sono riconducibili (almeno
ora e speriamo mai!), negli schemi che andremo a studiare.
PAG. 2.20
CAP. 2 - LA CODIFICA BINARIA DEI DATI
INFORMATICA
I DATI, DI PER SÉ, SONO PRIVI DI SIGNIFICATO
3° - I DATI HANNO SIGNIFICATO ?
Una terza considerazione da fare è che:
i dati, in quanto simboli risultanti da un opportuno
processo di codifica, non hanno di per sé alcun significato, ma acquisiscono significato soltanto quando
vengono interpretati da chi ne conosce la chiave di
decodifica e sa come metterli in relazione alla realtà
che essi rappresentano.
50
50
Uno stesso dato, ad esempio “50”, può rappresentare la codifica di
informazioni completamente diverse:
• il voto di un studente che ha sostenuto l’esame di maturità
• il limite di velocità di una strada
• il codice di un prodotto
• Il peso di una valigia
• gli anni di una persona
50
e tanti altri significati ancora. Il dato 50 diventa informazione solamente per chi ne possiede la chiave di decodifica: soltanto di questo modo è possibile attribuire un significato al dato stesso.
Ad esempio, noi possiamo capire il significato che può avere il dato
50, inteso come voto, solamente se conosciamo il sistema di codifica decimale e se abbiano chiaro il concetto di “esame” e di “voto”
associato all'esame stesso.
50
50
NO, MA COMUNQUE
POSSONO ESSERE ELABORATI
NESSUNA PARTE DI QUESTO TESTO PUÒ ESSERE RIPRODOTTA SENZA LA PREVENTIVA AUTORIZZAZIONE DELL’AUTORE
Ma i dati, benché privi di un loro proprio significato,
possono comunque essere elaborati: basta conoscere le regole in base alle quali vanno manipolati.
Questo è quello che succede all'interno del computer: per elaborare
i dati non è necessario conoscerne il significato, ma è sufficiente
avere un programma che “sappia” come devono essere “manipolati”
per produrre il risultato atteso.
E Il risultato dell'elaborazione, anch’esso un dato, potrà poi essere
utilizzato da chi, possedendo le regole di decodifica, sarà in grado
di “interpretarlo”.
PAG. 2.22
CAP. 2 - LA CODIFICA BINARIA DEI DATI
INFORMATICA
4° - DATI DIVERSI = STESSA INFORMAZIONE ?
IL RISULTATO DI UN ESAME
PUÒ ESSERE ESPRESSO IN:
• VOTO DA 1 A 30
• VOTO DA 1 A 10
• VOTO DA 1 A 60
• GIUDIZIO: IDONEO,
NON IDONEO
IL FATTURATO DI UNA AZIENDA
SI PUÒ INDICARE:
ANNO 2003 € 150 MIL.
ANNO 2004 € 160 MIL.
ANNO 2005 € 195 MIL.
NESSUNA PARTE DI QUESTO TESTO PUÒ ESSERE RIPRODOTTA SENZA LA PREVENTIVA AUTORIZZAZIONE DELL’AUTORE
DATI DIVERSI POSSONO RAPPRESENTARE LA STESSA
INFORMAZIONE
Un ultimo aspetto (che può sembrare ovvio ma è importante capire
bene) è che non esiste un solo modo per codificare una informazione, ma che anzi spesso esistono diversi modi, tra loro equivalenti,
di codificare la stessa informazione.
La scelta di una forma di codifica, piuttosto che un’altra, è spesso
un fatto puramente convenzionale ed è legata alla:
chiarezza e alla facilità di utilizzo da parte di chi la dovrà
usare;
definizione di standard comuni, che ne semplificano la comunicazione.
Come logica conseguenza, se dati diversi possono rappresentare la
stessa informazione (30, 10, 60 rappresentano il voto massimo) è
anche vero che dati uguali possono rappresentare informazioni diverse (si consideri il diverso significato che può avere un voto uguale a 10).
Di norma, sarà possibile realizzare delle:
“funzioni di trasformazione”
da una forma di codifica all’altra. Ma poiché i dati sono anche una
“semplificazione” della realtà, non è detto che due diverse forme di
codifica siano sempre equivalenti, per tutti i particolari del mondo
reale che vogliono rappresentare. Se questo succede, potrebbe essere possibile la trasformazione dalla codifica “X” alla codifica “Y”
ma non viceversa.
Come esempio prendiamo il sistema di numerazione utilizzato da alcune tribù primitive, basato su tre simboli (1, 2, molti). Questo sistema di numerazione è equivalente con il nostro fintantoché gli oggetti
da numerare sono 1 o 2, dopodiché la semplificazione del primo sistema rende i due sistemi non equivalenti: sarà possibile la trasformazione di un numero decimale in un numero di questo sistema
“primitivo” ma non viceversa.
PAG. 2.24
CAP. 2 - LA CODIFICA BINARIA DEI DATI
INFORMATICA
CONVERGENZA DIGITALE
CONVERGENZA DIGITALE
Mentre l’uomo utilizza codici e simboli diversi in funzione
dell’informazione da rappresentare, all’interno dell’elaboratore tutte
le informazioni sono codificate utilizzando due soli simboli, 0 e 1.
Questo tipo di codifica è chiamata:
IMMAGINI
TESTO
"codifica binaria".
LAURA
SUONI
NUMERI
1
Ogni informazione, per quanto possa essere complessa, può
essere codificata utilizzando una serie di 0 e 1.
Il fatto che ogni tipo di informazione, per poter essere elaborata sul
computer, debba essere codificata in binario, in passato era stato visto come un vincolo, una necessità legata alle caratteristiche intrinseche dei computer. Solo di recente ci si è resi conto che, codificando
ogni informazione (anche analogica) in binario, si è di fatto raggiunta
una vera e propria:
32
1
E possiamo affermare che
STANDARDIZZAZIONE DEI METODI
DI RAPPRESENTAZIONE DELL’INFORMAZIONE
0
0
1
1
0
0
0
0
1 1 0 10 0 10
1
0
1
1
0
1
NESSUNA PARTE DI QUESTO TESTO PUÒ ESSERE RIPRODOTTA SENZA LA PREVENTIVA AUTORIZZAZIONE DELL’AUTORE
La disponibilità di un unico codice (“il codice binario”) per rappresentare informazioni anche molto diverse tra loro, associata ad uno strumento così potente come il computer, ha reso possibile una integrazione strettissima tra informazioni che eravamo abituati a considerare
lontane e nuove forme di comunicazione dalle caratteristiche e potenzialità appena esplorate:
• sugli elaboratori, con gli stessi strumenti, vengono manipolate informazioni di natura molto diversa (basta pensare che in un documento Word, oltre ai soliti dati numerici e testuali, è possibile inserire immagini e suoni);
• sulle reti digitali transitano contemporaneamente numeri, testo, immagini e suoni;
• macchine diverse possono parlare tra loro, unificate nel linguaggio
digitale, reale esperanto dell’informatica.
Nei prossimi paragrafi analizzeremo come, utilizzando la codifica binaria,
si possano codificare informazioni tra loro molto diverse.
PAG. 2.26
CAP. 2 - LA CODIFICA BINARIA DEI DATI
INFORMATICA
MOTIVAZIONE TECNOLOGICA PER L’USO DELLA CODIFICA
BINARIA
PERCHÉ LA CODIFICA BINARIA ?
IN UN COMPUTER TUTTA L’INFORMAZIONE È
CODIFICATA IN FORMA BINARIA
A SECONDA DEL SUPPORTO DI
MEMORIZZAZIONE UTILIZZATO, I VALORI
“0” E “1” SONO RAPPRESENTATI DA:
• DIFFERENTE CARICA
ELETTRICA
MEMORIE MAGNETICHE
Più precisamente, la necessità di utilizzare due soli simboli (che vengono associati a due stati fisici) deriva dalla semplicità e dalla sicurezza con cui, in un sistema fisico, è possibile distinguere uno stato
dall’altro. Se ad esempio si riuscisse, con la stessa semplicità e sicurezza, a realizzare dispostivi in grado di gestire tre stati, si potrebbero
realizzare computer basati su una logica ternaria.
La tecnologica attuale permette di avere 2 soli stati facilmente distinguibili l’uno dall’altro e trattabili con sufficiente economicità, precisione
e sicurezza.
DISPOSITIVI A
SEMICONDUTTORE
• DIFFERENTE STATO DI
POLARIZZAZIONE
MAGNETICA
I motivi per cui all’interno del computer si utilizza una logica
binaria per la codifica dell’informazione sono sostanzialmente
tecnologici, legati all’attuale architettura del computer.
128 MB
In relazione dispositivi fisici utilizzati questi due stati sono rappresentati da:
• una differente carica elettrica
(nei dispositivi a semiconduttore)
• un differente stato di polarizzazione
(nelle memorie magnetiche)
80 GB
1,4 MB
• un’alternanza luce-buio
(nelle memorie ottiche)
• ALTERNANZA LUCE BUIO
MEMORIE OTTICHE
600 MB
LA SCELTA DI LIMITARSI A
DUE SOLI STATI È DETTATA DA
MOTIVAZIONI TECNOLOGICHE
NESSUNA PARTE DI QUESTO TESTO PUÒ ESSERE RIPRODOTTA SENZA LA PREVENTIVA AUTORIZZAZIONE DELL’AUTORE
PAG. 2.28
CAP. 2 - LA CODIFICA BINARIA DEI DATI
INFORMATICA
IL BIT
IL BIT
L’UNITÀ ELEMENTARE DI
INFORMAZIONE GESTITA DA
UN COMPUTER È CHIAMATA
BIT
(BINARY DIGIT)
0
1
PROCESSO DI CODIFICA BINARIA
OGNI INFORMAZIONE,
PER QUANTO COMPLESSA,
PUÒ ESSERE RAPPRESENTATA,
SU UN COMPUTER, COME UNA
OPPORTUNA SEQUENZA DI BIT
NESSUNA PARTE DI QUESTO TESTO PUÒ ESSERE RIPRODOTTA SENZA LA PREVENTIVA AUTORIZZAZIONE DELL’AUTORE
La minima unità di informazione che un computer è in grado di gestire, è chiamata:
BIT
(BINARY DIGIT)
e convenzionalmente può assumere uno dei seguenti due valori:
0
1
Il BIT rappresenta il dato elementare utilizzato all’interno del computer
per codificare un’informazione: Mediante un BIT è possibile rappresentare informazioni elementari, come ad esempio:
“aperto”
“chiuso”,
“acceso”
“spento”
“nord”
“sud”
Considerati singolarmente i bit forniscono una minima capacità informativa, non utilizzabile praticamente. Per poter rappresentare informazioni più complesse è quindi necessario ricorrere a sequenze di
bit.
Ad esempio con 2 bit si possono rappresentare 4 informazioni differenti, codificando ognuna di esse con una delle seguenti coppie di bit
00, 01, 10, 11:
00
“nord”
01
“est”
10
“sud”
11
“ovest”
Con una opportuna sequenza di bit, la cui lunghezza dipende dalla
complessità dell’informazione che si intende rappresentare, è possibile codificare sul computer qualunque tipo di informazione.
Questo processo secondo cui si fanno corrispondere ad un informazione, una precisa configurazione di bit, prende il nome di:
CODIFICA BINARIA
DELL’INFORMAZIONE.
PAG. 2.30
CAP. 2 - LA CODIFICA BINARIA DEI DATI
INFORMATICA
IL BYTE
IL BYTE
MA, NELL’USO PRATICO DEL
CALCOLATORE, L’UNITÀ DI
INFORMAZIONE PIÙ
SIGNIFICATIVA È IL
Nell’uso pratico del calcolatore, ha assunto una rilevanza particolare l’aggregazione di 8 bit, che viene comunemente chiamata:
BYTE
La quantità di memoria di un computer si misura allora in BYTE2 e
nei suoi multipli.
Ma poiché nei moderni calcolatori, anche il byte è un’unità di misura
molto piccola, sono stati introdotti i suoi multipli:
1 BYTE
BYTE
0 1 0 1 1 0 0 1
= 8 bit
1 KILOBYTE (KB) = 1.024 BYTE = 210 BYTE (≅ 1.000 BYTE)3
1 MEGABYTE (MB)= 1.024 KB = 220 BYTE (≅ 1 milione di BYTE)
1 GIGABYTE (GB) = 1.024 MB = 230 BYTE (≅ 1 miliardo di BYTE)
1 TERABYTE (TB) = 1.024 GB = 240 BYTE (≅ 1.000 miliardi di BYTE)
(SEQUENZA DI 8 BIT)
E I SUOI MULTIPLI
KB
MB
GB
TB
= KILOBYTE = 1.024 BYTE
= MEGABYTE = 1.024 KB
≅ 1 MILIONE DI BYTE
= GIGABYTE = 1.024 MB
≅ 1 MILIARDO DI BYTE
= TERABYTE = 1.024 GB
≅ 1.000 MILIARDI DI BYTE
NESSUNA PARTE DI QUESTO TESTO PUÒ ESSERE RIPRODOTTA SENZA LA PREVENTIVA AUTORIZZAZIONE DELL’AUTORE
2 Per dare un’idea di che cosa sia possibile rappresentare con un BYTE, come prima approssimazione si può pensare che un BYTE è la quantità di memoria necessaria per memorizzare un singolo carattere del nostro alfabeto.
3 Precisamente 210 byte sarebbe uguale a 1024 byte
PAG. 2.32
CAP. 2 - LA CODIFICA BINARIA DEI DATI
INFORMATICA
I SISTEMI DI NUMERAZIONE
SISTEMI DI NUMERAZIONE ADDITIVI
Prima di passare ad esaminare come le diverse informazioni possano
essere tutte rappresentate in codice binario, riprendiamo alcuni concetti
generali sui sistemi di numerazione, ovvero sui sistemi di codifica utilizzati per rappresentare la “quantità” di un insieme di oggetti
O MEGLIO
E NELL’ANTICHITÀ
LATINA
XXVI
X = DUE MANI
V = UNA MANO
I = UN DITO
EGIZIA
∩∩⏐⏐⏐
∩ = DUE MANI
⏐ = UN DITO
MAYA
=
⎯ = UNA MANO
= UN DITO
SISTEMI DI NUMERAZIONE ADDITIVI
I primi sistemi di numerazione utilizzati dall’uomo erano ben diversi dai
nostri. Essi infatti erano realizzati mediante l’incisione di un certo numero di aste su un qualche oggetto (ad esempio un bastone). In pratica si
basavano su un alfabeto costituito da un unico segno, l’asta, che veniva
ripetuto tante volte quanto era grande il numero che si voleva rappresentare. Questo sistema di numerazione, molto semplice quando si dovevano rappresentare piccoli numeri, diventava inutilizzabile quando
cresceva la numerosità degli oggetti da rappresentare. Un primo miglioramento fu quello di raggruppare le aste in gruppi uguali: poiché il primo
strumento di calcolo sono state le dita delle mani, i raggruppamenti più
usati furono quelli per 5 e per 10.
In quasi tutte le numerazioni usate in passato, come in quelle utilizzate
dai Maya, dagli Egizi, dai Romani, ritroviamo questo modo di numerare
che chiameremo: “additivo” (anche se con piccole varianti, dovute ai differenti segni utilizzati e al tipo di raggruppamento effettuato). Ad esempio,
gli egizi utilizzavano un alfabeto composto di due simboli:
∩
⏐
indicava le due mani e quindi valeva 10
indicava un dito e quindi valeva 1
Per indicare 34, con il sistema di numerazione egizio bisognava quindi
scrivere:
∩∩∩⏐⏐⏐⏐
SEMPLICE, MA POCO PRATICO CON NUMERI
GRANDI E DI DIFFICILE ELABORAZIONE
NESSUNA PARTE DI QUESTO TESTO PUÒ ESSERE RIPRODOTTA SENZA LA PREVENTIVA AUTORIZZAZIONE DELL’AUTORE
Nei sistemi di numerazione di tipo additivo, valgono le seguenti regole:
• il significato dei simboli che compongono un numero è indipendente
dalla posizione di tali simboli all’interno del numero stesso
• il valore finale si ottiene sommando i valori associati ad ogni simbolo.
PAG. 2.34
CAP. 2 - LA CODIFICA BINARIA DEI DATI
INFORMATICA
SISTEMI DI NUMERAZIONE POSIZIONALI
POSIZIONALE: IL
IN BASE 10:
SISTEMA DI NUMERAZIONE POSIZIONALE
Un sistema di numerazione additivo è molto semplice quando si debbano rappresentare numeri piccoli (e questa era probabilmente la
necessità dei tempi passati), mentre diventa poco pratico e difficilmente gestibile con numeri grandi: ma soprattutto non è adatto ad
essere elaborato.
SIGNIFICATO ATTRIBUITO A
CIASCUNA CIFRA È FUNZIONE
DELLA POSIZIONE CHE TALE
CIFRA OCCUPA ALL’INTERNO
DEL NUMERO
Un grosso salto di qualità si è fatto con l’adozione della numerazione
posizionale in cui:
INDICA IL NUMERO DI SIMBOLI
DIVERSI CHE POSSIAMO UTILIZZARE NEL SISTEMA DI NUMERAZIONE (0,1,2,3,4,5,6,7,8,9).....
In un sistema di numerazione posizionale, il valore di ogni cifra è
dato dal prodotto della cifra stessa per il peso della posizione. Il valore del numero è dato dalla somma dei valori delle singole cifre così
calcolate.
....E IL PESO DELLA POSIZIONE !
Ma come si fa a conoscere il “peso” associato alla posizione? Ogni
sistema di numerazione posizionale è caratterizzato dalla “BASE”
utilizzata per la numerazione. Nota che sia la “base”, è possibile
conoscere quanti simboli si possono utilizzare (“cifre”) per “scrivere”
un numero in quella base ed il peso associato ad ogni posizione.
2 2 2 2
×100
×101
×102
×103
NESSUNA PARTE DI QUESTO TESTO PUÒ ESSERE RIPRODOTTA SENZA LA PREVENTIVA AUTORIZZAZIONE DELL’AUTORE
uno stesso simbolo (che nei sistemi di numerazione si
è soliti chiamare “cifra”) assume diversi valori in base
alla sua posizione all’interno del numero
Supponendo di utilizzare una base avente valore N, si avrà che:
• un numero intero potrà essere scritto come una stringa di cifre
scelte da un insieme composto da N cifre (simboli) distinte:
0, 1,..., N-1;
• il valore di ogni una cifra dipenderà dalla sua posizione all'interno del numero; partendo da destra, il “peso” associato ad ogni
posizione sarà dato da:
1° posizione = N0 ( = 1 )
2° posizione = N1 ( = N)
3° posizione = N2
j° posizione = N j-1
• il valore delle singole cifre sarà calcolato moltiplicando il valore
della cifra per il peso della posizione ed il valore del numero sarà dato sommando i valori delle singole cifre.
PAG. 2.36
CAP. 2 - LA CODIFICA BINARIA DEI DATI
INFORMATICA
QUALE È IL NUMERO PIÙ GRANDE CHE SI PUÒ
RAPPRESENTARE CON N CIFRE
QUALE È IL NUMERO PIÙ GRANDE CHE SI PUÒ RAPPRESENTARE,
NELLA BASE X, CON N CIFRE
Un’altra domanda che ci possiamo porre è la seguente:
“Data un certa base N, qual è il massimo valore che possiamo rappresentare con J cifre?”
MAX = XN-1
La risposta è molto semplice ed è data dalla seguente formula:
IN CUI
X: BASE
N: NUMERO DI CIFRE
AD ESEMPIO CON
BASE
2
3
4
5
6
7
8
9
10
VALORE MAX = NJ - 1
in cui:
• N: è la base
• J: il numero di cifre utilizzate
2 CIFRE:
MASSIMO NUMERO
3
8
15
24
35
48
63
80
99
NESSUNA PARTE DI QUESTO TESTO PUÒ ESSERE RIPRODOTTA SENZA LA PREVENTIVA AUTORIZZAZIONE DELL’AUTORE
Nella tabella riportata sullo schema a fianco, vengono riportati i valori massimi rappresentabili utilizzando 4 cifre, in funzione delle diverse basi utilizzabili.
Il sistema di numerazione che noi abitualmente utilizziamo (chiamato anche “arabico” in quanto introdotto in Europa dagli arabi nel corso del Medio Evo), ha la base uguale a 10 (il valore 10 deriva probabilmente dal numero di dita delle nostre mani).
Questo vuol dire che:
• per numerare si potranno utilizzare 10 diverse cifre (da 0 a 9);
• il valore di ogni posizione, partendo da destra, sarà una potenza di dieci ( a partire da destra abbiamo 100, 101, 102, 103,...).
Il sistema di numerazione posizionale, oltre ad essere più compatto,
permette anche una “manipolazione” (ovvero una elaborazione)
molto più efficiente dei numeri.
PAG. 2.38
CAP. 2 - LA CODIFICA BINARIA DEI DATI
INFORMATICA
LE DIVERSE BASI
BASE DIVERSA DA 10
È POSSIBILE NUMERARE GLI OGGETTI
UTILIZZANDO ALTRE BASI
AD ESEMPIO
COME SI
BASE SIMBOLI (CIFRE) UTILIZZATI
SCRIVE 10
2
3
4
5
.....
8
9
10
11
12
.....
16
0,1
1010
0,1,2
Ma sicuramente il sistema di numerazione posizionale più semplice
è quello in base 2 (“numerazione binaria”). Un sistema di fase 2, utilizza 2 soli simboli:
0, 1
e il peso della posizione J-esima è dato da 2j-1.
101
0,1,2,3
22
0,1,2,3,4
20
0,1,2,3,4,5,6,7
13
0,1,2,3,4,5,6,7,8
11
0,1,2,3,4,5,6,7,8,9
10
0,1,2,3,4,5,6,7,8,9,A
A
0,1,2,3,4,5,6,7,8,9,A,B
A
0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
A
NESSUNA PARTE DI QUESTO TESTO PUÒ ESSERE RIPRODOTTA SENZA LA PREVENTIVA AUTORIZZAZIONE DELL’AUTORE
Anche se il sistema di numerazione in base 10 è quello normalmente
utilizzato, dal punto di vista matematico, nulla ci impedirebbe di adottare un sistema di numerazione posizionale, basato su un diverso valore di base, per esempio 8 (come fa una tribù degli indiani,
che conta facendo riferimento agli spazi fra le dita delle mani). In
questo caso si utilizzerebbero 8 cifre e il peso della posizione Jesima sarebbe pari a 8j-1.
Un altro sistema di numerazione interessante (perlomeno per chi
opera nel mondo dell’informatica) è quello in base 16 (“sistema esadecimale”). In questo caso si utilizzeranno 16 cifre (come si può
vedere, per le restanti sei cifre si sono utilizzate le prime sei lettere
dell’alfabeto):
1, 2, 3, 4, 5, 6, 7, 8, 9, 0, A, B, C, D, E, F
e il peso della posizione J-esima è dato da 16j-1.
In questa tabella infine vediamo un esempio di come i numeri decimali possano essere convertiti nei corrispondenti numeri binari o
esadecimali e viceversa.:
DECIMALE
0
1
2
3
4
5
6
7
BINARIO
0
1
10
11
100
101
110
111
ESADECIMALE
0
1
2
3
4
5
6
7
DECIMALE
BINARIO
8
9
10
11
12
13
14
15
1000
1001
1010
1011
1100
1101
1110
1111
ESADECIMALE
8
9
A
B
C
D
E
F
PAG. 2.40
CAP. 2 - LA CODIFICA BINARIA DEI DATI
INFORMATICA
PASSAGGIO DA BASE “X” A BASE 10
DA BASE 2 A BASE 10
1011
= 1×23 + 0×22 + 1×21 + 1×20 =
= 1×8 + 0×4 + 1×2 + 1×1 =
=8+0+2+1=
= 11
PASSAGGIO DA BASE “X” A BASE 10
“Ma una volta che si abbia un numero codificato in base diversa
dalla base 10, è possibile trasformarlo in un numero decimale ?”
La risposta a questa domanda è senz’altro positiva ed anzi, il passaggio da una generica base X alla base 10, è anche molto semplice. Lo illustreremo con un paio di esempi.
Nel primo esempio supponiamo di voler convertire, in decimale, il
seguente numero binario:
1 0 1 1
Definito il peso delle singole cifre:
1 0 1 1
23 22 2 1 2 0
possiamo calcolare il corrispondente valore decimale moltiplicando il
valore di ogni cifra per il suo peso e sommando i totali parziali ottenuti:
( 2 3 x 1 ) + ( 2 2 x 0) + ( 2 1 x 1) + ( 2 0 x 1)
L’espressione, dopo alcuni semplici passaggi, passaggi diventa:
8 + 0 + 2 + 1 = 11
DA BASE 16 A BASE 10
B7A
= B×162 + 7×161 + A×160 =
= B×256 + 7×16 + A×1 =
= 11×256 + 7×16 + 10×1 =
= 2816 + 112 + 10 =
= 2938
(il corrispondente valore decimale)
Nel secondo esempio trasformiamo, in formato decimale, il numero
esadecimale B7A. Applicando lo stesso metodo si ha:
B
7
A
162
161
160
per cui possiamo scrivere:
(16 2 x B) + (16 1 x 7) + (16 0 x 10)
che con semplici passaggi diventa:
(256 x 11) + (16 x 7) + (1 x 10)
e quindi
2816 + 112 + 10 = 2938
NESSUNA PARTE DI QUESTO TESTO PUÒ ESSERE RIPRODOTTA SENZA LA PREVENTIVA AUTORIZZAZIONE DELL’AUTORE
(il corrispondente valore decimale)
PAG. 2.42
CAP. 2 - LA CODIFICA BINARIA DEI DATI
INFORMATICA
PASSAGGIO DA BASE 10 A BASE “X”
1
2
6
0
2
3
1
2
1
1
Leggermente più articolato, ma altrettanto meccanico, è il passaggio
inverso. Anche in questo caso partiamo da un esempio per spiegare come si effettua la conversione di base.
Supponiamo di voler trovare il numero binario corrispondente ad un
numero decimale X. La regola è la seguente:
I. bisogna dividere X per 2,
II. quindi si procede a dividere per due ogni quoziente successivo,
finché il quoziente stesso non diventi uguale a zero;
III. la rappresentazione binaria del numero, si ottiene scrivendo i resti delle divisioni in ordine inverso a come è stato effettuato il calcolo.
DA BASE 10 A BASE 2
13
PASSAGGIO DA BASE 10 A BASE “X”
2
0
Ad esempio, per convertire in binario il numero decimale 13 si procede così:
Passo 1°
Passo 2°
Passo 3°
Passo 4°
1) BASTA DIVIDERE SEMPRE PER DUE FINCHÉ IL
QUOZIENTE NON È ZERO
2) LA SEQUENZA DI VALORI DEI RESTI, SCRITTI IN
ORDINE INVERSO, È LA RAPPRESENTAZIONE
BINARIA DEL NUMERO CERCATO
Divisione
13/2
6/2
3/2
1/2
Quoziente
6
3
1
0
Resto
1
0
1
1
A questo punto, leggendo i resti dal basso verso l’alto, si ottiene il
numero binario cercato:
1 1 0 1
1310=11012
NESSUNA PARTE DI QUESTO TESTO PUÒ ESSERE RIPRODOTTA SENZA LA PREVENTIVA AUTORIZZAZIONE DELL’AUTORE
PAG. 2.44
CAP. 2 - LA CODIFICA BINARIA DEI DATI
INFORMATICA
IL VALORE DI UN NUMERO A SECONDA DELLA BASE
MA ALLORA QUANTO VALE 101 ?
Riepiloghiamo sinteticamente i punti principali relativamente ai sistemi di numerazione posizionali:
1012 = 1×22 + 0×21 + 1×20 =
5
1013 = 1×32 + 0×31 + 1×30 =
10
• nel linguaggio corrente la base non viene mai comunicata, in
quanto si dà per scontato l’utilizzo del sistema decimale (e quindi
della base 10);
17
• la base 10 viene utilizzata dall’Uomo per motivi legati alla sua
conformazione fisica (le 10 dita delle mani); questo non significa
che in alcune situazioni non sia più conveniente utilizzare una base diversa (ad esempio nel mondo dei computer è più conveniente utilizzare la base binaria);
1014 = 1×42 + 0×41 + 1×40 =
.....
• la conoscenza del reale valore di un numero, dipende dalla conoscenza del valore della base utilizzata;
• Il passaggio dei numeri fra una base e l’altra è sempre possibile.
10110 = 1×102 + 0×101 + 1×100 = 101
.....
10116 = 1×162 + 0×161 + 1×160 = 257
NESSUNA PARTE DI QUESTO TESTO PUÒ ESSERE RIPRODOTTA SENZA LA PREVENTIVA AUTORIZZAZIONE DELL’AUTORE
PAG. 2.46
CAP. 2 - LA CODIFICA BINARIA DEI DATI
INFORMATICA
OPERAZIONI IN BINARIO
BINARIO È BELLO !
Parlando del sistema di numerazione binario, abbiamo affermato
che questo sistema, basato su 2 soli simboli, è il “più semplice”.
Verifichiamo la veridicità di questa affermazione, analizzando come
“funzionano” alcune normali operazioni aritmetiche, quando vengono applicate ai numeri binari.
SOMMA: LE REGOLE
0+0
=
LA SOMMA
1
1+0
=
1
0+1
=
1
1+1
= 10
0 COL RIPORTO DI 1
L’operazione di addizione segue le stesse regole che usiamo per i
numeri decimali, solo che qui è molto più semplice in quanto si
hanno in totale solo 4 possibili combinazioni:
0+0 = 0
0+1 = 1
1+0 = 1
1+1 = 0 con riporto di 1
Proviamo, come esempio, a sommare due numeri binari, :
ESEMPIO:
0
0
1
1
0
0
1
1
0
0
0
1
1
0
0
1
1
0
0
1
1
1
0
1
NESSUNA PARTE DI QUESTO TESTO PUÒ ESSERE RIPRODOTTA SENZA LA PREVENTIVA AUTORIZZAZIONE DELL’AUTORE
h
g
f
e
d
c
b
a
0
1
1
0
1
1
0
1
+
0
0
1
0
0
1
1
0
=
1
0
0
1
0
0
1
1
Parendo da destra abbiamo che:
a) 1 più 0 fa 1
b) 0 più 1 fa 1
c) 1 più 1 fa 0 con il riporto di 1
d) 1 più 0 fa 1, più 1 che riportavo fa 0 con il riporto di 1
e) 0 più 0 fa 0, più 1 che riportavo fa 1
f) 1 più 1 fa 0 con il riporto di uno
g) 1 più 0 fa 1, più 1 che riportavo fa 0 con il riporto di 1
h) 0 più 0 fa 0, più 1 che riportavo fa 1
PAG. 2.48
CAP. 2 - LA CODIFICA BINARIA DEI DATI
INFORMATICA
LA MOLTIPLICAZIONE
MOLTIPLICAZIONE: LA TABELLINA
×
0
1
0
0
0
LA MOLTIPLICAZIONE
Anche la moltiplicazione tra due numeri binari utilizza le stesse regole usate per la moltiplicazione decimale, ma ancora una volta il
procedimento è molto più semplice in quanto, al posto della classica
tabella pitagorica, si usa una tabellina molto più semplice:
0
0
1
1
1
0
1
×
×
×
×
0
1
0
1
0
= 0
= 0
= 1
=
Anche in questo caso calcoliamo, come esempio, il prodotto tra due
numeri binari:
1
ESEMPIO:
1
1
1
0
0
0
0
0
1
1
1
1
0
1
1
1
0
0
0
1
1
X
1
0
=
0
0
0
0
1
0
1
1
1
0
1
1
0
Notiamo che il calcolo dei prodotti parziali è estremamente semplice: se la cifra considerata del moltiplicatore vale 0, allora il prodotto
parziale sarà uguale a tutti 0, mentre se vale 1 sarà uguale al moltiplicando.
0
NESSUNA PARTE DI QUESTO TESTO PUÒ ESSERE RIPRODOTTA SENZA LA PREVENTIVA AUTORIZZAZIONE DELL’AUTORE
PAG. 2.50
CAP. 2 - LA CODIFICA BINARIA DEI DATI
INFORMATICA
PERCHÉ È INTERESSANTE LA NUMERAZIONE
ESADECIMALE ?
UN BYTE È SCOMODO DA RAPPRESENTARE
00101010
MA UN BYTE PUÒ ESSERE DIVISO IN 2 SEMI-BYTE
0010
0
1
2
3
4
0101
0110
0111
1000
1001
5
6
7
8
9
1010
1011
1100
1101
1110
1111
A
B
C
D
E
F
QUINDI UN BYTE PUÒ ESSERE RAPPRESENTATO
CON 2 CIFRE ESADECIMALI (SINTETICITÀ DELLA
RAPPRESENTAZIONE)
0010
1010
2
A
Prima di affrontare la problematica della codifica binaria, apriamo
una parentesi sulla numerazione esadecimale, spiegando il perché
questa numerazione è tanto interessante per chi opera nel mondo
dell’informatica. E’ stato già sottolineato che il byte è l’elemento di
memorizzazione normalmente utilizzato. Un aspetto importante, per
chi deve operare con informazioni binarie, è quello di trovare un
modo compatto per rappresentare il contenuto del byte, senza dover ricorrere alla completa enumerazione di tutti gli 8 bit:
00100110
1010
UTILIZZANDO UN NUMERIO ESADECIMALE È
POSSIBILE RAPPRESENTARE UN SEMI-BYTE
CON UNA CIFRA ESADECIMALE (FACILITÀ DI
CONVERSIONE DALLA BASE 2 ALLA BASE 16)
0000
0001
0010
0011
0100
PERCHÉ È INTERESSANTE LA NUMERAZIONE
ESADECIMALE ?
IN BINARIO
IN ESADECIMALE
Ora, se si divide il byte in 2 parti (“semibyte”), otteniamo due raggruppamenti di 4 bit, ognuno dei quali può rappresentare 16 (=24)
configurazioni diverse. L’unico modo per rappresentare un semibyte
con un solo simbolo, è proprio quello di usare un sistema di numerazione in base 16:
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
Utilizzando questa tabellina, un byte può essere comodamente rappresentato con le due equivalenti cifre esadecimali:
10011100 9CH
00110111 37H
Allo stesso modo, anche il passaggio inverso, è un’operazione facile e veloce:
DAH 11011010
Per evitare confusioni con i numeri decimali, i numeri esadecimali
sono in genere seguiti dalla lettera “H”.
NESSUNA PARTE DI QUESTO TESTO PUÒ ESSERE RIPRODOTTA SENZA LA PREVENTIVA AUTORIZZAZIONE DELL’AUTORE
PAG. 2.52
CAP. 2 - LA CODIFICA BINARIA DEI DATI
INFORMATICA
LA CODIFICA BINARIA
DELL’INFORMAZIONE
TUTTA L’INFORMAZIONE È BINARIA
1 1 0 10 0 10
1
1
1
0 1
0
1
0
0
In questo capitolo analizzeremo come ogni informazione, per quanto
complessa, possa sempre essere rappresentata con una opportuna
sequenza di bit. In particolare si cercherà di capire come è possibile rappresentare con due soli simboli, 0 e 1, informazioni tanto diverse come:
NUMERI
TESTI
IMMAGINI
SUONI
Mentre questi vari tipi d’informazioni vengono codificati dall’uomo
utilizzando simboli e codici molto diversi tra loro, all’interno del
computer sono tutti rappresentato in un formato binario. Questo
processo, chiamato anche:
CODIFICA BINARIA DELL’INFORMAZIONE,
1
0
permette di ottenere una rappresentazione uniforme di tutte le informazioni.
0
1
1
Ci piace in tal senso ricordare Leibnitz, che vedeva nella notazione
binaria “un’immagine della creazione” e sosteneva:
0
NESSUNA PARTE DI QUESTO TESTO PUÒ ESSERE RIPRODOTTA SENZA LA PREVENTIVA AUTORIZZAZIONE DELL’AUTORE
0
“il calcolo binario, che utilizza 0 e 1, a ricompensa della maggior
lunghezza è il più fondamentale per la scienza ed è all’origine di
nuove scoperte (…) la cui ragione è che, allorché i numeri sono ridotti ai principi più semplici, e cioè allo 0 e 1, appare ovunque un
ordine meraviglioso”
PAG. 2.54
CAP. 2 - LA CODIFICA BINARIA DEI DATI
INFORMATICA
CODIFICA DEI CARATTERI
I CARATTERI CHE COSTITUISCONO UN TESTO
SONO, DI NORMA, CLASSIFICATI IN TRE CATEGORIE:
• CARATTERI
ALFANUMERICI
• SEGNI
• CARATTERI DI
CONTROLLO
A,B,...,Z,a,b,...,z,0,1,2...9
,.;:!?”%&()<>=+-*/
CODICI PER LA TRASMISSIONE O
IL CONTROLLO DELLE STAMPE
LA CODIFICA DEI CARATTERI
Per poter comunicare con l’elaboratore, usando il nostro linguaggio, il
primo problema che ci si presenta è quello di rappresentare il nostro alfabeto. In base al numero di caratteri che si vogliamo rappresentare, sarà necessario individuare il numero minimo di bit che ne permetta la
rappresentazione. Se per esempio, ci si accontentasse di rappresentare
le sole lettere dell’alfabeto (maiuscole), basterebbero 5 bit per ogni carattere. Per codificare l’insieme dei simboli usati dal nostro alfabeto (o
meglio quello anglosassone), comprendendo le maiuscole e le minuscole, i numeri ed i segni d’interpunzione, sono necessari almeno 7 bit (128
configurazioni differenti).
Nella tabella seguente è riportato un esempio di codifica secondo lo
standard ASCII, che utilizza appunto 7 bit. La prima colonna riporta un
carattere dell’alfabeto (o una cifra o un segno). La seconda e la terza
colonna riportano la codifica ASCII corrispondente, espressa rispettivamente, in codifica esadecimale e in codifica binaria.
AMERICAN STANDARD CODE FOR INFORMATION INTERCHANGE
CAR
LA CODIFICA DI UN CARATTERE:
• UTILIZZA UNA SEQUENZA DI BIT
• IL NUMERO DI CARATTERI RAPPRESENTATI
DIPENDE DAL NUMERO DI BIT UTILIZZATI
• È UNA CONVENZIONE TRA I PRODUTTORI
• PUÒ ESSERE CAUSA DI INCOMPATIBILITÀ
TRA ELABORATORI DIVERSI (NECESSITÀ DI
CONVERSIONI)
NESSUNA PARTE DI QUESTO TESTO PUÒ ESSERE RIPRODOTTA SENZA LA PREVENTIVA AUTORIZZAZIONE DELL’AUTORE
HEX
BINARIA
CAR
HEX
BINARIA
...
...
.....
6
36
00110110
SPAZIO
!
“
#
$
%
&
‘
(
)
*
+
,
.
/
0
1
2
3
4
5
20
21
22
23
24
25
26
27
28
29
2A
2B
2C
2D
2E
2F
30
31
32
33
34
35
00100000
00100001
00100010
00100011
00100100
00100101
00100110
00100111
00101000
00101001
00101010
00101011
00101100
00101101
00101110
00101111
00110000
00110001
00110010
00110011
00110100
00110101
7
8
9
:
;
<
=
>
?
@
A
B
C
D
E
F
G
H
I
J
K
...
37
38
39
3A
3B
3C
3D
3E
3F
40
41
42
43
44
45
46
47
48
49
4A
4B
...
00110111
00111000
00111001
00111010
00111011
00111100
00111101
00111110
00111111
01000000
01000001
01000010
01000011
01000100
01000101
01000110
01000111
01001000
01001001
01001010
01001011
.....
PAG. 2.56
INFORMATICA
CODIFICA DEI CARATTERI
IN GENERE UN CARATTERE È CODIFICATO
IN UN BYTE UTILIZZANDO LA CODIFICA:
• ASCII (AMERICAN STANDARD CODE FOR INFORMATION
INTERCHANGE) CHE UTILIZZA SOLO 7 BIT DEGLI 8
DISPONIBILI RIUSCENDO COSÌ A CODIFICARE
SOLO 128 CARATTERI DIVERSI
•
ASCII ESTESO CHE UTILIZZA TUTTI E 8 I
BIT, CODIFICANDO 256 CARATTERI DIVERSI
•
EBCIDIC A 8 BIT, UTILIZZATO DAI COMPUTER
IBM
• UNICODE POICHÉ 256 CARATTERI SONO
INSUFFICIENTI PER LE ESIGENZE DEI DIVERSI
SISTEMI DI SCRITTURA E DI RAPPRESENTAZIONE
SIMBOLICA, È STATO PROPOSTO QUESTO NUOVO
CODICE A 16 BIT, CHE PERMETTE DI CODIFICARE
CIRCA 65.000 CARATTERI DIVERSI
CAP. 2 - LA CODIFICA BINARIA DEI DATI
GLI STANDARD PER CODIFICARE I CARATTERI
Un aspetto importante della codifica è che sia una convenzione accettata da tutti gli utilizzatori. Per tale ragione, a livello internazionale, sono
stati definiti degli standard per la rappresentazione dei caratteri. La situazione degli standard di codifica dei caratteri è la seguente.
La codifica ASCII Standard - (American Standard Code for Information
Interchange) codifica un carattere utilizzando un byte in cui il primo bit è
sempre lasciato uguale a 0; è lo standard più diffuso ed accettato, ed
è normalmente utilizzato nel mondo dei personal computer.
La codifica ASCII Esteso utilizza tutti gli 8 bit del byte, riuscendo così
a codificare ulteriori 128 caratteri (per un totale di 256).
I caratteri aggiuntivi permettono di raffigurare alcuni caratteri speciali
dei vari alfabeti, i simboli dell’alfabeto greco e alcuni simboli scientifici. Mentre la codifica ASCII standard è riconosciuta ed utilizzata da
tutti i produttori e in tutti i paesi del mondo, attualmente questo non è
vero per la codifica ASCII estesa, che può essere diversa da paese a
paese e da produttore a produttore, e può essere causa di incompatibilità tra elaboratori diversi.
La codifica EBCDIC - (Extended Binary Coded Decimal Interchange
Code) utilizza un byte per rappresentare 256 caratteri; questa codifica è stata sviluppata da IBM ed è utilizzata sui minicomputer (modelli
AS/400) e sui mainframe; non è usata sui personal; la differenza sostanziale di questo codice rispetto al codice ASCII è il diverso modo
con cui sono codificati i numeri.
Anche utilizzando 256 caratteri non è possibile rappresentare i simboli dell’alfabeto di altre lingue, come l’arabo, il russo, il giapponese,
che hanno un alfabeto completamente diverso dal nostro e composto
da molti più simboli. Per rispondere a questo problema, in questi ultimi anni si è stato proposto un nuovo tipo di standard chiamato
UNICODE, che, utilizzando 16 bit, è in grado di codificare circa
65.000 simboli diversi.
Di fatto la presenza di più standard, anche se universalmente accettati e
riconosciuti, crea dei problemi quando si mettono in comunicazione due
elaboratori che utilizzano codifiche diverse. In particolare, in quest’ultimo
caso, ogni volta che si debbano trasferire dati da un sistema all’altro,
occorre eseguire prima una trascodifica dei dati stessi.
NESSUNA PARTE DI QUESTO TESTO PUÒ ESSERE RIPRODOTTA SENZA LA PREVENTIVA AUTORIZZAZIONE DELL’AUTORE
PAG. 2.58
CAP. 2 - LA CODIFICA BINARIA DEI DATI
INFORMATICA
CODIFICA DEI NUMERI IN ASCII
CODIFICA DEI NUMERI IN ASCII
Dopo aver visto (cfr. tabella ASCII) che all’interno del codice ASCII
sono rappresentate anche le cifre decimali, la prima idea è quella di
rappresentare un numero come una sequenza di cifre codificate secondo lo standard ASCII (allo stesso modo in cui una parola può
essere pensata composta da una sequenza di caratteri).
OGNI CIFRA È CODIFICATA CON IL
CORRISPONDENTE CARATTERE ASCII
Con questo sistema il numero 1951 si può rappresentare con una
sequenza di 4 byte:
1
1
9
5
1
00110001
00111001
00110101
00110001
9
5
1
00110001 00111001 00110101 00110001
Se da una parte tale codifica, utilizzando lo standard ASCII, è riconosciuta da ogni tipo di elaboratore, dall’altra presenta alcuni gravi
inconvenienti:
• è una codifica non efficiente in termini di occupazione di memoria:
infatti, come si può notare, i primi 4 bit sono sempre uguali, in tutte le cifre;
• non è adatta per essere elaborata numericamente, e questo è un
problema ben più grave.
• SPRECA SPAZIO (EFFICIENZA)
• NON È ELABORABILE NUMERICAMENTE
(EFFICIENZA)
NESSUNA PARTE DI QUESTO TESTO PUÒ ESSERE RIPRODOTTA SENZA LA PREVENTIVA AUTORIZZAZIONE DELL’AUTORE
PAG. 2.60
CAP. 2 - LA CODIFICA BINARIA DEI DATI
INFORMATICA
CODIFICA DEI NUMERI NATURALI
0, 1, 2, 3, 4, 5, 6, 7, 8,....
LA SOLUZIONE PIÙ "RAGIONEVOLE" È QUELLA
DI CODIFICARE I NUMERI IN FORMATO BINARIO
SI POSSONO
CODIFICARE I NUMERI
INTERI COMPRESI TRA
CON
1 BYTE
0
2 BYTE
0
4 BYTE
0
255
65.535
4.294.967.295
CODIFICA DEI NUMERI NATURALI
Riflettendo sui concetti presentati, relativi ai diversi sistemi di numerazione, si scopre che esiste un modo più naturale ed efficiente per
rappresentare i numeri. Tale metodo si basa sul fatto che un numero decimale può essere facilmente convertito in un equivalente numero binario e rappresentato direttamente in termini di 0 e 1.
Usando tale metodo è possibile rappresentare facilmente qualunque numero naturale (ossia un numero intero positivo). Tale rappresentazione oltre ad essere decisamente molto più compatta di
quella vista in precedenza, è ovviamente utilizzabile direttamente
all’interno del computer, per l’esecuzione delle operazioni aritmetiche.
Un ultimo punto che si vuole mettere in evidenza, riguarda il numero di bit che debbano essere utilizzati per la rappresentazione binaria dei numeri. Vale la seguente regola (cfr. sistemi di numerazione):
con n cifre binarie è possibile rappresentare i numeri da 0 a 2n-1
Nel momento in cui si fissa il numero di bit destinati alla rappresentazione di un numero, automaticamente si fissa anche il numero
massimo gestibile con quella rappresentazione.
IN GENERALE CON
Ma cosa succede se durante una elaborazione si va oltre il massimo numero rappresentabile?
N BIT
Quando durante un’operazione aritmetica, il totale va oltre il valore
massimo rappresentabile con la configurazione di bit utilizzata, si
genera una condizione di overflow (ossia “travaso”) in quanto si va
oltre il numero di cifre destinato alla rappresentazione. Di norma
questa condizione genera una situazione d’errore che deve essere
gestita dal programma.
SI POSSONO CODIFICARE I NUMERI
NATURALI COMPRESI TRA
0
2N-1
NESSUNA PARTE DI QUESTO TESTO PUÒ ESSERE RIPRODOTTA SENZA LA PREVENTIVA AUTORIZZAZIONE DELL’AUTORE
PAG. 2.62
CAP. 2 - LA CODIFICA BINARIA DEI DATI
INFORMATICA
CODIFICA DEI NUMERI INTERI
...,-4, -3, -2, -1, 0, 1, 2, 3, 4,....
POSITIVI E NEGATIVI
SI MANTIENE LA CODIFICA BINARIA, MA
OCCORRE RISERVARE UN BIT PER
IL SEGNO
NUMERO
1° SOLUZIONE
2°SOLUZIONE
POSITIVO
1 BIT PER SEGNO
COMPLEMENTO A 2
(FACILE DA
LEGGERE)
(FACILE DA
ELABORARE)
CODIFICA DEI NUMERI INTERI
Abbiamo visto come, utilizzando la numerazione binaria, si possano
facilmente rappresentare i numeri naturali. Ma per le normali necessità elaborative è necessario avere la possibilità di rappresentare anche i numeri negativi (in sostanza i numeri interi).
Supponendo di avere N bit a disposizione per la rappresentazione
del numero, una prima idea è quella di destinare 1 bit per rappresentare il segno e gli altri N-1 bit per rappresentare il valore assoluto del numero, codificato in forma binaria. Ad esempio si potrebbe
stabilire la convenzione che il primo bit a sinistra, se uguale a zero
indica un segno positivo, mentre se uguale a 1, un segno negativo.
Questa soluzione presenta due problemi che la rendono poco utilizzata nella pratica:
• in primo luogo vi sono due rappresentazioni per lo zero, una con il
segno positivo (00000000) e l’altra con il segno negativo (10000000);
• ma il problema maggiore è che una rappresentazione di questo tipo
non è elaborabile con facilità.
Una diversa rappresentazione dei numeri negativi, che elimina questi problemi, è quella che prende il nome di:
COMPLEMENTO A DUE
00001001
10001001
11110111
IN GENERALE CON
N BIT
SI POSSONO CODIFICARE I NUMERI
INTERI COMPRESI TRA
- 2N-1
2N-1-1
NESSUNA PARTE DI QUESTO TESTO PUÒ ESSERE RIPRODOTTA SENZA LA PREVENTIVA AUTORIZZAZIONE DELL’AUTORE
e che è definita dalle seguenti regole:
• il bit più a sinistra è riservato per il segno: se vale 0 indica un
numero positivo, se vale 1, un numero negativo
• i numeri positivi vengono codificati, nei restanti N-1 bit, con le
stesse modalità dei numeri naturali;
• la rappresentazione di un numero negativo si ottiene attraverso i
seguenti tre passi:
- si codifica il valore assoluto del numero, ovvero
come se fosse positivo (ad es. 00000101)
- si invertono i bit in tale rappresentazione, mettendo
0 dove c’è 1 e viceversa (ad es. 11111010)
- si somma 1 al risultato ottenuto al passo precedente (ad es. 11111011)
PAG. 2.64
CAP. 2 - LA CODIFICA BINARIA DEI DATI
INFORMATICA
CODIFICA DEI NUMERI INTERI: UN ESEMPIO
N. DEC
SEGNO
COMPL. 2
7
6
5
4
3
2
1
0
-1
-2
-3
-4
-5
-6
-7
-8
0111
0110
0101
0100
0011
0010
0001
0000
1001
1010
1011
1100
1101
1110
1111
***
0111
0110
0101
0100
0011
0010
0001
0000
1111
1110
1101
1100
1011
1010
1001
1000
NESSUNA PARTE DI QUESTO TESTO PUÒ ESSERE RIPRODOTTA SENZA LA PREVENTIVA AUTORIZZAZIONE DELL’AUTORE
I NUMERI NEGATIVI CODIFICATI IN COMPLEMENTO A 2
Il vantaggio di usare la rappresentazione in “complemento a 2” è
quello di poter calcolare la differenza tra due numeri utilizzando solamente l’operazioni di somma. Vediamo, in un esempio, come funziona in pratica questo metodo. Supponiamo di voler calcolare:
5-3
Utilizzando la rappresentazione in complemento a 2 è come se calcolassimo:
5 + (-3).
Elenchiamo i passi attraverso cui si procede:
I) come primo passo codifichiamo 5; ricordiamo che il primo bit deve
essere uguale a 0, mentre i restanti bit codificheranno il valore 5; il risultato sarà:
00000101
II) quindi codifichiamo -3 utilizzando la codifica in complemento a 2; per
prima cosa codifichiamo il valore 3:
00000011
poi invertiamo i segni:
11111100
e infine sommiamo 1 al numero risultante:
11111101
III) Ora possiamo sommare i due valori:
00000101 +
11111101 =
100000010
in cui il bit cerchiato è il bit di overflow e va ignorato.
Il risultato è quindi 00000010 e cioè 2.
PAG. 2.66
CAP. 2 - LA CODIFICA BINARIA DEI DATI
INFORMATICA
CODIFICA BINARIA VS. CODIFICA ASCII
UN NUMERO PUÒ ESSERE RAPPRESENTATO
• CODIFICANDO TUTTE LE SUE CIFRE
COME SE FOSSERO CARATTERI ASCII
• CON LA CODIFICA BINARIA
NUMERO
INTERO
CODIFICA
BINARIA
CODIFICA
ASCII
4
0000 0100
0011 0100
18
0001 0010
0011 0001
0011 1000
123
0111 1011
CODIFICA BINARIA
0011 0001
0011 0010
0011 0011
• COMPATTA
• ADATTA PER
FARE I CALCOLI
CODIFICA ASCII
• ADATTA PER
INPUT/OUTPUT
CODIFICA BINARIA VS. CODIFICA ASCII
Nello schema della figura a fianco, troviamo a confronto i due sistemi appena visti per la codifica di un numero. Abbiamo già discusso dei vantaggi e degli svantaggi dell’uno e dell’altro metodo.
Vogliamo ora aggiungere un’ulteriore considerazione sulla codifica
da utilizzare quando un dato deve essere inviato ad un dispositivo
di input/output (“I/O device”). Prendiamo a riferimento la stampante
collegata ad un personal computer. Tutti dati che vengono inviati
alla stampante devono essere necessariamente codificati come caratteri nello standard ASCII. E’ questa infatti l’unica codifica universalmente adottata e riconosciuta dai dispositivi periferici.
Per i dati di tipo testo questo fatto non comporta alcun tipo di problema (in quanto sono già codificati, all’interno del computer, in
formato ASCII), ma per i dati numerici la cosa cambia: ogni volta
che un dato numerico (normalmente codificato all’interno
dell’elaboratore in un formato binario) deve essere inviato ad un dispositivo di output, come appunto una stampante o un video, deve
essere prima trascodificato in formato ASCII.
Anche in fase di input dei dati c’è lo stesso tipo di problema: tutti i
dati numerici acquisiti tramite un dispositivo di input, come una tastiera, sono in realtà letti come una sequenza di cifre, codificate in
formato ASCII: prima di poter essere elaborati devono pertanto essere trascodificati in formato binario.
Questo fatto non è da sottovalutare: in alcuni tipi di applicazioni (per
esempio quelle relative alla gestione aziendale) l’attività di input/output è normalmente maggiore dell’attività di calcolo vera e
propria. Questo significa che l’attività appena descritta di ricodifica
da binario ad ASCII e viceversa può diventare critica.
• NON PUÒ ESSERE
ELABORATA
NESSUNA PARTE DI QUESTO TESTO PUÒ ESSERE RIPRODOTTA SENZA LA PREVENTIVA AUTORIZZAZIONE DELL’AUTORE
PAG. 2.68
CAP. 2 - LA CODIFICA BINARIA DEI DATI
INFORMATICA
UN COMPROMESSO: LA CODIFICA BCD (BINARY
CODE DECIMAL)
OGNI CIFRA DEL NUMERO VIENE CODIFICATA
CON 4 BIT (SEMIBYTE) CHE RAPPRESENTANO
LA CIFRA IN CODICE BINARIO
UN COMPROMESSO: LA CODIFICA BCD
(BINARY CODE DECIMAL)
Una soluzione al problema (prospettato nella pagina precedente) di
trovare una codifica ottimale per i dati numerici, la si può trovare
nell’uso della codifica BCD (binary code decimal). Questo codifica
rappresenta infatti un ottimo compromesso tra due opposte esigenze:
• COMPATTEZZA DELLA
CODIFICA
• SEMPLICITÀ E VELOCITÀ
DI ELABORAZIONE
• UTILIZZABILITÀ PER
OPERAZIONI DI I/O
0
0000
5
0101
1
0001
6
0110
2
0010
7
0111
Nello schema a fianco viene illustrato come vengono codificati i
numeri utilizzando la codifica BCD.
3
0011
8
1000
Praticamente ogni cifra del numero viene codificata con 4 bit
(semibyte) secondo la tabella seguente.
4
0100
9
1001
NUMERO
INTERO
CODIFICA
BINARIA
CODIFICA
ASCII
CODIFICA
BCD
18
0001 0010
0011 0001
0011 1000
0001 1000
123
0111 1011
0011 0001
0011 0010
0011 0011
0000 0001
0010 0011
NESSUNA PARTE DI QUESTO TESTO PUÒ ESSERE RIPRODOTTA SENZA LA PREVENTIVA AUTORIZZAZIONE DELL’AUTORE
0
1
2
3
4
5
6
7
8
9
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
(peraltro, ad una più attenta osservazione, si scopre che questi 4 bit altro
non sono che la rappresentazione della cifra stessa in codice binario).
Nel caso di un numero intero (con segno), un semibyte viene poi
riservato alla rappresentazione del segno.
PAG. 2.70
CAP. 2 - LA CODIFICA BINARIA DEI DATI
INFORMATICA
BCD VS. BINARIO
LA CODIFICA BCD DI UN NUMERO:
OCCUPA PIÙ SPAZIO IN MEMORIA, MA È LA
METÀ DELLA CODIFICA ASCII
ES. IL MASSIMO NUMERO CHE SI PUÒ RAPPRESENTARE
CON UN BYTE È:
11111111
10011001
00111001
255
99
9
in binario
in BCD
in ASCII
NON È UTILIZZABILE DIRETTAMENTE PER
OPERAZIONI DI I/O, MA LA CONVERSIONE È
MOLTO PIÙ SEMPLICE CHE PER IL BINARIO
BCD VS. BINARIO
A questo punto viene da chiedersi se c’era proprio necessità di inventarsi un’ulteriore modalità di codifica e, nel caso affermativo quali siano i vantaggi. Vediamoli.
1. Un numero codificato in BCD occupa più spazio in memoria
dell’equivalente codifica in binario, ma comunque occupa sempre
la metà di un numero che utilizzi la codifica ASCII.
Ad es. il massimo numero che si può rappresentare con un byte è:
11111111
- in binario: 255
99
10011001
- in BCD:
9
00111001
- in ASCII:
2. un numero in BCD non è utilizzabile direttamente per le operazioni di I/O, ma la conversione in formato ASCII è di gran lunga
più facile e veloce rispetto al formato binario puro. E questo abbiamo visto essere un aspetto di particolare rilevanza quando si
devono effettuare pochi calcoli ma molte stampe (EDP).
3. Infine, mentre un numero in formato ASCII per essere elaborato
vie sempre convertito in binario, esistono particolari unità di elaborazione in grado di eseguire calcoli direttamente con numeri in
formato BCD.
BASTA PRENDERE IL SEMI-BYTE CHE RAPPRESENTA UNA
CIFRA BCD ED AGGIUNGERE A SINISTRA “0011”
PERMETTE L’ESECUZIONE DIRETTA DELLE
OPERAZIONI MATEMATICHE, A PATTO CHE
L’UNITÀ DI ELABORAZIONE SIA IN GRADO
DI ESEGUIRE CALCOLI CON NUMERI IN
FORMATO BCD
MENTRE IL FORMATO ASCII NON È ELABORABILE.
NESSUNA PARTE DI QUESTO TESTO PUÒ ESSERE RIPRODOTTA SENZA LA PREVENTIVA AUTORIZZAZIONE DELL’AUTORE
PAG. 2.72
CAP. 2 - LA CODIFICA BINARIA DEI DATI
INFORMATICA
COME SI PUÒ RAPPRESENTARE UN NUMERO
INTERO ?
COME SI PUÒ RAPPRESENTARE UN NUMERO INTERO ?
A questo punto alla domanda:
“Come si può rappresentare un numero all’interno dell’elaboratore?”
dovremmo essere tutti in grado di rispondere con sicurezza. In funzione dell’uso che andremo a fare, possiamo codificarlo:
• in binario
BINARIO
• in BCD
00001101
(0DH)
• in ASCII
BCD
13
00010011
(13H)
ASCII
00110001
00110011
NESSUNA PARTE DI QUESTO TESTO PUÒ ESSERE RIPRODOTTA SENZA LA PREVENTIVA AUTORIZZAZIONE DELL’AUTORE
(31H)
(33H)
PAG. 2.74
CAP. 2 - LA CODIFICA BINARIA DEI DATI
INFORMATICA
NUMERI REALI: N. ESPONENZIALE
DA UN PUNTO DI VISTA MATEMATICO,
UN NUMERO REALE PUÒ ESSERE ESPRESSO
IN NOTAZIONE ESPONENZIALE
1856,8
0,18568 E+4
CHE SIGNIFICA 0,18568 × 104
IN CUI
0,18568
+4
PRO:
SI CHIAMA
SI CHIAMA
NUMERI REALI: LA NOTAZIONE ESPONENZIALE
Finora è stata trattata la rappresentazione dei numeri interi. Peraltro, poiché la rappresentazione di un numero avviene su un sistema
fisico, utilizzando un numero ben definito di bit, questo pone di conseguenza un limite al numero massimo rappresentabile.
Cerchiamo ora di capire come sia possibile:
• rappresentare i numeri reali, come ad esempio 1856,8, che non
è rappresentabile in nessuna delle codifiche viste in precedenza;
• rappresentare i numeri molto grandi, mantenendo l’ordine di
grandezza e accontentandoci di una precisione limitata, senza dover riservare centinaia di bit in memoria per la loro rappresentazione.
Questo tipo di problema si risolve da un punto di vista matematico. Infatti, poiché un numero come 1856,8 può essere rappresentato mediante quella che si chiama notazione esponenziale,
1856,8
0 , 1 8 5 6 8 E+4
(che equivale a 0,18568 × 104)
MANTISSA
ESPONENTE
SI POSSONO RAPPRESENTARE
NUMERI MOLTO GRANDI (O MOLTO
PICCOLI) CON POCHE CIFRE
CONTRO: SI PUÒ PERDERE IN PRECISIONE
NESSUNA PARTE DI QUESTO TESTO PUÒ ESSERE RIPRODOTTA SENZA LA PREVENTIVA AUTORIZZAZIONE DELL’AUTORE
in cui
• 0,18568 si chiama mantissa
• + 4 si chiama esponente
il numero stesso può essere codificato attraverso una coppia di
numeri interi (18568 e 4) che indicano rispettivamente la mantissa e
l’esponente .
Con la notazione esponenziale si possono rappresentare, con poche cifre, anche numeri molto grandi (o molto piccoli), anche se
questo può andare a scapito della precisione. Per fare un esempio,
supponiamo di voler rappresentare il numero:
1.000.000.000.000.000.000.000
Utilizzando il metodo della notazione esponenziale noi possiamo
ricondurlo alla forma seguente: 0,1 E+22. Con pochissime cifre è stato
possibile rappresentare un numero grandissimo che, con qualunque
altro tipo di codifica, avrebbe richiesto un numero di bit.
PAG. 2.76
CAP. 2 - LA CODIFICA BINARIA DEI DATI
INFORMATICA
NUMERI REALI: LA CODIFICA
CODIFICA DEI NUMERI REALI
UNA POSSIBILE RAPPRESENTAZIONE (FLOATING
POINT) DI UN NUMERO REALE NELL’ELABORATORE
CONSISTE NEL CODIFICARE:
• LA MANTISSA SU 3 BYTE
• L’ESPONENTE SU 1 BYTE
Una possibile rappresentazione di un numero reale, espresso in notazione esponenziale, avendo, ad esempio, disponibili 32 bit, potrebbe essere la seguente:
• 1 bit per il segno della mantissa
• 23 bit per il valore assoluto della mantissa
• 1 bit per il segno dell’esponente
• 7 bit per il valore assoluto dell’esponente
Ovviamente la precisione dipende dal numero di bit riservati alla mantissa, mentre la dimensione dai bit riservati all’esponente.
MANTISSA
00000000 01001000 10001000
ESP.
00000100
+18568
+4
• IL CALCOLO CON I NUMERI REALI È MOLTO
“PESANTE” ( A MENO CHE L’ELABORATORE
NON DISPONGA DI UNITÀ DI CALCOLO
SPECIALIZZATE: FLOATING POINT UNIT)
• LA RAPPRESENTAZIONE DEI NUMERI REALI
È SOGGETTA AD APPROSSIMAZIONI (CHE SI
PROPAGANO NELL’ESECUZIONE DI CALCOLI
SUCCESSIVI)
• LA PRECISIONE DIPENDE DAL NUMERO DI BIT
RISERVATI ALLA MANTISSA, LA DIMENSIONE
DAI BIT RISERVATI ALL’ESPONENTE
NESSUNA PARTE DI QUESTO TESTO PUÒ ESSERE RIPRODOTTA SENZA LA PREVENTIVA AUTORIZZAZIONE DELL’AUTORE
Per eseguire le operazioni aritmetiche con i numeri reali, la cui codifica è chiamata anche floating point, si usano tecniche particolari
e, a meno che l’elaboratore non disponga di “floating point unit” (o
coprocessore), il calcolo è molto “pesante”. Inoltre poiché la rappresentazione dei numeri reali è soggetta ad approssimazioni, si può
verificare che, nell’esecuzione di calcoli successivi, si possano propagare errori dovuti alla necessità di avere risultati approssimati,
con effetti disastrosi.
Un’ultima notazione per finire:
qualunque rappresentazione si utilizzi, i bit usati per rappresentare
un valore, saranno per forza un numero finito e quindi consentirà di
rappresentare solo un insieme finito di numeri, rappresentabili da un
insieme finito di cifre. In questo senso possiamo anche dire che
l’aritmetica dei calcolatori è un sottoinsieme dell’aritmetica dei numeri reali.
PAG. 2.78
CAP. 2 - LA CODIFICA BINARIA DEI DATI
INFORMATICA
CODIFICA DELLE IMMAGINI
CODIFICA DELLE IMMAGINI
• L’IMMAGINE È
SUDDIVISA IN
PUNTI (PIXEL)
Dopo aver visto come si codificano il testo ed i numeri (le informazioni più tradizionali usate all’interno del computer), cercheremo ora
di capire, senza addentrarci negli aspetti puramente tecnici, con
quali modalità sono codificate le immagini.
• PIÙ PIXEL, PIÙ
RISOLUZIONE
Prendiamo come esempio l’immagine in bianco e nero di un triangolo, illustrata nella figura a fianco, e vediamo come sia possibile
rappresentarla in “modo digitale”.
I. Il primo passo consiste nel sovrapporre all'immagine una griglia
formata da righe orizzontali e verticali a distanza costante. Tutti i
quadratini, di uguale dimensione, che costituiscono la griglia vengono chiamati pixel (picture element).
CIASCUN PIXEL È
CODIFICATO COME
6
5
0
0
0
0
0
0
1
1
1
0
0
1
1
1
0
0
0
1
1
0
0
0
0
1
0
0
0
0
0
0
• COLORE
• POSIZIONE
BITMAP
“000000011000011100011110000000”
IL PROCESSO DI CODIFICA SI CHIAMA
DIGITALIZZAZIONE DELL’IMMAGINE
NESSUNA PARTE DI QUESTO TESTO PUÒ ESSERE RIPRODOTTA SENZA LA PREVENTIVA AUTORIZZAZIONE DELL’AUTORE
II. A questo punto ogni quadratino della griglia (pixel) può essere:
• completamente bianco, se esterno all’area del triangolo
• completamente nero se interno all’area del triangolo
• in parte bianco ed in parte nero se si trova sul bordo della figura geometrica.
Assumiamo, come prima convenzione, quella di codificare con:
“1” i pixel completamente neri e quelli in cui la parte nera è
maggiore di quella bianca;
“0” i pixel completamente bianchi e quelli in cui la parte bianca
è maggiore di quella nera.
III. Ora, come seconda convenzione, consideriamo di leggere i pixel
partendo da sinistra verso destra e dall’alto verso il basso. In
questo modo otterremo una lunga sequenza di “0” e di “1” , ovvero la rappresentazione in formato digitale della nostra immagine
(vedi anche figura):
“000000011000011100011110000000”
Dopo quest'operazione, l'immagine di partenza si è trasformata in
una sorta di mappa composta di “0” e di “1”: il nome tecnico che si
usa per descrivere questa sequenza di bit è proprio BITMAP. Questo processo è anche chiamato “digitalizzazione” dell’immagine.
PAG. 2.80
CAP. 2 - LA CODIFICA BINARIA DEI DATI
INFORMATICA
LA “RISOLUZIONE”
“000000011000011100011110000000”
L’IMMAGINE
RIPRODOTTA È UNA
APPROSSIMAZIONE
DELLA “REALTÀ”
UN PRIMO ELEMENTO: LA ”RISOLUZIONE”
Se però proviamo a ricostruire l’immagine partendo dalla sua codifica (vedi figura a fianco), ci accorgiamo subito che il risultato è soltanto una brutta approssimazione della realtà. Il fatto è che, avendo
utilizzato una griglia con una maglia molto larga, i pixel risultanti
hanno una dimensione troppo grande: il risultato è quello di ottenere una rappresentazione della realtà molto approssimata.
Ma vediamo ora cosa accade quando aumentiamo il numero di pixel
(dimezzando il lato dei quadratini della griglia): la rappresentazione
del triangolo (v. figura a fianco), pur ancora con grosse differenze rispetto alla realtà, è già sensibilmente migliorata. Questo ci permette
di capire che più fitta sarà la griglia che sovrapponiamo all'immagine
e più la rappresentazione risulterà aderente all'originale. E in particolare, quando i pixel non saranno più riconoscibili come entità distinte,
allora probabilmente l'occhio percepirà l'immagine così com'era nella
sua forma originale.
Si usa il termine RISOLUZIONE per indicare il numero di
pixel utilizzati per la rappresentazione digitalizzata dell'immagine ovvero per indicare con quale granulosità viene effettuata la sua suddivisione in pixel.
RADDOPPIANDO IL
NUMERO DI PIXEL
MIGLIORA LA
APPROSSIMAZIONE
CON CUI È
RAPPRESENTATA
LA “REALTÀ”
LA RISOLUZIONE È CORRELATA AL NUMERO
DI PIXEL (E QUINDI ALLA LORO DIMENSIONE)
NESSUNA PARTE DI QUESTO TESTO PUÒ ESSERE RIPRODOTTA SENZA LA PREVENTIVA AUTORIZZAZIONE DELL’AUTORE
C’è un stretta relazione tra il numero di pixel che compongono
un’immagine e la loro grandezza. Infatti, a parità di dimensione di
un'immagine, più sono numerosi i pixel e più sono piccoli: il risultato
è una qualità più elevata dell'immagine digitale, via via più vicina all'originale. D'altra parte però, una griglia via via più fitta, significa
una maggiore numero di pixel e quindi un numero maggiore di bit
che dovranno essere utilizzati per rappresentare l'immagine stessa.
Più precisamente la “misura” della risoluzione comprende due aspetti.
1. Il primo è relativo alla quantità di punti che compongono l'immagine;
si misura indicando le righe orizzontali e verticali della griglia (ad
esempio 640 x 480, ovvero 640 pixel orizzontali X 480 verticali).
Qualche volta, in maniera equivalente, si indica il numero totale
di pixel che costituiscono l'immagine; ad esempio nel caso delle
macchine fotografiche digitali, è usuale dire che la macchina
produce foto da 1,2 megapixel (ovvero 1,2 milioni di pixel, che
equivalgono ad un’immagine da 1280 x 960 pixel).
PAG. 2.82
INFORMATICA
CAP. 2 - LA CODIFICA BINARIA DEI DATI
2. Quanto detto è relativo ad una rappresentazione interna dell'immagine ovvero ad una rappresentazione mantenuta all'interno del
computer, codificata in termini di “0” e “1”. Nel momento in cui l'immagine viene riprodotta su un dispositivo fisico (sia a video che su
carta), entra in gioco un ulteriore elemento che definisce la qualità
finale dell'immagine, così come verrà percepita. Questo ulteriore
elemento è la dimensione che assume il pixel nel momento in cui
viene impresso sul supporto fisico (schermo del video o foglio di
carta della stampante).
pixel. In termini pratici questo significa avere a disposizione una tavolozza (in inglese “palette”) composta da oltre 16 milioni di colori.
Normalmente non si misura la dimensione del singolo pixel, ma
piuttosto si indica il numero di pixel presenti in una specifica area:
di norma si indicano i punti per pollice (DPI =dot per inch);
questa ad esempio è la tipica misura utilizzata nel caso delle
stampanti (attualmente le stampanti hanno una risoluzione
che può variare tra 300-1200 DPI);
per i video poi, più comunemente si preferisce indicare il numero di punti che è in grado di visualizzare (con una terminologia
simile a quello utilizzata per definire la risoluzione dell'immagini): in questo caso si parla di una risoluzione di 800 x 600, rapportata alla dimensione fisica dello schermo (in termini di DPI la
risoluzione di un video di norma varia tra 72 e 96 DPI).
1. la risoluzione e la profondità colore forniscono, a prescindere dal
formato di stampa o di visualizzazione, una indicazione della ricchezza di dettagli complessiva dell'immagine e della sua capacità di
raffigurare la realtà;
UN SECONDO ELEMENTO: LA PROFONDITÀ COLORE
Finora abbiamo esaminato come si realizza la codifica di un’immagine
in bianco e nero (B/N). La codifica di immagini a colori (o con più tonalità di grigi) è concettualmente identica, con un unica differenza relativa al numero di bit utilizzati per codificare il singolo pixel.
Supponendo, ad esempio, di voler riconoscere 16 colori diversi, dovremmo utilizzare 4 bit per codificare le possibili 16 tonalità di colore
che ogni pixel può assumere. Se poi volessimo utilizzare 256 possibili tonalità avremmo necessità di un intero byte per la codifica del
colore. Questo significa anche che, a parità di risoluzione, la dimensione della codifica di un’immagine, cresce all’aumentare del numero di colori gestiti.
La maggior parte delle schede grafiche attuali è in grado di utilizzare
fino a 24 bit (o addirittura 32) per descrivere il colore di ogni singolo
NESSUNA PARTE DI QUESTO TESTO PUÒ ESSERE RIPRODOTTA SENZA LA PREVENTIVA AUTORIZZAZIONE DELL’AUTORE
RIASSUMENDO
La codifica “bitmap” è la scelta ideale per la memorizzazione di immagini
fotografiche: il numero dei pixel (RISOLUZIONE) ed il numero di colori
associato ad ogni pixel (PROFONDITÀ COLORE) sono i due elementi
fondamentali che definiscono la qualità immagine:
2. più è alta la qualità, sia sotto il profilo della risoluzione che della profondità colore, tanto più numerosi saranno i bit necessari per la rappresentazione dell'immagine stessa;
3. la risoluzione deve essere precisata al momento della creazione di
un immagine; infatti, se successivamente si decide di ingrandire
un’immagine, i pixel, mancanti verranno interpolati da quelli vicini e
per quanto possa essere “sofisticato” l'algoritmo d’interpolazione utilizzato, raramente il risultato sarà soddisfacente ma, anzi, la qualità
dell’immagine risulterà quasi sempre compromessa;
4. la dimensione dei pixel relativa al supporto su cui l'immagine viene
stampata o visualizzata, è l'ulteriore parametro che ci permette di valutare la qualità finale, così come verrà percepita dall'osservatore.
Riprendendo un concetto espresso all'inizio di questo capitolo, possiamo dire che l'immagine, ovvero un'informazione di tipo analogico, è stata rappresentata in formato digitale mediante una sequenza di campioni:
questi campioni sono i pixel.
LE TECNOLOGIE DIGITALI NELL'USO PROFESSIONALE
Una volta digitalizzata, l’immagine può essere elaborata sul computer
con specifiche tecniche digitali, ottenendo risultati impossibili da realizzare con qualunque altro sistema. Queste nuove possibilità hanno fatto
sì che l’elaborazione digitale delle immagini si sia diffusa in ambito professionale, al di fuori del mondo dell’informatica.
PAG. 2.84
INFORMATICA
CODIFICA RASTER
CAP. 2 - LA CODIFICA BINARIA DEI DATI
FORMATO DELLA CODIFICA GRAFICA (“RASTER”)
(FORMATI BMP, GIF, TIFF, JPG, PCX)
La modalità di rappresentazione di un'immagine, così come l’abbiamo descritta, viene genericamente chiamata codifica “bitmap” o
“raster”.
UN’IMMAGINE RASTER È FORMATA
DA PUNTI, DENOMINATI PIXEL,
DISPOSTI IN UNA GRIGLIA, A
OGNUNO DEI QUALI SONO
ASSOCIATE LE INFORMAZIONI
RELATIVE AL COLORE.
Un ulteriore importante aspetto, che caratterizza un'immagine “raster” è quello relativo al FORMATO con cui l'immagine stessa viene
codificata (e quindi salvata sul file). Esistono molti formati disponibili
che si caratterizzano per:
1. risoluzione massima e profondità colore che possono rappresentare;
2. possibilità o meno di comprimere i dati, con l'obiettivo di ottenere il file di dimensioni ridotte; in tal caso però certi metodi di
compressione (detti “distruttivi” o “lossy” in inglese) possono
influire negativamente sulla qualità dell'immagine, nel senso
che il minor numero di byte risultante dopo la compressione, si
paga con una minore qualità dell'immagine.
Di seguito vengono indicati i principali formati attualmente utilizzati.
AUMENTANDO IL LIVELLO DI INGRANDIMENTO
DELL’IMMAGINE, I PIXEL DIVENTANO BEN
VISIBILI.
FORMATO BMP
Il formato BMP è lo standard di Windows: viene utilizzato dal programma di gestione immagini “Paintbrush” (inserito in Windows) e
le immagini create con questo formato possono essere usate come
sfondo del desktop di Windows.
E’ LA SCELTA IDEALE PER LA MEMORIZZAZIONE
DI IMMAGINI FOTOGRAFICHE.
In funzione della risoluzione e della profondità colore, un'immagine
in formato BMP può avere una qualità elevatissima: questo comporta, di conseguenza, anche una dimensione del file molto grande,
che ne rende praticamente impossibile l'utilizzo su Internet.
LA QUALITÀ DELLE IMMAGINI RASTER È
DIPENDENTE DALLA RISOLUZIONE
UN’IMMAGINE RASTER È MOLTO SEMPLICE DA
VISUALIZZARE SUL MONITOR O DA STAMPARE
NESSUNA PARTE DI QUESTO TESTO PUÒ ESSERE RIPRODOTTA SENZA LA PREVENTIVA AUTORIZZAZIONE DELL’AUTORE
FORMATO GIF
il formato GIF (definito da Compuserve) può rappresentare al massimo 256 colori. Una caratteristica particolare di questo formato è
quella di permettere la realizzazioni di immagini animate (GIF animate). Il formato GIF è un formato compresso, adatto quindi per essere utilizzato sul Web. La compressione (non distruttiva) è realizzata
con il metodo LZW.
PAG. 2.86
INFORMATICA
FORMATO JPG
il formato JPG (Joint Photographic Experts Gropup) è sicuramente
uno dei formati più diffusi.
Utilizza una tecnica standard di compressione dell'immagine ideata
per comprimere immagini reali, sia a colori che in scala di grigi. Tale
tecnica di compressione permette di eliminare le informazioni non
necessarie, come ad esempio i colori che l'occhio umano non distingue. Il fatto che elimina informazioni fa sì che questo formato
venga definito “distruttivo” (“lossy”, in inglese) in quanto non mantiene le stesse informazioni cromatiche dell’immagine originaria. In
molti casi però la differenza non è riconoscibile.
CAP. 2 - LA CODIFICA BINARIA DEI DATI
Le immagini TIFF occupano molto spazio e la resa non è migliore di
un’immagine elaborata in JPG; ma, a differenza di quest'ultimo, è
un formato non distruttivo e quindi permette l'elaborazione di
un'immagine in fasi successive senza perdita di qualità (perdita che
invece si avrebbe memorizzando l'immagine in formato JPG).
FORMATO IMG
Questo formato è stato utilizzato originariamente dal programma
grafico GEM Paint. Di seguito è stato utilizzato dal programma di
impaginazione VENTURA Publisher che ne ha permesso la diffusione. I file IMG sono monocromatici o a livelli di grigio.
In generale il formato JPEG ha un rapporto di compressione che
varia da 5:1 a 15:1. La compressione viene decisa al momento di
salvare l'immagine nel formato JPEG.
Questo formato è comunemente utilizzato per le immagini sul web e
per quelle allegate ai messaggi di posta elettronica.
FORMATO TIFF
Il formato TIFF (Tagged Image File Format) è stato sviluppato dalla
Adus Corp. con l'obiettivo di farlo diventare il formato standard per
le immagini raster. Attualmente TIFF è il formato più utilizzato durante il trattamento dell'immagine:
è usato spesso per archiviare l'immagine originale e come formato di scambio fra diversi programmi di trattamento immagini,
in quanto da questo formato si può convertire in quasi tutti gli altri formati grafici;
è un formato non distruttivo;
è il formato in cui, di solito, vengono archiviate le immagini ottenute dagli scanner;
è il formato in cui conviene conservare le immagini ed i grafici
fino a che questi devono essere elaborati.
Il formato TIFF non possiede un proprio formato di compressione,
ma le immagini vengono compresse con tecniche standard come
ad esempio il metodo di compressione LZW, lo stesso usato dal
formato GIF.
NESSUNA PARTE DI QUESTO TESTO PUÒ ESSERE RIPRODOTTA SENZA LA PREVENTIVA AUTORIZZAZIONE DELL’AUTORE
PAG. 2.88
INFORMATICA
CODIFICA VETTORIALE
UN’IMMAGINE VETTORIALE CONSISTE IN UNA
SERIE DI ISTRUZIONI MATEMATICHE PER IL
TRACCIAMENTO DI OGNI SINGOLO ELEMENTO
CHE COMPONE L'IMMAGINE.
CAP. 2 - LA CODIFICA BINARIA DEI DATI
CODIFICA VETTORIALE
Come abbiamo visto nelle pagine precedenti, un'immagine raster è
formata da un insieme di pixel. I pixel vengono visualizzati sullo
schermo come quadratini, ma la loro dimensione è talmente minima
che normalmente l'occhio non riesce a percepire il singolo pixel.
Tuttavia se si aumenta il livello di ingrandimento dell'immagine i
pixel diventano visibili.
Questo però non è l'unico modo per rappresentare un'immagine in
un formato digitale. Una modalità di rappresentazione completamente diversa è quella che viene chiamata codifica “vettoriale”.
Un’immagine vettoriale consiste in una serie di istruzioni matematiche per il tracciamento di ogni singolo elemento che
compone l'immagine. La codifica tratta tutto come rette,
segmenti e curve. Più precisamente ogni elemento di
un’immagine vettoriale ha associate le informazioni relative
alla propria forma, alla posizione nell’immagine, ai punti iniziale e finale, alla larghezza, al colore. L’interpretazione di
questa sequenza di istruzioni produce l’effetto di “disegnare
l’immagine” sul dispositivo di output.
Tutto ciò rende adatta questo tipo di codifica per logo, caratteri e disegni al tratto.
CODIFICA ADATTA PER LOGO, CARATTERI E DISEGNI
IMMAGINI “SCALABILI”
PRIMA DELLA STAMPA IL COMPUTER PROVVEDE A
“RASTERIZZARLA”
ALCUNI FORMATI: WMF, EMF, EPS, DRW, CDR, HGL
NESSUNA PARTE DI QUESTO TESTO PUÒ ESSERE RIPRODOTTA SENZA LA PREVENTIVA AUTORIZZAZIONE DELL’AUTORE
Le immagini in formato vettoriale sono indipendenti dalla risoluzione. Tali immagini possono essere ingrandite senza perdere i dettagli, dal momento che vengono memorizzate come insiemi di istruzioni, non come raccolte di pixel. L’immagine viene creata ogni volta
che viene visualizzata. In questo caso si dice anche che sono “scalabili” senza perdita di informazioni, sia per quanto riguarda il disegno vero e proprio che per la parte testuale.
Quando un’immagine in un formato vettoriale deve essere visualizzata sul monitor o stampata, il computer provvede a “rasterizzarla”,
ovvero a trasformarla in pixel.
Un ultimo aspetto della codifica vettoriale è relativo alla dimensione
del file: un disegno codificato in formato vettoriale ha una occupazione molto minore rispetto ad una corrispondente codifica raster.
PAG. 2.90
CAP. 2 - LA CODIFICA BINARIA DEI DATI
INFORMATICA
I FORMATI VETTORIALI
Anche nel caso della codifica vettoriale dell'immagine, esistono numerosi formati che sono stati definiti negli anni e che è possibile utilizzare.
In particolare, molti di questi formati che si ritengono vettoriali, consentono all’utente anche l’inclusione di dati non vettoriali, come testo o immagini rasterizzate.
Ad esempio i formati “meta” di Windows non supportano solamente
dati vettoriali. Ad esempio, un metafile di Windows può contenere
una bitmap, informazioni vettoriali e testo. La bitmap costituisce la
maggior parte dell’immagine, mentre i dati vettoriali e di testo costituiscono le annotazioni.
Di seguito vengono elencati i formati vettoriali più importanti.
• WMF
MICROSOFT WINDOWS METAFILE
• EMF
WINDOWS ENHANCED METAFILE
• DRW
MICROGRAFX DRAW
• CDR
COREL DRAW
• EPS
ENCAPSULATED POSTSCRIPT
• DXF
AUTODESK
• HGL
HEWLETT-PACKARD GRAPHICS LANGUAGE
ED I VARI FORMATI CAD
CONFRONTO RASTER – VETTORIALE
RASTER
VETTORIALE
Un’immagine raster è formata da Un'immagine vettoriale è composta
punti, denominati pixel, disposti in da una serie di istruzioni che indiuna griglia.
cano come l'immagine stessa deve
essere disegnata
Un oggetto viene rappresentato e
memorizzato come un insieme di
pixel, a ognuno dei quali sono associate le informazioni relative al
colore.
Un oggetto viene scomposto in singoli elementi grafici (segmenti, curve, ...) ognuno dei quali ha associate
le informazioni relative alla propria
forma, posizione nell'immagine, colore, dimensione, ecc.
Aumentando il livello di ingrandi- Un'immagine vettoriale può essere
mento dell’immagine, i pixel diven- ingrandita senza perdere i dettagli.
tano ben visibili.
Può avere una occupazione molto Normalmente ha una occupazione
elevata, in particolare quando si ridotta
usa una risoluzione elevata e
quando il formato non prevede la
compressione
Un’immagine raster è molto semplice da visualizzare sul monitor o
da stampare: i pixel corrispondono
ai punti del video, mentre sulla
stampante vengono convertiti in
punti d’inchiostro.
Un'immagine vettoriale, per essere
visualizzata o stampata, deve
essere
prima
convertita
in
un'immagine raster
I pixel possono essere sfumati in Questa codifica è l’ ideale per disemodo da creare bordi meno definiti gni al tratto, disegni geometrici, loe transizioni graduali tra gli oggetti. go, caratteri
Questa caratteristica rende questo
tipo di codifica la scelta ideale per
il salvataggio di immagini fotografiche.
NESSUNA PARTE DI QUESTO TESTO PUÒ ESSERE RIPRODOTTA SENZA LA PREVENTIVA AUTORIZZAZIONE DELL’AUTORE
PAG. 2.92
CAP. 2 - LA CODIFICA BINARIA DEI DATI
INFORMATICA
CODIFICA DEL SUONO
CODIFICA DEL SUONO
In questo paragrafo prendiamo in esame le tecniche utilizzate per la
rappresentazione digitale di un altro importante tipo di informazione,
quella sonora.
VOL
Ricordiamo cosa ci insegna la fisica:
“il suono si può rappresentare come un’onda sonora che descrive la variazione della pressione dell’aria nel tempo (v. la
curva rossa nella figura a fianco).
5
a1
Questa rappresentazione, di tipo analogico, descrive esattamente,
per ogni istante considerato, il valore della quantità fisica in esame.
Come sappiamo le informazioni analogiche, essendo di tipo “continuo”, non sono assolutamente gestibili sugli elaboratori digitali. Il
problema che allora si pone è quello di trovare una modalità che
permetta di passare da un’informazione di tipo analogico ad una di
tipo digitale, anche se magari approssimata.
0
t1
t
• A INTERVALLI PREFISSATI t1 SI MISURA
L’AMPIEZZA a1
• PIÙ PICCOLO È L’INTERVALLO DI CAMPIONAMENTO,
PIÙ ALTA È LA QUALITÀ DEL SUONO MEMORIZZATO
La tecnica utilizzata per la rappresentazione digitale consiste nel
misurare il valore dell’onda sonora a intervalli regolari di tempo e
nel codificare i valori rilevati in forma digitale. Questa tecnica viene
chiamata “campionamento”. Ovviamente tanto più piccolo è
l’intervallo in cui vengono campionati i valori (o maggiore sarà la
frequenza con cui si effettuano campionamenti), tanto più la rappresentazione dell’onda sarà precisa.
Anche se il tipo di informazione è completamente diverso, ancora
una volta la qualità del risultato della codifica dipende dalla numerosità dei campioni: mentre per quanto riguarda l’immagine è il numero di pixel, qui è la frequenza con cui si effettuano i campionamenti che dà la qualità del suono.
IL PROCESSO DI CODIFICA SI CHIAMA
CAMPIONAMENTO
NESSUNA PARTE DI QUESTO TESTO PUÒ ESSERE RIPRODOTTA SENZA LA PREVENTIVA AUTORIZZAZIONE DELL’AUTORE
----------------------------------Vale anche per i suoni quanto detto per le immagini: le possibilità offerte dalle
tecniche di elaborazione digitale dei suoni sono talmente numerose ed efficaci, che hanno portato questo tipo di tecnologia al di fuori dell’ambito della informatica.
PAG. 2.94
CAP. 2 - LA CODIFICA BINARIA DEI DATI
INFORMATICA
STANDARD DI CODIFICA DEL SUONO
CODIFICA WAV
FORMATO PER LA MEMORIZZAZIONE DI SEGNALI AUDIO
SECONDO LA TECNICA PCM, UTILIZZATA SUI SISTEMI
WINDOWS
QUALITÀ CD AUDIO, DIPENDENTE DALLA FREQUENZA DI
CAMPIONAMENTO DA 8 A 44 KHZ
PRODUCE FILE MOLTO GRANDI DELL’ORDINE DI 10 MBYTE
PER 1 MINUTO DI REGISTRAZIONE
CODIFICA MP3
UTILIZZA UNA TECNICA DI COMPRESSIONE CHE ELIMINA LE
INFORMAZIONI SONORE NON PERCEPITE DALL’ORECCHIO
UMANO
CON UNA QUALITÀ PRATICAMENTE PARI ALLA CODIFICA
WAV, REALIZZA UNA RIDUZIONE DEI DATI DI UN FATTORE 12
UTILIZZATA SU INTERNET
CODIFICA RM
NECESSITA DI UN LETTORE REAL AUDIO
STANDARD DI CODIFICA DEL SUONO
Con la tecnica appena vista, per codificare la voce umana (che ha
frequenze tipicamente inferiori ai 4 KHz) è necessario:
produrre 8.000 campioni al secondo, il che equivale a campionare il segnale ogni 125 milionesimi di secondo;
usare 8 bit per la codifica di ogni campione;
In definitiva, il numero di bit necessari per codificare 1 secondo di
voce umana è pari a:
8.000 campioni x 8 bit/campione = 64.000 bit ≅ 7,8 KB/sec
La codifica della musica, con una qualità pari a quella dei normali CD,
richiede un numero di byte molto superiore. Infatti per la musica di
qualità è necessario:
utilizzare due registrazioni distinte, una per il canale destro e
l’altra per il canale sinistro (corrispondenti a due microfoni);
produrre 44.100 campioni al secondo,
usare 16 bit per ogni campione.
Anche in questo caso è possibile calcolare il numero di bit necessari per codificare 1 secondo di musica:
2 x 44.100 campioni x 16 bit/camp. = 1.411.200 bit = 172,2 KB/sec
MOLTO COMPRESSO, UTILIZZZATO IN STREAMING
CODIFICA MIDI
NON SI CODIFICA IL SUONO MA LE ISTRUZIONI (NOTE
MUSICALI) PER GENERARLO
Questi semplici calcoli mostrano come cresce il numero di bit necessari per la memorizzazione del suono al crescere della “qualità”
cui si rappresenta l'informazione sonora.
PUÒ ESSERE UTILIZZATO PER CONTROLLARE DA
COMPUTER STRUMENTI MUSICALI DOTATI DI INTERFACCIA
DIGITALE
USATO PER I GIOCHI, SUL WEB E PER LE SUONERIE DEI
TELEFONI CELLULARI
NESSUNA PARTE DI QUESTO TESTO PUÒ ESSERE RIPRODOTTA SENZA LA PREVENTIVA AUTORIZZAZIONE DELL’AUTORE
PAG. 2.96
INFORMATICA
CAP. 2 - LA CODIFICA BINARIA DEI DATI
IL FORMATO REAL AUDIO
LA CODIFICA STANDARD DI WINDOWS: .WAV
Sui sistemi Windows, per la memorizzazione dei segnali audio, viene utilizzata una tecnica definita PCM. I file corrispondenti, che utilizzano questo formato per la memorizzazione del suono, hanno l'estensione .WAV.
Utilizzando questo sistema di codifica, la qualità dipende dalla frequenza di campionamento e dal numero di bit utilizzati per ogni
campione. Con una adeguata frequenza di campionamento si può
ottenere un'ottima qualità audio, tant'è che questo è il formato utilizzato nei classici CD audio per la memorizzazione dei brani musicali.
Il limite di questa codifica consiste nei file molto grandi che produce,
dell'ordine di:
circa 0,5 MB per un minuto di voce registrata;
circa 10 MB per un minuto di musica registrata in qualità CD.
Questo fatto rende inutilizzabile questo tipo di codifica sul Web.
UN FORMATO COMPRESSO: MP3
Utilizzando l'algoritmo denominato “MP34” è possibile “comprimere”
un file audio di tipo .WAV:
con una perdita di qualità praticamente inavvertibile all'orecchio
umano;
ma realizzando una riduzione dei dati pari a circa un fattore 12.
I file “musicali” compressi con questa tecnica hanno come estensione “.MP3” e vengono genericamente chiamati “file mp3”. Questo
formato compresso, riducendo l’occupazione di un file sonoro di un
ordine di grandezza, ha avuto una grandissima diffusione e ha reso
possibile lo scambio di brani musicali attraverso Internet.
4
Un altro formato compresso, molto utilizzato per trasmettere audio
attraverso il Web, è il formato Real Audio. I file che utilizzano questo formato si riconoscono dalla estensione “.RM”.
Per il loro ascolto è necessario disporre di un particolare programma, il “lettore Real Audio” , liberamente scaricabile Internet. Un file
RM ha dimensioni più ridotte rispetto ai file WAV e MP3, ma anche
la qualità audio è sensibilmente inferiore.
Tipicamente i file Real Audio si ascoltano via Web, in modalità “streaming”, ovvero con la riproduzione della musica che inizia e continua
mano a mano che il computer riceve i dati dalla rete, senza la necessità di doverli scaricare sul disco fisso del proprio computer.
IL FORMATO MIDI
Il formato MIDI rappresenta un modo completamente diverso di codificare i suoni. Infatti a differenza dei formati appena visti, un file
MIDI non contiene al suo interno il suono degli strumenti, bensì le
note che devono essere eseguite.
In altre parole è come se, all'interno del file, ci fossero codificate le istruzioni per il dispositivo di output (ad es. la scheda audio). Elaborando queste istruzioni, il dispositivo riesce a riprodurre le note richieste, con una timbrica simile a quella degli strumenti musicali definiti nelle stesse istruzioni. Il limite è che permette la sola riproduzione di suoni generati con strumenti (in altre parole non è possibile
codificare la voce).
Questo modo di codificare il suono permette al file MIDI di avere una
grandissima compattezza: ogni singolo evento MIDI (che può essere pensato equivalente a una nota) occupa soltanto undici byte e un
intero brano musicale occupa mediamente qualche decina di KB.
Questo fatto ha reso i file MIDI molto utilizzati per la realizzazione
delle colonne sonore all'interno delle pagine Web, nei giochi e per le
suonerie dei telefonini.
(MPEG-LAYER 3, una variante dell'algoritmo MPEG)
NESSUNA PARTE DI QUESTO TESTO PUÒ ESSERE RIPRODOTTA SENZA LA PREVENTIVA AUTORIZZAZIONE DELL’AUTORE
PAG. 2.98
CAP. 2 - LA CODIFICA BINARIA DEI DATI
INFORMATICA
CONFRONTO MIDI E WAV CON CODIFICA GRAFICA
CONFRONTO TRA LE DIVERSE CODIFICHE
Un interessante confronto può essere fatto tra i formati utilizzati per la
codifica delle immagini e i formati utilizzati per la codifica dei suoni.
CODIFICA DELLE
IMMAGINI
DIFFERENZE TRA FORMATO MIDI E WAVE
Codifiche
Raster
BMP
GIF
JPEG
TIFF
MIDI
IN UN FILE MIDI CI
SONO SOLO COMANDI
WAVE
IN UN FILES WAVE
CI SONO SUONI
SE FACCIAMO UN PARALLELO CON LA
CODIFICA DELLE IMMAGINI
CODIFICA
VETTORIALE
CODIFICA
RASTER
NESSUNA PARTE DI QUESTO TESTO PUÒ ESSERE RIPRODOTTA SENZA LA PREVENTIVA AUTORIZZAZIONE DELL’AUTORE
Codifiche
Vettoriali
WMF
EMF
DRW
EPS
DXF
CONFRONTO
Una prima categoria di formati, ha l'obiettivo di codificare l'informazione, sia grafica che sonora, attraverso il processo di
digitalizzazione. In altre parole, le tecniche che appartengono questa prima categoria elaborano l'informazione analogica
(corrispondente ad un'immagine o a un
suono) trasformandola in una informazione digitalizzata.
Appartengono a questa prima categoria
tutte le codifiche “raster” e le codifiche
WAV, MP3 e RM nel caso dei suoni.
Questa seconda categoria approccia il
problema della rappresentazione dell'informazione, sia visiva che sonora, da un
punto di vista diametralmente opposto.
Invece di partire dall’informazione analogica e dallo studio dei metodi per la sua
scomposizione in “campioni” che possano
essere poi tradotti in un formato digitale, si
pone l'obiettivo di identificare le opportune
“istruzioni” con cui pilotare specifici dispositivi di output, in modo tale che si possa
generare l'informazione di partenza. Ad
esempio, invece di procedere con il campionamento del suono e con la memorizzazione dei relativi campioni, si cerca di
identificare le istruzioni (note) con cui pilotare una scheda audio, in modo tale che
riproduca il brano musicale di partenza.
Appartengono a questa seconda categoria le codifiche vettoriali (per la grafica) e
la codifica MIDI (per i suoni).
CODIFICA DEI
SUONI
WAV
MP3
RM
MIDI
PAG. 2.100
CAP. 2 - LA CODIFICA BINARIA DEI DATI
INFORMATICA
MA COSA CONTIENE UN BYTE IN MEMORIA?
MA ALLORA COSA RAPPRESENTA QUEL BYTE IN MEMORIA?
Giunti al termine di questo capitolo, verifichiamo il livello di comprensione raggiunto dal lettore, relativamente alla codifica binaria
dell’informazione, con una domanda :
00110001
“Il byte “00110001”, che supponiamo sia presente in
qualche parte nella memoria del nostro sistema, cosa
rappresenta ?”
UN NUMERO INTERO
IN CODIFICA BINARIA
UN NUMERO INTERO
IN CODIFICA BCD
UN NUMERO REALE
IN FLOATING POINT
UN CARATTERE IN
CODIFICA ASCII
La risposta dovrebbe ormai essere nota: il byte, in quanto codifica
binaria di un dato (o di una sua parte) può rappresentare molteplici
tipi di informazione. Tra le altre potrebbe essere:
•
•
•
•
•
•
•
•
un numero intero codificato in binario
un numero intero codificato in BCD
un numero intero codificato in ASCII
una parte della codifica un numero reale in floating point;
un carattere in formato ASCII
una parte della codifica di un‘immagine
una parte della codifica di un suono
e altro ancora.
Da non dimenticare poi che in memoria ci sono anche i programmi
e che quel byte potrebbe anche rappresentare la codifica di una istruzione del programma.
“ Ma allora come si fa a capire che cosa rappresenta ?”
CODIFICA DI UN
IMMAGINE
Il byte (come tutti i dati) di per se stesso non ha alcun significato. Acquista significato soltanto nel momento in cui lo interpretiamo in funzione della “realtà che rappresenta”.
CODIFICA DI UN
SUONO
Sotto questo punto di vista possiamo anche dire che la domanda
iniziale era stata posta male e che, per poter avere una risposta,
andrebbe riformulata, per esempio, in questi termini:
MA ANCHE LE
ISTRUZIONI DI UN
PROGRAMMA
NESSUNA PARTE DI QUESTO TESTO PUÒ ESSERE RIPRODOTTA SENZA LA PREVENTIVA AUTORIZZAZIONE DELL’AUTORE
“Sapendo che quel byte rappresenta un carattere codificato in codice ASCII, quale carattere rappresenta ?”
PAG. 2.102
CAP. 2 - LA CODIFICA BINARIA DEI DATI
INFORMATICA
APPENDICE 1
GLI OPERATORI LOGICI
GLI OPERATORI LOGICI
OPERATORE NOT
L’OPERAZIONE NOT INVERTE IL SEGNO.
A
0
1
NOT A
1
0
OPERATORE OR
IL RISULTATO È VERO QUANDO ALMENO
UNO DEI DUE OPERANDI È VERO
A
0
0
1
1
B
0
1
0
1
A OR B
0
1
1
1
OPERAZIONE AND
IL RISULTATO È VERO SOLO SE TUTTI
E DUE GLI OPERANDI SONO VERI
A
0
0
1
1
B
0
1
0
1
A AND B
0
0
0
1
NESSUNA PARTE DI QUESTO TESTO PUÒ ESSERE RIPRODOTTA SENZA LA PREVENTIVA AUTORIZZAZIONE DELL’AUTORE
Gli operatori logici sono stati definiti nell’ambito di un formalismo
detto Algebra di Boole. Questa algebra si basa sull’applicazione di
tre operazioni logiche (dette anche operazioni booleane) a operandi
che possono assumere due soli valori: vero o falso.
Se ipotizziamo di codificare con 1 il valore vero, e con 0 il valore
falso, possiamo adeguatamente rappresentare un operando di una
espressione booleana con un bit.
I tre operatori elementari, previsti all’interno dell’Algebra di Boole (e
chiamati anche operatori booleani), sono:
NOT, OR, AND
Il funzionamento dei tre operatori è definito da quelle che si chiamano tavole di verità.
A
0
1
NOT A
1
0
L’operazione NOT si applica a 1 operando.
L’operazione NOT inverte il segno.
A
0
0
1
1
B
0
1
0
1
A OR B
0
1
1
1
L’operazione OR si applica a 2 operandi.
L’operazione OR dà come risultato vero
se almeno uno dei due operandi è vero
A
0
0
1
1
B
0
1
0
1
A AND B
0
0
0
1
L’operazione AND si applica a 2 operandi.
L’operazione AND dà come risultato vero
solo se tutti e due gli operandi sono veri
PAG. 2.104
CAP. 2 - LA CODIFICA BINARIA DEI DATI
INFORMATICA
ESPRESSIONI BOOLEANE
Proprietà associativa
(A OR B) OR C = A OR (B OR C)
(A AND B) AND C = A AND (B AND C)
ESPRESSIONI BOOLEANE
Applicando le tre operazioni booleane a diversi operandi si possono
costruire espressioni logiche (o booleane) di varia complessità.
La valutazione di una espressione logica consiste nella valutazione
del valore (0,1) dell’espressione, in funzione del valore degli operandi. In altri termini si tratta di creare una tavola della verità
dell’espressione.
Riportiamo alcune delle principali proprietà degli operatori booleani.
Proprietà associativa
Proprietà commutativa
A AND B = B AND A
A OR B = B OR A
(A AND B) AND C = A AND (B AND C)
(A OR B) OR C = A OR (B OR C)
Proprietà commutativa
A AND B = B AND A
A OR B = B OR A
Proprietà di idempotenza
A AND A = A
A OR A = A
Proprietà di idempotenza
A AND A = A
A OR A = A
Leggi di Morgan
Leggi di Morgan
NOT (A AND B) = (NOT A) OR (NOT B)
NOT (A OR B) = (NOT A) AND (NOT B)
NOT (A AND B) = (NOT A) OR (NOT B)
NOT (A OR B) = (NOT A) AND (NOT B)
NESSUNA PARTE DI QUESTO TESTO PUÒ ESSERE RIPRODOTTA SENZA LA PREVENTIVA AUTORIZZAZIONE DELL’AUTORE
PAG. 2.106
CAP. 2 - LA CODIFICA BINARIA DEI DATI
INFORMATICA
LE PROPOSIZIONI
LE PROPOSIZIONI
Una particolare forma assunta dagli operandi sono le proposizioni,
di cui ne vediamo alcuni esempi. Per un concorso, i candidati devono possedere i seguenti requisiti:
A. devono avere un’età maggiore o uguale a 21 anni
B. e (un’età) minore di 46 anni
ESEMPIO:
PER UN CONCORSO, I CANDIDATI
POSSEDERE I SEGUENTI REQUISITI:
A. DEVONO AVERE UN’ETÀ MAGGIORE
O UGUALE A 21 ANNI
B. E (UN’ETÀ) MINORE DI 46 ANNI
DEVONO
PER QUANTO RIGUARDA IL TITOLO DI STUDIO,
DOVRANNO AVERE
C. UNA LAUREA IN INGEGNERIA
D. O (UNA LAUREA) IN FISICA
(A AND B) AND (C OR D)
Per quanto riguarda il titolo di studio,
C. dovranno avere una laurea in ingegneria
D. o (una laurea) in fisica
In questo esempio abbiamo individuato 4 proposizioni, chiamate per
brevità A, B, C, D. L’espressione booleana che rende il significato
del testo è la seguente:
(A AND B) AND (C OR D)
Valutiamo l’espressione calcolando la sua tavola della verità.
A
B
C
D
espress
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
0
0
0
0
0
0
0
1
0
0
0
1
0
0
0
1
Il risultato =1 (vero) si ha quando A e B sono entrambe vere e
quando C oppure D oppure tutte e due sono vere
NESSUNA PARTE DI QUESTO TESTO PUÒ ESSERE RIPRODOTTA SENZA LA PREVENTIVA AUTORIZZAZIONE DELL’AUTORE
PAG. 2.108
Scarica

TEORIA Cap 2-Codifica binaria