Decimali, Binari & C
Formalizzazioni - Operazioni
binarie
|
Formalizzazioni...
Piccola parentesi per i matematici. Possiamo generalizzare quanto
detto finora :
- Un sistema di numerazione è un insieme di
regole e simboli il cui utilizzo permette di rappresentare delle quantità.
- In un sistema posizionale
ogni numero è rappresentato con una sequenza di simboli, di cifre, il cui
valore varia secondo la posizione nella scrittura e secondo le potenze
di un certo coefficiente detto base
- Un sistema con una base definita avere:
- un numero maggiore di uno che costituisce la base B
- un insieme di simboli S che rappresentano i numeri
a partire da zero fino al numero B-1, per un totale di B simboli
- una scrittura delle cifre ordinate per n colonne in ciascuna delle
quali la cifra S assume un valore determinato dalla posizione e dalla relativa
potenza di B.
Numero |
Sn |
... |
S4 |
S3 |
S2 |
S1 |
S0 |
Posizione |
n |
... |
4 |
3 |
2 |
1 |
0 |
Valore posizionale |
Bn |
... |
S4* B4 |
S3 * B3 |
S2 *B2 |
S1 *B1 |
S0 * B0 |
Tutti i sistemi di numerazione posizionale a base fissa,
indipendentemente dalla base:
- sono sistemi non ridondanti: non vi sono
sequenze di simboli che non rappresentano alcun numero
- sono a rango illimitato: ogni
numero può essere rappresentato, indipendentemente dalla sua grandezza
- sono a rappresentazione unica: ogni numero ha una sola rappresentazione, costituita da un insieme ordinato di
cifre.
Se ne può dedurre che è ben possibile creare sistemi di numerazione con
qualsiasi base, da 2 a infinito, senza con questo fare alcuna operazione straordinaria o strana.
Chiusa parentesi.
Operazioni binarie
Sui numeri binari posso effettuare operazioni aritmetiche (somma,
sottrazione, moltiplicazione, divisione), anche in colonna, dato che si tratta
di un sistema posizionale. Le regole sono quelle del
sistema decimale. Essendoci solo due cifre, oltretutto, la cosa è molto
semplificata :
SOMMA
0 + 0 → 0
0 + 1 → 1
1 + 0 → 1
1 + 1 → 10
|
|
110011 +
10001 =
-------------
1000100 |
1010 +
11 =
-------
1101 |
11 +
10 =
----
101 |
10101010 +
110110 =
------------
11100000 |
:
SOTTRAZIONE
0 - 0 → 0
0 - 1 → 1 resto 1
1 - 0 → 1
1 - 1 → 0
|
|
110011 -
10001 =
-------------
100010 |
1010 -
11 =
-------
111 |
11 -
10 =
----
1 |
10101010 +
110110 =
------------
1110100 |
Possiamo moltiplicare, dividere e aggiungere che il sistema binario si presta ad alcuni trucchi che,
peraltro, sono presenti identicamente anche nel sistema decimale, cambiando solo la base.
Ad esempio, se spostiamo verso destra le cifre di un numero decimale lo
dividiamo per 10 tante volte quante lo spostiamo. Ad esempio, facciamo scorrere
verso destra il numero 10000, buttando via le cifre che facciamo traboccare a
destra oltre la prima colonna. L'opposto se faccio scorrere a sinistra.
Colonna |
Note |
Valore
decimale |
4 |
3 |
2 |
1 |
-1 |
|
|
1 |
0 |
0 |
0 |
|
numero di partenza |
1000 |
|
1 |
0 |
0 |
.0 |
uno spostamento a destra divide per 10 |
100 |
|
|
1 |
0 |
.0 |
uno spostamento a destra divide per 10 |
10 |
|
|
|
1 |
.0 |
uno spostamento a destra divide per 10 |
1 |
|
|
1 |
0 |
|
uno spostamento a sinistra moltiplica per 10 |
10 |
|
1 |
0 |
0 |
|
uno spostamento a sinistra moltiplica per 10 |
100 |
1 |
0 |
0 |
0 |
|
uno spostamento a sinistra moltiplica per 10 |
1000 |
Analogamente nel sistema binario, solo che la base è due e non dieci.
Colonna |
Note |
Valore
decimale |
4 |
3 |
2 |
1 |
-1 |
|
|
1 |
0 |
0 |
0 |
|
numero di partenza |
8 |
|
1 |
0 |
0 |
.0 |
uno spostamento a destra divide per 2 |
4 |
|
|
1 |
0 |
.0 |
uno spostamento a destra divide per 2 |
2 |
|
|
|
1 |
.0 |
uno spostamento a destra divide per 2 |
1 |
|
|
1 |
0 |
|
uno spostamento a sinistra moltiplica per 2 |
2 |
|
1 |
0 |
0 |
|
uno spostamento a sinistra moltiplica per 2 |
4 |
1 |
0 |
0 |
0 |
|
uno spostamento a sinistra moltiplica per 2 |
8 |
Ecco un modo rapido per fare moltiplicazioni e divisioni. Questo genere di
operazioni prende il nome di SHIFT e diventa molto utile in numerose occasioni,
tanto che il set di istruzione dei processore ne contiene due o più varianti.
Non ci interessa in questa sede cosa succede alla colonna -1, dove la
numerazione decimale introduce la virgola; questo fa parte dell'
argomento"numeri in virgola mobile", che potremo trattare altrove. Per
ora il nostro discorso si rivolge solo a numeri interi.
Inoltre, in sistemi
non decimali, come quello binario, non è pratico nè sensato usare la virgole e
si impiegano altre convenzioni. La ragione è semplice: il binario serve al
lavoro della macchina, non al nostro, e gli algoritmi e le convenzioni devono scegliere le vie adeguate
per rendere funzionale il lavoro della macchina. Alla fine dell' elaborazione, se necessario, il risultato binario sarà convertito in decimale perchè lo
si possa leggere e comprendere rapidamente.
Quello che è importante capire qui è che i principi su cui si basa un
sistema posizionale sono analoghi qualunque sia la base che adottiamo.
Non facciamo esercitazioni sul binario: queste sono utili a
scuola per smuovere la mente. Se volete provare a fare un po' di esercizi, molto
meglio per voi.
Qui riteniamo che, una volta compreso il principio, non esiste alcuna necessità di
calcolare a mano le conversioni tra numeri decimali e numeri binari o fare
aritmetica binaria; sarebbe un
inutile perdita di tempo, un lavoro che può essere svolto molto più
efficacemente (è il loro lavoro !) dalle macchine.
E chiunque abbia un PC con
un Windows, ha, negli Accessori, l' utility Calcolatrice, che, impostata come
Scientifica dal menu Visualizza), permette non solo una immediata conversione tra decimale,
ottale,
binario, esadecimale, ma anche di effettuare operazioni aritmetiche e logiche su
questi numeri.
|
|
In relazione a questo è molto, molto opportuno che, se non ne avete mai
approfittato, impariate ad usare questa Calcolatrice ( e, se non questa, una delle
tante che il WEB offre gratuitamente).
Precisiamo però che "compreso il principio" è la chiave
fondamentale: leggete il racconto "Nove volte sette" di Asimov
ed avete un esempio di quello che si vuole dire qui e che si può sintetizzare
con la frase
"usare senza capire non
porta lontano".
Quello che si può aggiungere è che, nel sistema binario, sono applicati,
oltre alle operazioni aritmetiche, alcuni operatori logici (AND, NAND, NOR, OR, EXOR, NOT) che non hanno
molto senso nel sistema decimale e che invece sono fondamentali nella logica
booleana e nella struttura
del funzionamento del computer.
Vedremo queste operazioni in un altro capitolo.
Ovviamente con Calcolatrice si possono fare operazioni anche con il sistema
ottale e altro, ma per ora torniamo ai nostri bit e proviamo a osservarli da altri punti di
vista.
|