Sistemi di elaborazione delle informazioni

Transcript

Sistemi di elaborazione delle informazioni
SISTEMI DI ELABORAZIONE
DELLE INFORMAZIONI
PROF. GIUSEPPE PORCARO
PRO.SSA M ARIA TERESA TATTOLI
1
SOMMARIO
I SISTEMI DI ELABORAZIONE ..............................................................................3
ARCHITETTURA DELL’HARDWARE DI UN SISTEMA DI ELABORAZIONE ......................4
La CPU ...................................................................................................................... 5
La memoria centrale ................................................................................................... 6
Il BUS ....................................................................................................................... 7
LA RAPPRESENTAZIONE DELLE INFORMAZIONI .....................................................9
L’elettronica digitale dei computer ................................................................................ 9
Rappresentazione binaria dell’informazione ................................................................... 9
Il byte ...................................................................................................................... 9
I sistemi di numerazione ........................................................................................... 10
Rappresentazione binaria dei numeri negativi .............................................................. 13
Rappresentazione di numeri frazionari ........................................................................ 14
La Codifica dei Caratteri ............................................................................................ 15
2
I SISTEMI DI ELABORAZIONE
Un sistema di elaborazione, o computer o calcolatore elettronico, è un sistema in grado di
risolvere automaticamente problemi e trattare in maniera automatica informazioni. È però un
mero esecutore di istruzioni e, in quanto tale, ha bisogno di essere istruito o programmato
dall'esterno. Le sequenze di istruzioni impartite al computer prendono il nome di programmi.
In un sistema di elaborazione si possono così identificare due componenti principali:
l’hardware
il software
L’hardware (parte dura) è la parte fisica del computer, l’insieme di tutti i componenti di natura
elettronica e meccanica che lo costituiscono (l’unità centrale, con tutti i suoi componenti, la
tastiera, il mouse, il monitor, ecc.); essi sono visibili e tangibili.
Il software si contrappone all’hardware come parte “morbida” del sistema, dal momento che
comprende tutte quelle parti che non hanno una consistenza fisica, in particolare i programmi
che permettono allo strumento di operare.
Si distingue in:
software di base
software applicativo
Il software di base è composto da un insieme di programmi in grado di far funzionare la
macchina, gestendo e ottimizzando l’uso delle risorse del sistema e fornendo tutta una serie di
funzionalità di supporto per l’utente; è software di base il Sistema Operativo (S.O.), senza il
quale il computer non è utilizzabile.
Il software applicativo è invece l’insieme dei programmi che non sono compresi nel sistema
operativo, ma che devono essere installati dall'utente per svolgere compiti specifici. Per
esempio, sotto Windows, il programma di videoscrittura Microsoft Word è forse l'applicativo più
diffuso. Word non fa parte di Windows ma deve essere acquistato a parte e installato sulla
macchina, su cui deve essere già presente il sistema operativo. Sono programmi applicativi
anche gli antivirus, i programmi per la navigazione in Internet e per la posta elettronica, i
programmi di grafica e per il ritocco fotografico, i lettori audio/video, le applicazioni aziendali
(fatturazione, gestione del personale, gestione clienti e fornitori), i videogiochi, ecc.
A rigore fanno parte degli applicativi anche alcune utilità che si installano assieme a Windows
stesso, come il Blocco note, la Calcolatrice, Paint, WordPad; si tratta infatti di semplici
programmi che non sono essenziali per il funzionamento della macchina (potrebbero anche
essere rimossi senza comprometterne in alcun modo il funzionamento), ma vengono installati
assieme al sistema operativo soltanto per offrire all'utente alcune semplici applicazioni di base.
Infatti, se su un computer si trovasse esclusivamente il sistema operativo e nessun
programma applicativo, la macchina funzionerebbe perfettamente, ma l'utente non sarebbe
nelle condizioni di adoperarla in modo utile.
Sulla base di questi suoi componenti, si può sviluppare la seguente struttura per
piattaforme di un sistema di elaborazione:
Software applicativo
Software di base
Hardware
La piattaforma hardware è quella al livello più basso; è la più lontana dall’utente ed è quella su
cui operano le altre piattaforme. Al livello immediatamente superiore c’è il software di base,
che gestisce le risorse dell’hardware, mettendole a disposizione dell’utente. L’installazione del
software applicativo può avvenire unicamente sul software di base, per cui quella del software
applicativo è l’ultima piattaforma, la più vicina all’utente.
3
ARCHITETTURA DELL’HARDWARE DI UN SISTEMA DI ELABORAZIONE
Un calcolatore elettronico è una macchina estremamente complessa, costituita da centinaia di
componenti hardware. Lo schema di funzionamento è però piuttosto semplice:
L’unità centrale è l’unità di elaborazione vera e
propria, mentre la periferia è l’insieme delle
periferiche (P1, P2, …, Pn), che sono dispositivi
che mettono in collegamento l’unità centrale con
il mondo esterno.
Le periferiche si classificano in:
- periferiche di input (ingresso), per
l’inserimento dei dati da elaborare nell’unità
centrale; ne sono esempi la tastiera, il
mouse, lo scanner, il microfono.
- periferiche di output (uscita), per l’invio dei
risultati delle elaborazioni dall’unità centrale
all’esterno; ne sono esempi il monitor, la
stampante, il plotter, gli altoparlanti.
- periferiche
di
input/output,
che
consentono sia l’input che l’output; ne sono
esempio le unità di memorizzazione di
massa (memorie secondarie), usate per
memorizzare in modo permanente programmi
e dati, che vengono sia letti che scritti in tali unità. La memoria di massa più importante è
sicuramente il disco rigido (hard disk); molto diffuse sono attualmente le pen drive, che
stanno prendendo il posto dei floppy disk, ormai in disuso dopo oltre 20 anni di predominio.
L’unità centrale è invece così strutturata:
4
Lo schema si basa su quattro componenti fondamentali:
CPU (Central Processing Unit – Unità centrale di elaborazione), che svolge le
funzioni di elaborazione e controllo. Essa contiene i dispositivi elettronici in grado di
acquisire, interpretare ed eseguire i programmi, elaborando
i dati che arrivano
dall'esterno.
Memoria centrale (o memoria principale), in cui vengono memorizzati sia i
programmi che devono essere eseguiti che i dati che devono essere elaborati dai
programmi.
Devices, che sono i dispositivi d’interfacciamento verso l’esterno; gestiscono lo
scambio d'informazione fra l'elaboratore e le periferiche.
Bus, che è l’insieme dei collegamenti elettrici che si occupano della comunicazione fra i
vari componenti, realizzando un supporto fisico per la trasmissione dei dati tra di essi.
C’è poi il Clock, un temporizzatore che
scandisce i tempi di esecuzione delle
operazioni da parte delle varie unità,
sincronizzandone le attività. Il segnale del
clock è periodico; è un’onda quadra che
oscilla per centinaia di milioni di volte al
secondo. Il segnale è costituito da un livello
di tensione che, periodicamente, in modo
regolare, fa una rapida transizione dal valore zero ad un valore che generalmente coincide con
la tensione di alimentazione del circuito, rimane a questo livello per un certo tempo e poi in
modo altrettanto rapido ritorna a livello zero, dove rimane ancora per un certo tempo e poi il
ciclo si ripete. La commutazione di tutti i circuiti logici avviene durante la transizione di questa
tensione.
La CPU
La CPU (Central Processing Unit – Unità Centale di Elaborazione) è senz’altro la parte più
importante e complessa di un calcolatore elettronico. Essa controlla il flusso dei dati in tutto il
sistema ed esegue i programmi.
È così strutturata:
E’ composta dalle seguenti unità:
Serializzatore (S) o Unità di Controllo (CU - Control Unit)
Unità Aritmetico-Logica (ALU - Arithmetic Logic Unit).
Memoria Locale (ML), composta da una serie di piccole e velocissime unità di
memorizzazione chiamate Registri.
Il serializzatore gestisce la sequenza delle operazioni che la CPU deve compiere per eseguire
un programma; tali operazioni sono:
1. Fase di caricamento (fetch): il serializzatore legge dalla memoria centrale la prossima
5
istruzione del programma da eseguire.
2. Fase di decodifica (decode): il serializzatore
interpreta l’istruzione e la traduce in singole operazioni
(microistruzioni) da svolgere, individuando i dati da
utilizzare.
3. Fase di esecuzione (execute): le unità interessate
all’esecuzione
dell’istruzione
vengono
attivate,
eventualmente vengono caricati i dati necessari e/o
scritti i risultati dell’operazione.
I passi da 1 a 3 si ripetono fino al raggiungimento di
un'istruzione di stop (es. la fine del programma) o fino al
verificarsi di un errore.
Compito dell'unità aritmetico-logica è eseguire le operazioni aritmetiche (addizioni, sottrazioni,
ecc.) e logiche (come i confronti e le operazioni dell’algebra di Boole – AND, OR, NOT).
Per tutte le operazioni, la CPU utilizza i registri per depositare temporaneamente i dati, le
istruzioni e gli indirizzi per accedere alla memoria centrale.
La memoria centrale
Come già detto, tutti i programmi applicativi che devono essere eseguiti (normalmente
residenti in memoria di massa) e i dati che devono essere elaborati devono essere “caricati”
nella memoria centrale, da cui vengono poi prelevati dalla CPU in fase di esecuzione.
L’hardware e i sistemi operativi dei moderni sistemi di elaborazione consentono di caricare in
memoria centrale contemporaneamente più programmi da eseguire.
All’interno del computer vi sono in realtà due tipi di memoria:
- la RAM, che è la memoria centrale propriamente
detta. RAM sta per Random Access Memory,
cioè memoria ad accesso casuale. Si parla di
BIOS
ROM
accesso casuale (o accesso diretto) perché è
possibile accedere direttamente ad ogni cella
d’informazione
(denominata
locazione)
che
NUCLEO DEL S.O.
compone la memoria e il tempo impiegato per
accedervi non dipende dalla posizione in cui essa si
PROG1
trova, ma è lo stesso per tutte le celle. La RAM è
una memoria volatile: i suoi componenti
elettronici sono tali da perdere la carica quando si
PROG2
toglie la corrente, per cui si perde anche
l’informazione in essi contenuta.
…
- la ROM (Read Only Memory – memoria di sola
R
lettura), che è una memoria permanente e non
PROGn
A
voltatile; in essa risiede il BIOS, un insieme di
M
programmi predisposti dal costruttore e che
governano l’avvio della macchina al momento
DATI1
dell’accensione. Tra questi vi è il programma di
bootstrap, che si occupa di avviare il S.O., del
DATI2
quale viene caricato, dal disco rigido, il nucleo
nella RAM. Il nucleo è l’insieme dei comandi base
del S.O., che restano residenti in memoria centrale
…
fino allo spegnimento. Tutte le altre componenti
del S.O. rimangono invece nel disco rigido e
DATIn
vengono caricati in memoria centrale solo quando
devono essere eseguite.
La dimensione della memoria centrale (denominata capacità) è fondamentale ai fini della
velocità del computer: se la memoria centrale non dovesse più aver spazio disponibile per le
esecuzioni richieste, sarà utilizzato il disco rigido, in cui sarà temporaneamente spostata una
6
parte del contenuto della memoria centrale, in modo da liberare lo spazio necessario alle nuove
elaborazioni; si parla in questo caso di gestione della memoria virtuale.
Il disco rigido è però notevolmente più lento della memoria centrale, per cui tanto più si accede
ad esso, tanto più diminuiscono le prestazioni del sistema in termini di velocità.
Il BUS
D1, D2, … Dn individuano le devices che controllano le periferiche.
Il bus è un insieme di canali che permettono a periferiche e componenti del sistema di
dialogare tra loro. Si tratta di una serie di connessioni elettriche, ognuna delle quali può
trasmettere cifre binarie (0 o 1) in successione.
Il bus
•
•
•
è articolato in:
bus dati
bus indirizzi
bus comandi (o bus di controllo)
Il bus dati è il bus sul quale transitano dati e informazioni, che possono essere valori numerici,
valori letterali (stringa), istruzioni (codici dei programmi). È usufruibile da tutti i componenti
del sistema, sia in scrittura sia in lettura. È quindi bidirezionale.
Il bus indirizzi è il bus attraverso il quale la CPU invia l’indirizzo per individuare le unità a cui
sono rivolti dati e comandi; sia le celle della memoria centrale, sia le devices che controllano le
periferiche di Input/Output sono infatti identificate da indirizzi, tramite cui è possibile fare
7
riferimento ad esse. La trasmissione dei dati, ad esempio per operazioni di lettura/scrittura,
avviene poi tramite il bus dati.
Il bus indirizzi è fruibile in scrittura solo dalla CPU ed in lettura dagli altri componenti, in
quanto tramite questo bus viene dato solo l'indirizzo della cella, che è deciso dalla CPU. È
quindi monodirezionale.
Il bus controlli è un insieme di collegamenti il cui scopo è coordinare le attività del sistema.
Tramite queste linee, la CPU può decidere, ad esempio, quale componente deve essere attivato
per scrivere o leggere sul bus dati in un determinato momento o se un led si deve accendere
sulla tastiera, etc.
Senza un controllo da parte dalla CPU si verrebbero a creare conflitti e collisioni.
8
LA RAPPRESENTAZIONE DELLE INFORMAZIONI
L’elettronica digitale dei computer
I componenti base dei computer (CPU, memorie, devices) sono
realizzati attraverso componenti elettronici digitali, che hanno la
caratteristica di operare solo su due livelli: on/off, assenza o
presenza di tensione (es.: 0-5V) o di corrente, assenza o
presenza di carica elettromagnetica, o, semplicemente, 0 o 1.
Questa unità elementare d’informazione, che potremmo
rappresentare come un interruttore (chiuso=1, aperto=0),
prende il nome di bit (binary digit, cioè cifra binaria).
Si potrebbe allora pensare, ad esempio, alle celle della memoria
centrale, ciascuna delle quali contiene in genere 8 bit, come ad
una sequenza di interruttori, chiusi o aperti a seconda che si
debba memorizzare il bit 1 o il bit 0 (immagine a destra).
Rappresentazione binaria dell’informazione
Come detto, con un unico bit possono essere rappresentate 2 differenti informazioni. Tuttavia,
mettendo insieme più bit, è possibile rappresentare un numero, anche molto elevato, di
informazioni.
Attraverso 2 bit, per esempio, possono essere rappresentate 4 differenti informazioni:
00, 01, 10, 11
con 3 bit è possibile rappresentare 8 differenti informazioni:
000, 001, 010, 011, 100, 101, 110, 111
con 4 bit è possibile rappresentare 16 differenti informazioni:
0000, 0001, 0010, 0011, 0100, 0101, 0110, 0111, 1000, 1001, 1010, 1011, 1100, 1101,
1110, 1111
e così via. In generale con n bit è possibile rappresentare 2n differenti informazioni.
Gli attuali personal computer operano su sequenze di 32 o 64 bit. Questo vuol dire che sono in
grado di elaborare blocchi di informazione, ognuno dei quali può codificare ben 232=
4.294.967.295 o 264=18.446.744.073.709.551.616 informazioni differenti.
Il byte
In informatica ha particolare importanza il concetto di byte. Un byte è l’equivalente di 8 bit,
per cui con un byte è possibile rappresentare 28 = 256 differenti informazioni. Il byte è
utilizzato come unità di misura per le dimensioni della memoria, la velocità di trasmissione, la
potenza di un elaboratore. Multipli del byte sono:
kilobyte
KB
210 Byte
megabyte
MB
220 Byte
gigabyte
GB
230 Byte
terabyte
TB
240 Byte
petabyte
PB
250 Byte
exabyte
EB
260 Byte
zettabyte
ZB
270 Byte
yottabyte
YB
280 Byte
Queste definizioni in realtà non sono in accordo con i prefissi del SI, che le ha
espressamente vietate, riconoscendo invece le seguenti:
9
kilobyte
KB
103 Byte
kibibyte
KiB
210 Byte
megabyte
MB
106 Byte
mebibyte
MiB
220 Byte
gigabyte
GB
109 Byte
gibibyte
GiB
230 Byte
terabyte
TB
1012 Byte
tebibyte
TiB
240 Byte
petabyte
PB
1015 Byte
pebibyte
PiB
250 Byte
exabyte
EB
1018 Byte
exbibyte
EiB
260 Byte
zettabyte
ZB
1021 Byte
zebibyte
ZiB
270 Byte
yottabyte
YB
1024 Byte
yobibyte
YiB
280 Byte
Molto spesso però si usano le associazioni della prima tabella, ad esempio per esprimere la
capacità di memoria. Anche la maggior parte dei software (compresi i sistemi operativi)
utilizzano quelle definizioni per indicare valori come la dimensione di un file o lo spazio
disponibile su hard disk.
Va detto però che questo equivoco sta giocando un ruolo a favore dei costruttori: chi compra
un hard disk da 200GB, ad esempio, si aspetta generalmente 200*230 Byte (214.748.364.800
Byte), mentre 200GB equivalgono, secondo il SI, a 200*109, che è un numero nettamente
inferiore (200.000.000.000 Byte).
I sistemi di numerazione
Sul bit è stato formulato, per consentire al computer l’elaborazione delle informazioni, un
sistema di numerazione, detto sistema di numerazione binario, alternativo al sistema
decimale, da noi comunemente utilizzato nella vita quotidiana.
Il sistema decimale è basato su 10 differenti cifre (si dice che la base è 10), dalla cifra 0 alla
cifra 9, ed è di tipo posizionale. Il termine posizionale deriva dal fatto che, a seconda della
posizione che una cifra occupa nella rappresentazione di un numero, essa è caratterizzata da
un peso. Ad esempio, si consideri il numero 1524; la posizione delle cifre obbedisce al
seguente schema:
1
↑
posizione 3
5
↑
posizione 2
2
↑
posizione 1
4
↑
posizione 0
La cifra 4 è quella meno significativa, poiché rappresenta le unità; la cifra 2 rappresenta le
decine; la cifra 5 rappresenta le centinaia; la cifra 1 rappresenta le migliaia.
Grazie alla caratteristica posizionale, un numero decimale può essere espresso come
sommatoria di potenze di 10, le quali rappresentano i pesi delle posizioni, secondo il seguente
schema:
Posizione
0
1
2
3
…
Peso
Unità
Decine
Centinaia
Migliaia
…
Potenza di 10
100=1
101=10
102=100
103=1000
…
In tal modo, il precedente numero, 1524, può essere espresso nel seguente modo:
1*103 + 5*102 + 2*101 + 4*100 = 1000 + 500 + 20 + 4 = 1524
Come il sistema numerico decimale, anche il sistema binario, basato sulle cifre 0 e 1
(sistema a base 2), è di tipo posizionale. I pesi relativi alle posizioni sono definiti però dalle
potenze di 2:
Se si considera il numero binario 100101, si ha:
10
1
↑
posizione 5
peso 32 (25)
0
↑
posizione 4
peso 16 (24)
0
↑
posizione 3
peso 8 (23)
1
↑
posizione 2
peso 4 (22)
0
↑
posizione 1
peso 2 (21)
1
↑
posizione 0
peso 1 (20)
La sequenza dei numeri si costruisce ovviamente considerando che le cifre sono solo 2:
0, 1, 10, 11, 100, 101, 110, 111, 1000, 1001, 1010, 1011, 1100, 1101, 1110, 1111, 10000, …
Queste considerazioni possono essere estese anche a sistemi di numerazione con altre basi.
Particolare rilevanza hanno assunto, in ambito informatico, il sistema ottale (base 8) e il
sistema esadecimale (base 16).
Il sistema ottale è basato sulle cifre 0, 1, 2, 3, 4, 5, 6, 7. I pesi sono potenze di 8. La sequenza
dei numeri è:
0, 1, 2, 3, 4, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21, 22, 23, …, 27, 30, …, 77, 100, …
Il sistema esadecimale è basato su 16 cifre (base 16): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D,
E, F.
Il corrispettivo numerico delle lettere è il seguente: A=10, B=11, C=12, D=13, E=14, F=15.
I pesi sono potenze di 16. La sequenza dei numeri è:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, 10, 11, 12, …, 1F, 20, …, 2F, 30, …, FF, 100, …
Quando si usano numeri di più basi, è necessario identificare la base di appartenenza
scrivendola come pedice del numero. Ad esempio:
45610 è un numero in base 10
24378 è un numero in base 8
101112 è un numero in base 2
3A516 è un numero in base 16
La lettura dei numeri in base diversa da 10 avviene inoltre una cifra per volta, in quanto i
concetti di unità, decine, centinaia, migliaia, ecc. esistono solo nel sistema decimale.
Conversione base b → base 10
Per convertire un numero da una qualunque base b a base 10 basta moltiplicare ogni cifra per
il suo peso e sommare il tutto.
Ad esempio, il numero in base 10 corrispondente al numero binario 10100101 è:
1*27+0*26+1*25+0*24+0*23+1*22+0*21+1*20 = 128+0+32+0+0+4+0+1 = 165
Il numero in base 10 più grande che è possibile rappresentare con c cifre in notazione binaria è
2c-1
Ad esempio, il numero in base 10 più grande rappresentabile con 2 cifre binarie è 3, che
equivale a 11. Infatti:
112 = 1*21 + 1*20 = 310 = 22-1
Allo stesso modo, il numero in base 10 più grande rappresentabile con 4 cifre è 15, che
equivale a 1111. Infatti:
11112 = 1⋅23 + 1⋅22 + 1⋅21 + 1⋅20 = 1510 = 24-1
Con 1 byte (8 bit) è pertanto possibile rappresentare i numeri decimali da 0 a 255 (28-1)
Per gli altri sistemi di numerazione, il meccanismo di conversione è lo stesso.
Ad esempio, il numero in base 10 corrispondente al numero ottale 362 è:
3*82+6*81+2*80 = 3*64+6*8+2*1 = 192+48+2 = 242
Il numero in base 10 più grande che è possibile rappresentare con c cifre in notazione ottale è
8c-1
Il numero in base 10 corrispondente al numero esadecimale 20A3 è invece:
11
2*163+0*162+10*161+3*160 = 2*4096+0*256+10*16+3*1 = 8192+0+160+3 = 8355
Il numero in base 10 più grande che è possibile rappresentare con c cifre in notazione
esadecimale è 16c-1.
Conversione base 10 → base b
La conversione di un numero del sistema decimale in un sistema a base b si effettua dividendo
successivamente per b il numero decimale da convertire; di ogni divisione viene calcolato il
resto, mentre il quoziente viene usato come dividendo nella divisione successiva. Quando si
ottiene quoziente 0, il procedimento termina e il risultato è la sequenza dei resti letta al
contrario (cioè dall’ultimo calcolato).
Es.: Convertire il numero decimale 12 in binario.
resti
12 2
0
6 2
0
3 2
1
1 2
1
Il risultato è dunque 1210 = 11002. Per la controprova
basta convertire il numero binario ottenuto in
decimale
11002 = 1*23+1*22+0*21+0*20 = 8 + 4 = 1210
0
Es.: Convertire il numero decimale 314 in ottale.
314 8
resti
2
39 8
7
4 8
4
Il risultato è dunque 31410 = 4728. Per la controprova
basta convertire il numero ottale ottenuto in decimale
4728 = 4*82+7*81+2*80 = 256 + 56 + 2 = 31410
0
Es.: Convertire il numero decimale 944 in esadecimale.
resti
944 16
59 16
3 16
0
Il risultato è dunque 94410 = 3B016. Per la controprova
basta convertire il numero esadecimale
ottenuto in
decimale
3B016 = 3*162+11*161+0*160 = 768 + 176 + 0 = 94410
B (11)
3
0
Le conversioni in base b delle potenze di b (in base 10) sono immediate ed uguali in tutti i
sistemi di numerazione:
Base 10
Base b
Es.:
b0 = 1
1
b1
10
b2
100
b3
1000
…
…
bn
1 seguito da n zeri
810
in binario vale 1000, essendo 8=23
25610 in esadecimale vale 100, essendo 256=162
I sistemi di numerazione ottale ed esadecimale sono usati perché consentono una più
compatta rappresentazione dei numeri binari; è infatti immediata la conversione in binario e
viceversa:
- binario-ottale
12
Le cifre binarie vengono raggruppate 3 per volta, da destra a sinistra e ogni terna è
codificata nella corrispondente cifra ottale, come indicato nella seguente tabella:
000
0
001
1
010
2
011
3
100
4
101
5
110
6
111
7
Se il numero di cifre binarie non è multiplo di 3, si aggiungono zeri a sinistra.
Es.:
11010012 = 1518
essendo
001
101
001
-
1
5
ottale-binario
Ogni cifra ottale è codificata nella corrispondente codifica binaria su 3 cifre.
Es.:
5
4
essendo
5478 = 1011001112
101
100
1
7
111
In esadecimale le cifre binarie sono raggruppate 4 per volta. La conversione delle cifre è:
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
Es.:
F3A16 = 1111001110102
F
3
A
1111
0011
1010
0010
1011
1001
2
B
9
essendo
Es.:
10101110012 = 2B916
essendo
Rappresentazione binaria dei numeri negativi
Si è finora visto come rappresentare in binario i numeri naturali (numeri interi senza segno).
I computer devono però operare anche su numeri con segno e, dovendo far ricorso sempre
solo a due differenti simboli (0 e 1), si è stabilito di utilizzare il bit più a sinistra per il segno,
rappresentando il segno + con il bit 0 e il segno – con il bit 1.
Es.: 1101 = -101 = -5
Sappiamo che con n bit si possono rappresentare 2n numeri senza segno, da 0 a 2n-1. Se n=8,
ad esempio, è possibile rappresentare 28= 256 numeri, da 0 a 255.
Per i numeri con segno, i valori rappresentabili sono sempre 2n, ma per metà positivi e per
metà negativi: i valori rappresentabili vanno da – (2n-1 - 1) a 2n-1 – 1. L’esponente n-1 è
giustificato dal fatto che si riserva un bit per il segno.
Ad esempio, con n=8 i valori rappresentabili sono:
11111111 = -127
11111110 = -126
…
10000000 = 0
00000000 = 0
…
01111110 = 126
01111111= 127
Si osservi che la rappresentazione dello zero è ridondante (ce ne sono due), perché lo zero non
ha segno. In genere si adotta una rappresentazione, detta Complemento a due, che
13
rappresenta lo zero con tutti i bit 0 ed utilizza la sua rappresentazione negativa (quella che
inizia con 1) per un numero negativo in più, per cui i numeri con segno rappresentabili con n
bit vanno da – 2n-1 a 2n-1 – 1.
Con n=8 bit, i valori con segno rappresentabili vanno dunque da -128 a +127.
Rappresentazione di numeri frazionari
Oltre ai numeri con segno, il computer deve poter rappresentare ed elaborare anche numeri
con cifre decimali. A tal proposito si adotta la cosiddetta rappresentazione in virgola
mobile (floating point).
Se x è il numero frazionario da rappresentare, lo si esprime nel seguente formato (detto
normalizzazione):
x = ± 0.m × 10e
dove m è detto mantissa mentre e è detto esponente.
Sia la mantissa che l'esponente sono numeri interi con segno e vengono memorizzati con le
regole viste in precedenza per i numeri interi. La rappresentazione di x avviene dunque
rappresentando solo la mantissa e l’esponente della sua rappresentazione normalizzata.
Esempi:
- il numero -183.46 si rappresenta nel seguente modo:
-18346
mantissa
3
esponente
essendo -183.46 = -0.18346 × 103
- il numero 18.327 si rappresenta nel seguente modo:
18327
mantissa
2
esponente
essendo 18.327 = 0.18327 × 102
- il numero 0.0157 si rappresenta nel seguente modo:
157
mantissa
-1
esponente
essendo 0.0157 = 0.157 × 10-1
- il numero -0.00003 si rappresenta nel seguente modo:
-3
mantissa
-4
esponente
essendo -0.00003 = 0.3 × 10-4
Il problema di questo tipo di rappresentazione è la perdita di precisione.
Supponiamo di operare nel sistema decimale e di voler utilizzare 4 cifre per m e 1 cifra per e.
La rappresentazione del numero 123.45 non consente allora di preservare la seconda cifra
decimale, perdendo in precisione:
123.45 = 0.1234×103
Negli standard attualmente usati (IEEE 754), i numeri a virgola mobile sono di due tipi:
singola precisione: 32 bit, di cui 24 per la mantissa e 8 per l'esponente (6 cifre
decimali)
14
doppia precisione: 64 bit, di cui 53 per la mantissa e 11 per l'esponente (15 cifre
decimali)
La Codifica dei Caratteri
Un carattere viene introdotto nel computer a partire da un dispositivo elettronico, la tastiera.
Vi possono essere tastiere diverse per ogni paese, in quanto alcuni paesi usano tipi di caratteri
diversi: ad esempio in Italia si usano anche i caratteri corrispondenti alle vocali accentate in
modo grave o acuto (à,à,é,è,í,ì,ó,ò,ú,ù), mentre in Francia o Spagna si usa la cedila, cioè il
carattere ç, e nelle tastiere di quei paesi è presente il tasto relativo.
Se un calcolatore deve funzionare in questi paesi, l'unica cosa che verrà sostituita è la tastiera,
mentre ovviamente il computer deve essere costruito per poter funzionare indipendentemente
dal paese.
Ma quanti bit sono necessari per rappresentare un carattere? La soluzione più diffusa
attualmente è quella a 8 bit, con la quale si possono rappresentare 256 caratteri.
Per quanto riguarda invece l’associazione tra i caratteri e le varie combinazioni di bit, lo
standard più diffuso è chiamato ASCII (American Standard Code for Information
Interchange), che utilizza 7 bit, quindi i codici da 0 a 127:
I codici da 0 a 31 sono riservati a segnali di controllo; si tratta di comandi pensati per le
telescriventi (per le quali il codice ASCII fu inizialmente creato) e solo pochi si utilizzano ancora
15
con i computer.
Se si sta usando Windows, si può ottenere ogni carattere ASCII tenendo premuto il tasto Alt e
digitando il codice decimale corrispondente con il tastierino numerico (se il tastierino numerico
non è attivo, premere prima il tasto Num lock o Bloc Num per attivarlo). Per esempio, la
chiocciola @ si ottiene digitando 64 mentre si tiene premuto il tasto Alt.
Nella tabella sono stati riportati, per ogni carattere, la codifica decimale, esadecimale ed ottale,
ma il computer usa ovviamente la rappresentazione in binario.
Dunque la lettera “A” è rappresentata, ad esempio, con il codice binario 1000001, che
corrisponde al numero decimale 65.
Usando 8 bit per i caratteri, però, restano 128 combinazioni (da 128 a 255), alle quali lo
standard ASCII non dà una definizione precisa dei caratteri e vi sono varie possibilità; una di
queste è la codifica ASCII ESTESA a 8 bit.
Per i caratteri nei moderni sistemi operativi è utilizzata la codifica UNICODE a 16 bit. Il
numero di possibili simboli rappresentabili è 65536 e si possono rappresentare caratteri
ideografici, come ad esempio il Kanji dei giapponesi.
16