Tecnologie

Teoria di tecnologie 1° - docente Massimo Cappellano presso ISIS "Andrea Ponti" di Gallarate - massimocappellano72 [at] gmail [dot] com

Problema

  • Abbiamo informazioni (numeri, testi, immagini, suoni. . . ) che vogliamo rappresentare (e poter elaborare) in un calcolatore.

  • Vincolo: per motivi tecnologici un calcolatore lavora solo con i valori 0 e 1

Codifica e decodifica

  • Processo che permette di avere la codifica delle informazioni

  • Il processo inverso è la decodifica

Codifica informazioni

Cosa vuol dire binario? Binario ad esempio del treno? Due rotaie su cui viaggia il treno. Binario, Bicicletta, Bipede, c’è sempre di mezzo il 2.

Il computer capisce solo ACCESO o SPENTO, di un circuito. Questa minima informazione si chiama BiT (binary digit).

Per capire per noi essere umani, diciamo 0 (spento) e 1 (acceso).

Questo è l’alfabeto del computer, ha solo due ‘lettere’: 0 e 1.

Consideriamo invece il nostro alfabeto: a, b, c.......z, almeno 26 lettere, in più le maiuscole, A, B, ...Z.

Ma il computer è limitato a 0 e 1. Dalla combinazione di 0 e 1 deve esprimere magari la parola ‘cane’ o ‘gatto’.

Come dall’ alfabeto italiano, combinando le lettere posso esprimere, nomi, verbi o aggettivi così con l’alfabeto del computer (binario, solo 0 e 1) posso esprimere le parole, combinando sequenze di 0 e 1 di differenti lunghezze.

Se io volessi esprimere tutte le lettere dell’alfabeto con una sequenza di 0 e 1 come potrei fare??

Facciamo, all’ inizio per semplificare che dobbiamo esprimere solo la 26 lettere minuscole: a, b, c.......z

Ragioniamo: con 1 bit possiamo esprimere solo 2 informazioni: vero/falso ad esempio. Equivale 2^1 = 2

Con 2 bit, già possiamo esprimere di più: 2^2 = 2 * 2 = 4 informazioni.

Infatti, abbiamo queste possibili informazioni:

0 0
0 1
1 0
1 1

Potremmo esprimere ad esempio ognuno dei 4 punti cardinali con una sequenza di 2 bit:

andando così avanti con 3 bit abbiamo 2^3 = 2 * 2 * 2 = 8 diverse possibilità:

000
001
010
011
100
101
110
111

Con 3 bit ad esempio potremmo esprimere tutti i giorni della settimana (sono 7 e noi con 3 bit abbiamo 8 combinazioni). Ad esempio potremmo codificate 000 come LUNEDI’, 001 come MARTEDI’ fino a 110 come DOMENICA (avanzeremmo anche la sequenza 111 se i giorni della settimana fossero 8).

Se qualcun’altro conoscesse il nostro codice segreto (ci siamo prima messi d’accordo) e scrivessimo 010, l’altra persona leggerebbe MERCOLEDI’, avremmo creato un nostro linguaggio. Da notare che è una convenzione stabilita tra chi scrive e chi legge.

  • In generale: n bit rappresentano 2^n diversi valori

Ricapitolando:

  • La codifica è una convenzione!

  • E´ il modo in cui associamo un’informazione ad una sua rappresentazione binaria.

Tornando a bomba, se dobbiamo invece esprimere 26 lettere alfabeto quanti bit ci servono se a ogni combinazione gli possiamo assegnare una lettera dell’alfabeto?

Deve essere 2^x > 26, con l’x, l’intero, minore possibile, che soddisfi l’equazione: vediamo che con 2^3 = 8 (< di 26), 2^4 = 16 (< di 26) ma 2^5 = 32 che è > di 26.

Quindi con 5 bit possiamo esprimere tutte le lettere dell’alfabeto. Stabiliamo ad esempio:

00000 -> A
00001 -> B
00010 -> C
00011 -> D
00100 -> E
........... fino a Z

come già accennato, dobbiamo stabilire con chi legge la convenzione di questa codifica, se no chi legge non capisce nulla: se uno legge 00010 e non conosce la codifica da noi stabilita, non può sapere che si voleva significare C.

Chi legge deve avere come una tabella che associa alla sequenza 00000 la lettera A, e così via. E chi scrive deve conoscere la tabella e se vuole significare B deve scrivere 00001.

Tutto questo poi perché l’alfabeto dei computer è fatto di sole due lettere 0 e 1.

Esercizio 1

Domanda: quanti diversi valori posso rappresentare con 5 bit?

Risposta: con 5 bit posso rappresentare 2^5 = 32 diversi valori.

Esercizio 2

Domanda: quanti diversi valori posso rappresentare con 2 byte?

Risposta: 2 byte = 16 bit, quindi posso rappresentare 2^16 = 65536 diversi valori.

Esercizio 3

Domanda: quanti bit mi servono per rappresentare 1000 diversi valori?

Risposta: devo trovare il minimo numero n di bit che soddisfi 2^n > 1000, 2^10 = 1024, quindi n = 10.

Esercizio 4

Domanda: quanti bit mi servono per rappresentare 112 diversi valori?

