La natura binaria degli elaboratori elettronici richiede la conoscenza di alcuni concetti fondamentali per la rappresentazione e il trattamento dei valori numerici.
I sistemi di numerazione più comuni sono di tipo posizionale, definiti in tal modo perché la posizione in cui appaiono le cifre ha significato. I sistemi di numerazione posizionali si distinguono per la base di numerazione.
Il sistema di numerazione decimale è tale perché utilizza dieci simboli, pertanto è un sistema in base dieci. Trattandosi di un sistema di numerazione posizionale, le cifre numeriche, da «0» a «9», vanno considerate secondo la collocazione relativa tra di loro.
A titolo di esempio si può prendere il numero 745, che eventualmente va rappresentato in modo preciso come 74510: secondo l'esperienza comune si comprende che si tratta di settecento, più quaranta, più cinque, ovvero, settecentoquarantacinque. Si arriva a questo valore sapendo che la prima cifra a destra rappresenta delle unità (cinque unità), la seconda cifra a partire da destra rappresenta delle decine (quattro decine), la terza cifra a partire da destra rappresenta delle centinaia (sette centinaia).
|
|
Il sistema di numerazione binario (in base due), utilizza due simboli: «0» e «1».
|
|
|
|
Il sistema di numerazione ottale (in base otto), utilizza otto simboli: da «0» a «7».
|
|
|
|
Il sistema di numerazione esadecimale (in base sedici), utilizza sedici simboli: le cifre numeriche da «0» a «9» e le lettere (maiuscole) dalla «A» alla «F».
|
|
|
L'uso dell'elaboratore può richiedere la capacità di convertire valori numerici espressi in diversi sistemi di numerazione; per la precisione può essere necessario saper trasformare un numero in una base differente. Prima di poter convertire un numero in una base di numerazione differente, occorre comprendere il senso della numerazione decimale, ovvero di quella standard (per gli esseri umani).
Un numero espresso in base dieci, viene interpretato sommando il valore di ogni singola cifra moltiplicando per 10n (n rappresenta la cifra n-esima, a partire da zero). Per esempio, 12 345 si può esprimere come 5×100 + 4×101 + 3×102 + 2×103 + 1×104. Nello stesso modo, si può scomporre un numero per esprimerlo in base dieci dividendo ripetutamente il numero per la base, recuperando ogni volta il resto della divisione. Per esempio, il valore 12 345 (che ovviamente è già espresso in base dieci), si scompone nel modo seguente: 12 345/10=1 234 con il resto di cinque; 1 234/10=123 con il resto di quattro; 123/10=12 con il resto di tre; 12/10=1 con il resto di due; 1/10=0 con il resto di uno (quando si ottiene un quoziente nullo, la conversione è terminata). Ecco che la sequenza dei resti dà il numero espresso in base dieci: 12 345.
|
La numerazione ottale, ovvero in base otto, si avvale di otto cifre per rappresentare i valori: da zero a sette. La tecnica di conversione di un numero ottale in un numero decimale è la stessa mostrata a titolo esemplificativo per il sistema decimale, con la differenza che la base di numerazione è otto. Per esempio, per interpretare il numero ottale 123458, si procede come segue: 5×80 + 4×81 + 3×82 + 2×83 + 1×84. Pertanto, lo stesso numero si potrebbe rappresentare in base dieci come 5 349. Al contrario, per convertire il numero 5 349 (qui espresso in base 10), si può procedere nel modo seguente: 5 349/8=668 con il resto di cinque; 668/8=83 con il resto di quattro; 83/8=10 con il resto di tre; 10/8=1 con il resto di due; 1/8=0 con il resto di uno. Ecco che così si riottiene il numero ottale 123458.
La numerazione esadecimale, ovvero in base sedici, funziona in modo analogo a quella ottale, con la differenza che si avvale di 16 cifre per rappresentare i valori, per cui si usano le cifre numeriche da zero a nove, più le lettere da «A» a «F» per i valori successivi. In pratica, la lettera «A» nelle unità corrisponde al numero 10 e la lettera «F» nelle unità corrisponde al numero 15.
La tecnica di conversione è la stessa già vista per il sistema ottale, tenendo conto della difficoltà ulteriore introdotta dalle lettere aggiuntive. Per esempio, per interpretare il numero esadecimale 19ADF16, si procede come segue: 15×160 + 13×161 + 10×162 + 9×163 + 1×164. Pertanto, lo stesso numero si potrebbe rappresentare in base dieci come 105 183. Al contrario, per convertire il numero 105 183 (qui espresso in base 10), si può procedere nel modo seguente: 105 183/16=6 573 con il resto di 15, ovvero F16; 6 573/16=410 con il resto di 13, ovvero D16; 410/16=25 con il resto di 10, ovvero A16; 25/16=1 con il resto di nove; 1/16=0 con il resto di uno. Ecco che così si riottiene il numero esadecimale 19ADF16.
La numerazione binaria, ovvero in base due, si avvale di sole due cifre per rappresentare i valori: zero e uno. Si tratta evidentemente di un esempio limite di rappresentazione di valori, dal momento che utilizza il minor numero di cifre. Questo fatto semplifica in pratica la conversione.
Seguendo la logica degli esempi già mostrati, si analizza brevemente la conversione del numero binario 11002: 0×20 + 0×21 + 1×22 + 1×23. Pertanto, lo stesso numero si potrebbe rappresentare come 12 secondo il sistema standard. Al contrario, per convertire il numero 12, si può procedere nel modo seguente: 12/2=6 con il resto di zero; 6/2=3 con il resto di zero; 3/2=1 con il resto di uno; 1/2=0 con il resto di uno. Ecco che così si riottiene il numero binario 11002.
Si può convertire un numero in binario, in modo più semplice, se si costruisce una tabellina simile a quella seguente:
|
I valori indicati sopra ogni casellina sono la sequenza delle potenze di due: 20, 21, 22,... 2n.
Se si vuole convertire un numero binario in base dieci, basta disporre le sue cifre dentro le caselline, allineato a destra, moltiplicando ogni singola cifra per il valore che gli appare sopra, sommando poi ciò che si ottiene. Per esempio:
Per trovare il corrispondente binario di un numero in base 10, basta sottrarre sempre il valore più grande possibile. Supponendo di voler convertire il numero 123 in binario, si possono sottrarre i valori: 64, 32, 16, 8, 2 e 1:
I sistemi di numerazione ottale ed esadecimale hanno la proprietà di convertirsi in modo facile in binario e viceversa. Infatti, una cifra ottale richiede esattamente tre cifre binarie per la sua rappresentazione, mentre una cifra esadecimale richiede quattro cifre binarie per la sua rappresentazione. Per esempio, il numero ottale 1238 si converte facilmente in 0010100112; inoltre, il numero esadecimale 3C16 si converte facilmente in 001111002.
In pratica, è sufficiente convertire ogni cifra ottale o esadecimale nel valore corrispondente in binario. Quindi, sempre nel caso di 1238, si ottengono 0012, 0102 e 0112, che basta attaccare come già è stato mostrato. Nello stesso modo si procede nel caso di 3C16, che forma rispettivamente 00112 e 11002.
È evidente che risulta facilitata ugualmente la conversione da binario a ottale o da binario a esadecimale.
|
La conversione di valori non interi in basi di numerazione differenti, richiede un procedimento più complesso, dove si convertono, separatamente, la parte intera e la parte restante.
Il procedimento di scomposizione di un numero che contenga delle cifre dopo la parte intera, si svolge in modo simile a quello di un numero intero, con la differenza che le cifre dopo la parte intera vanno moltiplicate per la base elevata a una potenza negativa. Per esempio, il numero 12,34510 si può esprimere come 1×101 + 2×100 + 3×10-1 + 4×10-2 + 5×10-3.
Come già accennato la conversione di un numero in un'altra base procede in due fasi: una per la parte intera, l'altra per la parte restante, unendo poi i due valori trovati. Per comprendere il meccanismo conviene simulare una conversione dalla base 10 alla stessa base 10, con un esempio: 12,345.
Per la parte intera, si procede come al solito, dividendo per la base di numerazione del numero da trovare e raccogliendo i resti; per la parte rimanente, il procedimento richiede invece di moltiplicare il valore per la base di destinazione e raccogliere le cifre intere trovate. Si osservi la figura successiva che rappresenta il procedimento.
Quello che si deve osservare dalla figura è che l'ordine delle cifre cambia nelle due fasi del calcolo. Nelle figure successive si vedono altri esempi di conversione nelle altre basi di numerazione comuni.
Per convertire un numero da una base di numerazione qualunque alla base 10, è necessario attribuire a ogni cifra il valore corrispondente, da sommare poi per ottenere il valore complessivo. Nelle figure successive si vedono gli esempi relativi alle basi di numerazione più comuni.
Per quanto riguarda la conversione tra sistemi di numerazione ottale, esadecimale e binario, vale lo stesso principio dei numeri interi, con la differenza che occorre rispettare la separazione della parte intera da quella decimale. L'esempio della figura successiva dovrebbe essere abbastanza chiaro.
Può essere utile conoscere alcuni concetti legati ai calcoli più semplici, specie quando applicati al sistema binario. Nelle sezioni successive si riepilogano i procedimenti per eseguire le «quattro operazioni» con il sistema binario.
Dato un numero n, espresso in base b, con k cifre, il complemento alla base è costituito da bk-n.
Per esempio, il complemento alla base del numero 00 123 456 789 (espresso in base dieci utilizzando 11 cifre) è 99 876 543 211:
|
Dall'esempio si deve osservare che la quantità di cifre utilizzata è determinante nel calcolo del complemento, infatti, il complemento alla base dello stesso numero, usando però solo nove cifre (123 456 789) è invece 876 543 211:
|
In modo analogo si procede con i valori aventi una base diversa; per esempio, il complemento alla base del numero binario 001100112, composto da otto cifre, è pari a 110011012:
|
Il calcolo del complemento alla base, nel sistema binario, avviene in modo molto semplice, se si trasforma in questo modo:
|
In pratica, si prende un numero composto da una quantità di cifre a uno, pari alla stessa quantità di cifre del numero di partenza; quindi si esegue la sottrazione, poi si aggiunge il valore uno al risultato finale. Si osservi però cosa accade con una situazione leggermente differente, per il calcolo del complemento alla base di 00110011002:
|
Per eseguire una sottrazione, si può calcolare il complemento alla base del sottraendo (il valore da sottrarre), sommandolo poi al valore di partenza, trascurando il riporto eventuale. Per esempio, volendo sottrarre da 1 757 il valore 758, si può calcolare il complemento alla base di 0 758 (usando la stessa quantità di cifre dell'altro valore), per poi sommarla. Il complemento alla base di 0 758 è 9 242:
|
Invece di eseguire la sottrazione, si somma il valore ottenuto a quello di partenza, ignorando il riporto:
|
Infatti: 1 757-758=999.
Quando si fa riferimento a numeri in base due, il complemento alla base è più noto come «complemento a due» (che evidentemente è la stessa cosa). D'altro canto, il complemento a uno è ciò che è già stato descritto con l'esempio seguente, dove si ottiene a partire dal numero 00110011002:
|
Si comprende intuitivamente che il complemento a uno si ottiene semplicemente invertendo le cifre binarie:
|
Pertanto, il complemento a due di un numero binario si ottiene facilmente invertendo le cifre del numero di partenza e aggiungendo una unità al risultato.
L'addizione binaria avviene in modo analogo a quella del sistema decimale, con la differenza che si utilizzano soltanto due cifre numeriche: 0 e 1. Pertanto, si possono presentare solo i casi seguenti:
|
Se si aggiunge un riporto alla somma tra due cifre binarie, si anno questi altri casi:
Segue l'esempio di una somma tra due numeri in base due:
|
La sottrazione binaria può essere eseguita nello stesso modo di quella che si utilizza nel sistema decimale. Come avviene nel sistema decimale, quando una cifra del minuendo (il numero di partenza) è minore della cifra corrispondente nel sottraendo (il numero da sottrarre), si prende a prestito una unità dalla cifra precedente (a sinistra), che così si somma al minuendo con il valore della base di numerazione. L'esempio seguente mostra una sottrazione con due numeri binari:
|
Generalmente, la sottrazione binaria viene eseguita sommando il complemento alla base del sottraendo. Il complemento alla base di 001100112 con otto cifre è 110011012:
|
Pertanto, la sottrazione originale diventa una somma, dove si trascura il riporto:
La moltiplicazione binaria si esegue in modo analogo a quella per il sistema decimale, con il vantaggio che è sufficiente sommare il moltiplicando, facendolo scorrere verso sinistra, in base al valore del moltiplicatore. Naturalmente, lo spostamento di un valore binario verso sinistra di n posizioni, corrisponde a moltiplicarlo per 2n. Si osservi l'esempio seguente dove si moltiplica 100110012 per 10112:
La divisione binaria si esegue in modo analogo al procedimento per i valori in base dieci. Si osservi l'esempio seguente, dove si divide il numero 101102 (2210) per 1002 (410):
In questo caso il risultato è 1012 (510), con il resto di 102 (210); ovvero 101,12 (5,510).
Intuitivamente si comprende che: si prende il divisore, senza zeri anteriori, lo si fa scorrere a sinistra in modo da trovarsi allineato inizialmente con il dividendo; se la sottrazione può avere luogo, si scrive la cifra 12 nel risultato; si continua con gli scorrimenti e le sottrazioni; al termine, il valore residuo è il resto della divisione intera.
Mario Italiani, Giuseppe Serazzi, Elementi di informatica, ETAS libri, 1973, ISBN 8845303632
Tony R. Kuphaldt, Lessons In Electric Circuits, Digital, http://www.faqs.org/docs/electric/, http://www.faqs.org/docs/electric/Digital/index.html
«a2» 2013.11.11 --- Copyright © Daniele Giacomini -- appunti2@gmail.com http://informaticalibera.net