Rappresentazione delle informazioni
Le origini in Leibniz
Il filosofo e matematico Leibniz ha dato origine al pensiero computazionale. 1 bit rappresenta una scelta tra 2 o più alternative. Per rappresentare una scelta tra 2 o più alternative utilizzo delle sequenze di bit, di lunghezza adeguata al numero di alternative da rappresentare. La regola in generale è: 2^bit permettono di rappresentare una scelta tra alternative. log N, N ≥ 1. Per rappresentare una scelta tra alternative, sono necessari circa bit.
Leibniz era in contatto epistolare con i missionari gesuiti in Cina, i quali lo informarono che il metodo di contare con i numeri in base 2 svelava il mistero dello Yin e Yang della filosofia taoista. Lo Yin vale 0, mentre lo Yang vale 1. La rappresentazione della figura mediante linee spezzate permette la costruzione di 2 trigrammi (cioè sequenze di 3 figure) di 8 numeri binari di 3 bit e di 2 esagrammi (cioè sequenze di 6 figure) di 64 numeri binari di 6 bit. In conclusione, si può legare la figura dello Yin e Yang alla numerazione binaria.
Giuseppe Peano nel 1898 inventò una stenografia basata su elementi che corrispondono a 8 cifre binarie. Non è l’origine ufficiale del byte, ma è noto che Peano si dedicò alla realizzazione di un congegno meccanico per scrivere utilizzando questo codice.
Bit e byte
Il bit è l’unità minima di misura dell’informazione. Il bit è la quantità minima di informazione che serve a distinguere due possibili eventi. Un bit è una cifra binaria, cioè è uno dei due simboli (“Zero” o “Uno”) del sistema numerico binario. Una sequenza di 8 bit viene chiamata byte. Il byte è l’unità di misura fondamentale della quantità di informazione e delle capacità di memoria.
La possibilità di rappresentare informazioni di varia natura attraverso numeri permette di manipolare le informazioni rappresentate attraverso operazioni fra numeri che i calcolatori sono in grado di compiere in modo efficiente.
Rappresentazione di numeri in bit
I numeri vengono scritti in notazione posizionale, dove il significato di ogni cifra dipende dalla sua posizione. In base 10, le cifre che compongono i numeri interi hanno significato di unità, decine, centinaia (da destra a sinistra). In base 2 (binaria), le cifre sono soltanto due: “0” e “1”. In una sequenza di bit, il bit più a destra è considerato come il meno significativo. Analogamente, il bit più a sinistra è considerato come il bit più significativo.
Il sistema numerico esadecimale (hex) è un sistema numerico posizionale in base 16. Necessita l’utilizzo di 16 simboli per rappresentare le cifre. I simboli sono formati dai numeri da 0 a 9 e poi le lettere dell’alfabeto dalla A alla F. La rappresentazione esadecimale è più compatta, in quanto uno stesso numero si può scrivere con un numero minore di cifre.
Conversione di base
Per convertire un numero X dalla base 10 ad un’altra base si eseguono una serie di divisioni. Si prende il numero e lo si divide per la base, quando arrivo a trovare un numero uguale a zero ho terminato la conversione. Per ogni divisione se vi è il resto scrivo 1, se non vi è il resto allora scrivo 0. Scrivo gli 0 e 1 da destra a sinistra, ho quindi trovato la rappresentazione binaria.
Per convertire un numero da binaria a esadecimale è sufficiente raggruppare cifre binarie in gruppi da 4. Codificare il singolo gruppo di bit con la cifra esadecimale corrispondente. Affiancare le cifre esadecimali ottenute secondo l’ordine precedente. Per convertire da esadecimale a binario si possono convertire le conversioni delle singole cifre.
Operazioni fra bit (e byte)
I calcolatori compiono le operazioni su bit a partire da 4 operazioni fondamentali dette operazioni booleane:
- NOT corrisponde alla negazione. NOT x è la negazione della variabile x.
- AND corrisponde alla congiunzione. x AND y è vera se sia x che y sono vere.
- OR corrisponde alla disgiunzione. x OR y è vera se almeno una fra x e y è vera.
- XOR corrisponde alla OR esclusivo. x XOR y è vera se soltanto una fra x e y è vera.
Un’operazione si dice:
- Unaria: richiede soltanto una variabile (esempio: NOT).
- Binaria: utilizza due variabili (esempi: AND, OR e XOR).
In questo caso binario si sottolinea il numero di operandi dell’operazione. Più operazioni booleane con l’aggiunta di parentesi formano delle espressioni booleane. I valori di queste espressioni si rappresentano in tabelle di verità. In questa tabella sono elencate tutte le possibili combinazioni delle variabili. Nella tabella di verità, il valore “1” rappresenta “vero”, mentre il valore “0” rappresenta “falso”. Le operazioni appena descritte si possono applicare anche ai byte, si intende applicata a ciascun bit che lo compone.
Il file
Il file è una sequenza ordinata di byte. Quindi due file con gli stessi byte, ma in ordine differente, sono diversi. I file sono memorizzati sul disco. La codifica dell’informazione è il modo in cui un certo tipo di informazione è tradotta in un file. Una certa codifica rappresenta un certo tipo di informazione. Si possono codificare vari tipi di informazione: testi, immagini, suoni, istruzioni. Lo stesso tipo di informazione può essere codificata attraverso diversi tipi di codifica. Per esempio, le immagini hanno varie codifiche o formati: JPG, GIF, PNG. Non esiste una codifica migliore tra le varie codifiche.
Estensione del file
I file salvati sul disco hanno dei nomi. La loro estensione determina l’informazione rappresentata e la sua codifica. Le convenzioni possono cambiare nel tempo e fra computer diversi. Le convenzioni possono anche essere un rischio. Nei sistemi operativi che fanno molto affidamento alle estensioni, il cambio dell’estensione potrebbe determinare una difficoltà nell’apertura del file. Con il doppio click tali sistemi operativi selezionano l’applicazione con cui aprire il file sulla base dell’estensione.
Introduzione alla rappresentazione del testo
Il testo è una sequenza di lettere maiuscole o minuscole, spazi e segni di punteggiatura. È possibile codificare il testo in un file, codificando ogni singolo carattere e affiancando poi le codifiche dei singoli caratteri secondo l’ordine del testo. Esistono varie codifiche di caratteri. La codifica più diffusa è quella ASCII (American Standard Code for Information Interchange). Attraverso la codifica ASCII, ad ogni carattere viene associato un numero da 0 a 127. Il codice ASCII fu inventato per le comunicazioni tra telescriventi. La codifica dei caratteri stampabili segue l’ordine naturale. Tra i caratteri stampabili c’è anche lo spazio (codice 32). Solitamente la codifica dei file si scrive in esadecimale perché in questo modo tutti i byte si possono scrivere con lo stesso numero di cifre (2).
La codifica ASCII non permette di codificare lettere accentate, né linguaggi con caratteri diversi (es: Cinese). È stato quindi proposto di estendere la codifica ASCII sfruttando l’ottavo bit, il più significativo, il quale prima non veniva utilizzato. Un esempio è la codifica UTF-8. Essa sfrutta i byte che hanno il bit più significativo impostato a 1. Infatti, in un file testo codificato con UTF-8:
- Un byte (con bit più significativo uguale a 0) codifica un carattere secondo la codifica ASCII standard.
- Un byte (con bit più significativo uguale a 1) codifica un carattere secondo la codifica estesa UTF-8.
Ad oggi, la codifica UTF-8 richiede da 2 a 4 byte per rappresentare un solo carattere.
Introduzione alla rappresentazione delle immagini
Anche per le immagini è necessario tradurre un’immagine in sequenza di byte. L’immagine viene astratta come rettangolo, di dimensioni variabili, che contiene colori. Tale rettangolo viene diviso in una griglia composta da piccoli quadratini. Ogni quadratino si chiama pixel, cioè Picture Element. La risoluzione dell’immagine determina il numero di pixel utilizzati per rappresentare l’immagine; maggiore è la risoluzione e maggiore è il numero di pixel utilizzati. La risoluzione di un’immagine si misura con il numero di pixel utilizzati in larghezza e in altezza. Alternativamente, si usa anche dire che una risoluzione ha 3 megapixel, intendendo che il numero totale di pixel è 3 x 106. L’immagine è codificata con la sequenza dei colori dei pixel a partire dall’angolo dell’immagine in alto a sinistra. Il passaggio da un’immagine originale alla sua rappresentazione in pixel introduce un errore.