Risposta: 7 bit (2^7 = 128). 6 bit sarebbero stati pochi, mentre 8 bit sarebbero stati troppi!

----------------------------------------------------------------------------------------------------------------------------------

  • Attraverso meccanismi di codifica possiamo rappresentare diversi tipi di informazione:

    • Numeri naturali (insieme N)

    • Numeri interi (insieme Z)

    • Numeri razionali (insieme Q)

    • caratteri

    • immagini

    • suoni

    • video

  • Esistono diverse convenzioni (codifiche) per fornire a ciascun tipo di informazione una rappresentazione binaria.

Codifica caratteri

I pionieri nel campo dell’informatica, parliamo dei primi anni 60 del secolo scorso, si sono travati di fronte bene o male al problema che abbiamo descritto noi, un po’ esteso: dovevano codificare i la lettere dell’alfabeto (maiuscole e minuscole), le cifre dei numeri (0, 1, 2....9) e tutti i segni di punteggiatura (virgola, parentesi, due punti, ?, !....) e vari simboli, come > e <. Il tutto per 128 caratteri: 2^7 che equivale a 128, quindi con 7 bit si potrebbero codificare tutti i 128 simboli. Si è scelto di usare 8 bit, di avere altri 128 posti a disposizione per codificare altri caratteri speciali, specifici di ogni alfabeto dei paesi occidentali (nella prima figura sotto, c’è la tabella ASCII STANDARD, i primi 128 caratteri comuni a tutti e nella figura più sotto, gli altri 128 caratteri dell’ASCII Esteso).

Le lettere dell’alfabeto della tabella ASCII sono quelle dell’alfabeto Inglese (non ci sono ad esempio le nostre ‘à’ o ‘ò’ ad esempio). Gli bastavano 128 caratteri e quindi 7 bit, ma un altro bit (l’ottavo) è stato utilizzato per codificare le lettere di altri alfabeti, che avevano dei propri caratteri speciali, come le a accentate dell’italiano, o caratteri speciali del francese o tedesco, per un totale di 256 caratteri (di qui gli 8 bit necessari = 28 = 256). I primi 128 comuni a tutti (con il primo bit a 0), gli altri 128 (quelli con il primo bit = 1) specifici per ogni alfabeto dei paesi occidentali (ITALIANO, TEDESCO, FRANCESE, OLANDESE ....).

Per il fatto di utilizzare 8 bit come base per codificare i caratteri, ha fatto si che l’insieme di 8 bit, chiamato Byte, sia il formato l’unità di base per l’architettura del computer.

Byte sta per “BinarY octetTE", ovvero "ottetto binario".

Come potete vedere ad ogni carattere corrisponde un byte.

E le parole? Sono sequenze di caratteri.

Se devo scrivere “gatto”, diventa:

01100111  01100001  01110100  01110100  01101111
g         a         t         t         o

Questo è quello che viene salvato su disco fisso, cioè la sequenza di 0 e 1 di 5 byte.

Quando un programma come world, legge un file da disco fisso, legge la sequenza di 0 e 1, e semplicisticamente possiamo dire che li raggruppa in sequenze di 8 bit, cioè di byte, e converte queste parole di 0 e 1 nel corrispettivo carattere che viene poi presentato a video. Ad esempio, la sequenza di bit (4 byte, 32 bit):

01000011 01100001 01101110 01100101 -> C a n e

viene decodificata nella stringa, ‘Cane’.

Per un po’ di anni, tutto questo è bastato, poi con la difffusione dell’informatica in tutti i paesi e quindi non solo quelli iniziali (principalmente Stati Uniti e altri paesi dell’Europa Occidentale) ma in tutti i continenti, l’alfabeto dello standard ASCII (che sta infatti per American Standard Code for Information Interchange) non basta più: non sono codificate le lettere ad esempio dell’alfabeto arabo o quelle del cinese.

Con un byte come abbiamo già detto codificare solo, 2^8, 256 possibili carateri, oramai troppo pochi.

Un ente di standardizzazione internazionale si occupa attualmente di standardizzare tutti i caratteri dei vari alfabeti e si chiama UNICODE e utilizza 2 byte (cioè 16 bit e quindi 2^16 possibili caratteri 65.536).

E’ importante capire che i codici UNICODE sono un’estensione della tabella ASCII, i primi 256 caratteri della tabella ASCII sono uguali a quelli della tabella UNICODE.

Tre possibili rappresentazioni:

  • ASCII standard: un carattere e rappresentato con 7 bit (ASCII = American Standard Code for Information Interchange);

  • ASCII estesa: un carattere è rappresentato con 8 bit;

  • UNICODE : un carattere è rappresentato con 16 bit (MS Windows ne usa una simile);

Convertitore ASCII

Utility per convertire i caratteri ASCII nei corrispettivi codici.

Esercizio 1

Domanda:

alfabeto immaginario di 322 simboli: quanti bit per rappresentarli tutti?

Risposta:

2^9 > 322, 2^9 = 512, quindi n = 9

Esercizio 2

Domanda:

quanti bit o byte occupa la frase biologia marina nelle tre diverse codifiche?

Risposta:

In ASCII 105 bit, in ASCII estesa 15 byte, in UNICODE 30 byte.

APPROFONDIMENTI

Last updated