Tecnologie
Teoria di tecnologie 1° - docente Massimo Cappellano presso ISIS "Andrea Ponti" di Gallarate - massimocappellano72 [at] gmail [dot] com
Last updated
Teoria di tecnologie 1° - docente Massimo Cappellano presso ISIS "Andrea Ponti" di Gallarate - massimocappellano72 [at] gmail [dot] com
Last updated
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
Processo che permette di avere la codifica delle informazioni
Il processo inverso è la decodifica
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:
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à:
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:
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
.
Domanda: quanti diversi valori posso rappresentare con 5 bit?
Risposta: con 5 bit posso rappresentare 2^5 = 32 diversi valori.
Domanda: quanti diversi valori posso rappresentare con 2 byte?
Risposta: 2 byte = 16 bit, quindi posso rappresentare 2^16 = 65536 diversi valori.
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.
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.
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:
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):
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);
Utility per convertire i caratteri ASCII nei corrispettivi codici.
Domanda:
alfabeto immaginario di 322 simboli: quanti bit per rappresentarli tutti?
Risposta:
2^9 > 322, 2^9 = 512, quindi n = 9
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.
NORD
OO
EST
01
SUD
10
OVEST
11