2a - COMPUTER: MACCHINA BINARIA |
|
L’attività del computer consiste essenzialmente nella continua rapidissima combinazione e propagazione
di tutti questi segnali al proprio interno, al ritmo del “clock”
(un orologio interno, che “batte” fino a 2-3 miliardi di volte ogni secondo),
e sotto il controllo del microprocessore.
Tutti i dispositivi di memoria rispecchiano un dualismo:
(presente/assente, riflettente/opaco, orario/antiorario ...);
insomma, l'elemento minimo di memoria è sempre un micro-dispositivo
che può trovarsi in UNO E UNO SOLO FRA 2 STATI FISICI BEN DISTINTI.
UN "QUALCOSA" CHE POSSA ASSUMERE SOLTANTO UNO FRA 2 POSSIBILI STATI VIENE DETTO
"BIT" (da Binary digIT, ovvero “cifra binaria”).
I due stati in cui può trovarsi il bit sono convenzionalmente rappresentati con “0” e “1”.
|
memorie a semiconduttore |
RAM, ROM, chiavette USB, memorie FLASH, elementi di memoria presenti nella CPU (=registri) |
BIT = presenza o assenza di una debole tensione elettrica |
|
memorie magnetiche |
Hard Disk Floppy Disk |
BIT = microarea orientata magneticamente in senso orario oppure antiorario |
|
memorie ottiche |
CD DVD |
BIT = microarea che riflette un raggio laser oppure al contrario non lo riflette |
I bit sono organizzati in gruppi di 8. Una sequenza di 8 bit prende il nome di BYTE (leggi bàit).
Noi scriveremo Byte sempre con la maiuscola, per abituarci al fatto che le abbreviazioni sono B=Byte, b=bit
Dal momento che ogni singolo bit può assumere due stati (0 oppure 1),
un Byte può assumere tutti gli stati da 00000000 a 11111111, con tutte le situazioni intermedie,
per un totale di 28=256 diverse combinazioni (perché 28? Vedi il paragrafo successivo).
Un Byte, ad esempio 01100010, potrà, a seconda del contesto, indicare:
· un dato numerico, ad esempio il numero "98"
· un dato non numerico, ad es. la lettera "b minuscola", oppure il codice di un colore
· il codice di un'istruzione, ad es. l'istruzione di "somma", o l'istruz. di attivazione della stampante
· l'indirizzo (=il numero d'ordine) della cella di memoria dove risiede un certo dato, o istruzione.
Allora, ricapitoliamo:
in un computer, le istruzioni di un programma, e i dati su cui il programma è chiamato a operare,
sono codificati come sequenze di “0” e di “1” (bit), organizzate in gruppi di otto (Byte) e
fisicamente realizzate, nella RAM (memoria di lavoro) o sulle “memorie di massa” (HD, CD, DVD, …),
da dispositivi di natura diversa ma accomunati dal fatto che ciascuno di essi può,
istante per istante, trovarsi in uno e uno solo fra due stati fisici ben distinti.
ll microprocessore è in grado di “MANIPOLARE” queste sequenze di 0 e di 1,
seguendo le istruzioni contenute nei programmi, in modo da realizzare:
· operazioni logiche e aritmetiche;
· la selezione della cella di RAM dalla quale prelevare l’istruzione che è corretto eseguire
in una data fase di un processo, o dalla quale/nella quale prelevare/riversare un dato;
· comandi vari (es. illuminazione con un colore piuttosto che un altro di un dato puntino
sullo schermo, attivazione della stampante, ecc. ecc. ecc.)
I multipli del Byte, usati per misurare la capienza o “capacità” delle varie memorie, sono:
il KiloByte (KB), il MegaByte (MB), il GigaByte (GB), il TeraByte (TB).
|
|
Fuori dall’ Inform. |
A volte, in Inform. |
PRE CISA ZIONI a |
Ogni multiplo è 1024=210 volte il precedente; la scelta di questo numero (anziché 1000=103 ) si deve al fatto che, per via della logica binaria, è il 2 e non il 10 il numero "re" dell'informatica.
|
Kilo |
1000 = 103 |
1024 = 210 |
||
|
Mega |
1.000.000 = 106 |
1.048.576 = 220 |
||
|
Giga |
1.000.000.000 = 109 |
1.073.741.824 = 230 |
Attualmente, le capacità “tipiche” delle varie memorie sono:
|
RAM |
HARD DISK (HD) |
CHIAVETTA USB |
CD |
DVD |
|
||||||||||||
|
Consigliati 4 GB |
Da 250 o 500 GB a 1 TB |
Da 4 a 32 GB e più |
650 |
Da 4,7 GB in su |
|
||||||||||||
|
2b - QUANTE DIVERSE INFORMAZIONI SI POSSONO CODIFICARE CON UN BYTE?
In altre parole, avendo a disposizione 8 caselle con la possibilità di riempire ciascuna casella o con “0” o con “1”, quante sequenze fra loro distinte è possibile scrivere?
Facile: ogni Byte può essere interpretato come un numero binario a 8 cifre; e numeri siffatti possono andare da 0 (00000000) a 255 (11111111). La risposta è dunque 255+1=256: con un Byte possiamo rappresentare fino a 256 diverse informazioni. Osserviamo
che è
|
||||||||||||||||
|
Si sarebbe potuto anche ragionare in maniera completamente diversa.
Ecco qui davanti a me la sequenza delle 8 caselle da riempire:
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
Per la prima casella, ho evidentemente due possibilità: 0 o 1.
Comunque io abbia scelto di riempire la 1a casella, per la 2a mi si apre un ventaglio di 2 possibilità: 0 o 1.
Le possibilità, per quanto riguarda le prime 2 caselle, sono espresse dal diagramma ad albero qui a destra:
Comunque io abbia scelto il contenuto delle prime 2 caselle, per riempire la 3a mi si apre ancora un ventaglio di 2 possibilità.
Le possibilità, per quanto riguarda le prime 3 caselle, sono espresse dal diagramma ad albero qui a destra:
|
||||||||||||||||
|
Ogni volta che penso a una casella in più, il numero di modi in cui è possibile riempire la sequenza di caselle considerate raddoppia per via del ventaglio di 2 possibilità che si apre.
A questo punto, è immediato
concludere:
|
||||||||||||||||
Domanda: quante informazioni diverse potranno essere codificate utilizzando 2 Byte? E 4 Byte? E 8 Byte?
2c - UN MODO RAPIDISSIMO ED EFFICACISSIMO PER INDICARE UN BYTE
Nel sistema
di numerazione ESADECIMALE, ossia in base SEDICI, le cifre sono:
|
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
A |
B |
C |
D |
E |
F |
|
zero |
uno |
due |
tre |
quattro |
cinque |
sei |
sette |
otto |
nove |
dieci |
undici |
dodici |
tredici |
quattordici |
quindici |
Ma nel
sistema BINARIO i numeri da zero a quindici
sono
proprio quelli che sono rappresentabili con una quaterna di cifre 0, 1:
|
0000 |
0001 |
0010 |
0011 |
0100 |
0101 |
0110 |
0111 |
1000 |
1001 |
1010 |
1011 |
1100 |
1101 |
1110 |
1111 |
|
zero |
uno |
due |
tre |
quattro |
cinque |
sei |
sette |
otto |
nove |
dieci |
undici |
dodici |
tredici |
quattordici |
quindici |
E’ quindi
possibile “riassumere” una sequenza di quattro bit (detta nibble),
interpretandola
come numero binario e passando all’equivalente esadecimale!
|
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 |
Ma se un
nibble può essere “compresso” in una cifra esadecimale,
allora un
Byte si potrà comprimere in una COPPIA di cifre esadecimali!!!
|
Per cui,
ad esempio, q
il Byte 0110 1110 potrà essere scritto, in breve,
come 6E; q
il Byte 0011 0011 potrà essere scritto, in breve,
come 33; q
la scrittura A8 potrà indicare il Byte 1010 1000; q
la scrittura 74 potrà indicare il Byte 0111 0100; q
ecc. ecc. |
|
In Logica,
il significato dei connettivi ET, VEL, NON, che
ora indicheremo, all’inglese, con
AND, OR,
NOT, e a cui affiancheremo il connettivo di “OR ESCLUSIVO” o
XOR (in pratica, l’ AUT latino),
è
descritto dalle seguenti “tavole di verità”:
|
p |
q |
p AND q |
|
p |
q |
p OR q |
|
p |
NOT p |
|
p |
q |
p XOR q |
|
V |
V |
V |
V |
V |
V |
V |
F |
|
V |
V |
F |
||
|
V |
F |
F |
V |
F |
V |
F |
V |
|
V |
F |
V |
||
|
F |
V |
F |
F |
V |
V |
|
|
|
F |
V |
V |
||
|
F |
F |
F |
F |
F |
F |
|
|
|
F |
F |
F |
Se rappresentiamo “Vero” con 1 e “Falso” con 0, le tavole
diventano:
|
p |
q |
p AND q |
|
p |
q |
p OR q |
|
p |
NOT p |
|
p |
q |
p XOR q |
|
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
|
1 |
1 |
0 |
||
|
1 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
|
1 |
0 |
1 |
||
|
0 |
1 |
0 |
0 |
1 |
1 |
|
|
|
0 |
1 |
1 |
||
|
0 |
0 |
0 |
0 |
0 |
0 |
|
|
|
0 |
0 |
0 |
e definiscono altrettante vere e proprie “operazioni sui
bit”.
Ma mentre
delle operazioni and, or, not,
xor effettuate sulle proposizioni
ci é ben chiaro il significato,
che senso
avranno e a quali finalità potranno servire le corrispondenti operazioni sui
bit?
La
sorprendente risposta è che TUTTO il funzionamento del microprocessore
(CPU) è sostanzialmente
una
manipolazione dei bit, effettuata tramite queste quattro operazioni logiche (e
poche altre affini) !!!
Supponiamo
ad esempio che
Preliminarmente,
i due interi in gioco saranno stati codificati nel sistema binario, e
immagazzinati in RAM.
Ora
(registri).
I due numeri sono in attesa di essere sommati.
Ma quali sono le regole per la somma, quando gli addendi
sono codificati in binario? Eccole:
|
a |
b |
somma |
riporto |
|
Ti segnalo, dal sito http://richardbowles.tripod.com a cura di Richard Bowles, un’interessante Beginner’s
Guide to Digital Electronics Clicca
sulla freccia! ð |
|
1 |
1 |
0 |
1 |
|
|
|
1 |
0 |
1 |
0 |
|
|
|
0 |
1 |
1 |
0 |
|
|
|
0 |
0 |
0 |
0 |
|
Scopriamo allora che la somma è data da a XOR b,
mentre il riporto (carry) è dato da a AND b!!!
E siccome
le tecnologie elettroniche consentono di realizzare con facilità
microcomponenti
in grado
di ricevere in entrata (input) una coppia di bit, e di fornire in uscita
(output) un terzo bit,
in maniera
da simulare le varie operazioni logiche, ecco che tramite una “porta logica”
XOR e una
“porta
logica” AND è possibile realizzare il semplice dispositivo elettronico detto
semisommatore
(bit 1 =
impulso elettrico presente, bit 0 =
impulso elettrico assente):
|
|
Sotto: simboli
grafici per le varie “porte logiche”
|
Senza
entrare nei particolari, si può comprendere che, disponendo e combinando in
modo adeguato
porte
logiche appropriate, sarà possibile andare oltre, e realizzare un sommatore
completo,
in grado
di ricevere in input due sequenze di bit, corrispondenti ad una coppia di
numeri binari,
|
e di
fornire come output quella sequenza di bit, che corrisponde alla loro somma. Ancora:
supponiamo che un programma preveda che sia eseguito un dato comando, nel caso
sia verificata ALMENO UNA fra due certe condizioni. Ovviamente
al momento opportuno la quale
riceverà in input una coppia di bit che rappresenteranno le due condizioni in gioco
(11 se entrambe le condizioni sono verificate, altrimenti, a seconda dei
casi, 01, 10
oppure 00). Se il bit in output sarà 1, il comando verrà eseguito, altrimenti
no. |
|
|
|
|
|
Sopra:
una porta logica OR (Richard
Bowles) |