RAPPRESENTAZIONE BINARIA DELL'INFORMAZIONE
In un calcolatore tutta l'informazione è rappresentata in forma
binaria, cioè usando solo due simboli, usualmente indicati con le
cifre 0 e
1 (in inglese 0 e
1 sono detti bit).
Si usa anche il termine digitale, dall'inglese digit (cifra).
La motivazione per limitarsi a due soli simboli è dovuta al fatto
che essi possono essere rappresentati convenientemente con dispositivi
fisici; per esempio magnetizzato o no,
voltaggio alto o basso, luce o buio.
CODIFICA DEI NUMERI
Numeri naturali
Noi rappresentiamo i numeri con una notazione posizionale che utilizza
10
cifre (numeri arabici).
Un numero è rappresentato da una sequenza di cifre, e
posizionale significa che il valore di una cifra dipende dalla sua posizione
all'interno della sequenza.
Esistono anche altri tipi di notazione per i numeri ( una breve
panoramica); per esempio
additive, dove
ogni cifra indica una quantità da aggiungere o togliere, come il
sistema di numerazione romana.
Inoltre è possibile scegliere in molti modi il numero di cifre differenti
che si usano in una notazione posizionale, non solo il 10; in genere si
usano anche numerazione in base 2 (binaria), 8 (ottale), 16
(esadecimale).
Numerazione in base p, con p un numero naturale > 1
occorrono p cifre distinte, siano esse C1, ..., Cp (sono semplicemente dei
simboli)
un numero è rappresentato da una sequenza di tali cifre.
Sia
una rappresentazione di un numero in base p,
esso rappresenta
, dove
rappresenta il numero d'ordine della
cifra ([C1] = 0, ..., [Cp] = p-1).
Per la rappresentazione binaria si usano le cifre 0,1; per quella ottale
si usano 0,1,2,3,4,5,6,7, e per quella esadecimale si usano
0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F.
Quanti/quali numeri si possono rappresentare usando n cifre binarie ?
Un generico numero binario con n cifre è
Il più piccolo è 0 ... 0 e il più grande è
1 ... 1, che rappresenta ; provarlo per induzione aritmetica su n
Come trovare la rappresentazione binaria di un numero naturale
Sia n un numero naturale.
La cifra meno significative della rappresentazione binaria di n
è data dal resto della divisione di n per 2, e quelle che seguono
sono date dai resti delle successive divisioni per due.
Diamo un programma per il calcolatore antropomorfo
per eseguire questa trasfomazione
leggi dall'input il numero da trasformare e scrivilo sul foglietto N
se N = 0 allora scrivi su output cifra 0
mentre N =/= 0 fai
scrivi resto di N diviso 2 sul foglietto C;
se C = 0 allora scrivi su output cifra 0
altrimenti scrivi su output cifra 1;
scrivi N divisione intera 2 sul foglietto N;
Notare che
- cifra 0 è differente dal numero naturale 0, così come
cifra 1 è differente dal numero naturale 1
- abbiamo indicato in modo impreciso il contenuto di un foglietto (quello
che c'è scritto sopra) con il nome del foglietto; per esercizio
riscriverlo precisano in ogni punto dove si intende il contenuto
ESERCIZI
- Scrivere un programma per il calcolatore antropomorfo
per trovare il numero naturale rappresentato da un numero binario.
- Dare la rappresentazione binaria, ottale, esadecimale del numero naturale
123.
- Quale numero naturale rappresenta 123 in base 2, 8 e 16.
- È possibile dare una rappresentazione unaria, cioè che usa
una sola cifra ?
- Definire la rappresentazione in base 5 ed utilizzarla per rappresentare
103.
Numeri interi
Esistono due modi per rappresentare i numeri interi, supponiamo di usare
m bit
- modulo/segno
- il primo bit rappresenta il segno (0 per il + e 1 per il -), i
rimanenti n-1 bit rappresentano il modulo (un naturale)
- complemento a 2
- un numero negativo -N è rappresentato dalla rappresentazione binaria
di (2 alla m) - N, quelli positivi come al solito.
Quanti numeri interi si possono rappresentare con m bit
- modulo/segno
- i numeri compresi tra -((2 alla (m -1)) - 1) e +((2 alla (m -1)) - 1);
notare che ci sono due zeri (-0 e +0)
- complemento a 2
- -2 alla (m-1) e ((2 alla (m-1))-1)
Esempio, usando 4 bit i numeri 5 e -5 sono rappresentati rispettivamente
da
- modulo/segno
-
0101 e 1101
- complemento a 2
-
0101 e 1011
Numeri reali
Non è possibile rappresentare tutti i numeri reali utilizzando
sequenze finite di bit (problema di cardinalità: l'insieme delle
sequenze finite di bit è numerabile, mentre i reali hanno la
cardinalità del continuo), pertanto rappresenteremo solo dei numeri
razionali.
Rappresentazione in virgola fissa
Si rappresentano la parte intera e quella frazionaria di un numero reale
con due sequenze di
bit; la pare intera come visto sopra, mentre la parte frazionaria
è rappresentata come un numero naturale ma utilizzando esponenti
negativi della base (basta notare che, per esempio,
0,34 in base 10 rappresenta (3/10) + (4/100)).
Quindi basta decidere quanti bit usare per la parte intera e quanti per la
frazionaria.
Con questa rappresentazione non si riescono a rappresentare molti
numeri ed in genere solo numeri piuttosto piccoli;
per esercizio quanti/quali numeri si rappresentano con 5+5 bit ?
Rappresentazione in virgola mobile (floating point)
Ricordarsi che nel mondo anglossasone si usa il punto e non la virgola per
la parte frazionaria).
Un numero reale può essere visto come
dove
M (detta mantissa) è un numero frazionario cioè compreso
tra -1 e 1, ed n un numero intero (detto caratteristica)
In questo caso basta decidere quanti bit usare per la mantissa e quanti
per la caratteristica.
Con questa rappresentazione si possono rappresentare numeri molto grandi e
numeri molto piccoli. Per esercizio qual'è il più piccolo e il
più grande numero positivo e negativo rappresentabile usando 5 bit
per la mantissa e 3 per la caratteristica ?
In questo caso però i numeri rappresentabili sono distribuiti in
modo non uniforme, tanti vicino allo zero e poi sempre meno.
Problemi/conseguenze
Rappresentare i numeri in forma binaria utilizzando un numero fissato di
bit porta a varie consequenze e pone dei problemi che occorre aver chiaro
quando si scrivono programmi.
Undeflow/Overflow
In ogni calcolatore un numero fissato di bit verrà usato per
rappresentare i numeri (siano interi o reali); per esempio per gli interi si
usano in genere 32/64 bit.
Effettuando delle operazioni su numeri rappresentati con n bit si può
ottenere anche un numero non rappresentabile con tali bit; se il numero
è troppo grande si parla di overflow, altrimenti di underflow.
Approsimazione/errore
I numeri reali sono rappresentati come approssimazioni razionali, e quindi
modulo un certo errore, ma
effettuando delle operazioni su tali numeri l'errore può
modificarsi; pertanto occorre tenerne conto per prevedere i possibili
effetti.
Per esempio la somma può non essere associativa
(es. (2 alla 32 +
3)+(-3) origina overflow, mentre 2 alla 32 + (3+(-3)) no);
a * (b /a) può essere differente da b;
quantità che
dovrebbero essere zero non lo sono e così via.
CODIFICA DEI CARATTERI
I caratteri sono rappresentati con una codifica ad hoc usando un certo
numero di bit; sono possibili molte scelte, quelle utilizzate attualmente
sono degli standard.
Il più noto è lo standard ASCII che utilizza 7 bit e contiene
quindi 128 caratteri, che includono letttere maiuscole e minuscole, cifre,
segni di punteggiatura, lo spazio vuoto, detto anche blank, e caratteri di
controllo dell'impaginazione, come fine linea, tabulazione, fine pagina.
Tavola dei carateri ASCII completa e
versione compatta.
Per un altro set di caratteri più moderno, utilizzato per esempio
nelle pagine WEB, vedere ISO LATIN 1.
IMMAGINI, SUONI, VIDEO
Anche altri tipi di informazione possono essere rappresentati come sequenze
di bit, pensare al suono digitale dei CD e alla prossima televisione
digitale.
L'idea base per rappresentare un'immagine è decomporla in punti,
usualmente detti pixel (in origine gli elementi dello schermo), e definire
per ogni punto il suo colore (o gradazione di grigio).
Pertanto un'immagine è essenzialmente una matrice i cui elementi
descrivono bianco o nero (1 bit per pixel); gradazione di grigio (8 toni 3
bit, 16 toni 4 bit,...), oppure un colore, rappresentato per esempio
dicendo quanto rosso, blu e verde contiene (sistema RGB Red, Green and Blu)
usando percentuali.
Dato che le immagini possono richiedere un numero enorme di bit per essere
rappresentate adeguatamente esistono metodi per compattarle e vi sono anche
degli standard, come GIF, TIFF, JPEG, ....
I video sono solo sequenze di immagini opportunamente compattate, mentre
per i suoni si usano tecniche basate sulla rappresentazione di un suono
come insieme di onde.