Sezione |
Indirizzi Base
Registri Interni
|
Schede del Tutorial |
Numeri e Logica Binaria |
SCHEDA n° 09 [ 4 di 20] |
|
|
Cominciamo con il considerare senza segno i numeri binari della tabella precedente; come detto, se formattati a 8 bit (cioè della dimensione di un Byte) il loro valore va da 00000000 (0) a 11111111 (255). |
|
Vediamo in che modo possiamo esercitare su di essi le 4 operazioni; devo sottolineare che questo compito è svolto in maniera egregia da qualunque processore, per cui sembra inutile accanirsi a capire tecniche che nessuno di noi metterà realmente in pratica... | |
Tuttavia ammetto che la lettura di questi esempi può aiutare a capire i meccanismi effettivamente attivati dai processori stessi; del resto questi ultimi sono nostre creature e dovranno obbedire a criteri ormai consolidati, se pur in binario... |
|
Così la somma aritmetica binaria non è poi molto diversa da quella decimale; le cifre dei due addendi sono sommate colonna dopo colonna, tenendo conto dell'eventuale riporto, da sommare con gli eventuali operandi della colonna adiacente a sinistra. |
La regola da applicare a ciascuna colonna è, nei 4 casi possibili: |
|
Binario |
Decimale |
0+0= 0 con riporto di 0 |
0+0= 0 (00)2 |
0+1=
1 con riporto di
0
|
0+1= 1 (01)2 |
1+0= 1 con riporto di 0 |
1+0= 1 (01)2 |
1+1= 0 con riporto di 1 |
1+1= 2 (10)2 |
|
La "traduzione" decimale della tabella mostra che l'ultima somma (1+1), dovendo dare 2 come risultato, lascerà le "unità" a 0 e proporrà un riporto da aggiungere alle "decine" (la colonna adiacente a sinistra) per garantire il risultato binario atteso, (10)2 (naturalmente i termini "unità" e "decine" sono del tutto figurati..). | |
Vediamo alcuni esempi: |
|
Binario |
Decimale |
R ...
|
4 + 3 = ---------- 7 |
|
Binario |
Decimale |
R 1..
|
6 + 3 = ---------- 9 |
|
Binario |
Decimale |
R 111.
|
13 + 3 = ---------- 16 |
|
Da notare che i processori eseguono questo compito in pochi nanosecondi, con numeri a 8, 16, 32 bit, ..., senza batter ciglio (da qui l'assurdità di perdere ulteriore tempo con queste pratiche ancestrali...); il processore 80x86 prevede 2 istruzioni specifiche, la ADD (Addizione aritmetica tra numeri interi) e la ADC (Addizione aritmetica tra numeri interi, con riporto). |
|
Se la somma viene operata con dati formattati (per esempio a 8 bit) può succedere che il risultato non sia attendibile; l'errore si manifesta quando, sommando i bit più significativi (quelli della colonna più a sinistra), si verifica la necessità di generare un riporto: |
|
Binario |
Decimale |
R1........
|
234 + 128 = ---------- 106 (?!) |
|
La cosa è assolutamente logica: la somma dei due addendi darebbe risultato 362 decimale, che in binario ha bisogno di 9 bit, 101101010, provocando un overflow, cioè un trabocco dei limiti consentiti; infatti, poichè i bit sono solamente 8, il risultato viene troncato a 01101010, pari a 106 decimale, esattamente la differenza tra 362 (il risultato decimale atteso) e 256 (il peso del mancante nono bit). |
|
Per ovviare a questo inconveniente i costruttori di processori hanno previsto un particolare bit (flag Carry) che assume comunque il valore del riporto della somma di numeri binari della stessa dimensione. |
|
Questo bit (insieme ad altri dello stesso tipo) è conservato in un particolare Registro del processore 80x86, facilmente consultabile, per consentire al programmatore assembly di prendere (eventualmente) i provvedimenti del caso. |
|
In ultimo possiamo mostrare la Tabella di Verità di una somma aritmetica tra 2 numeri da 1 bit ciascuno: |
|
A | B | Somma | Riporto |
0 | 0 | 0 | 0 |
0 | 1 | 1 | 0 |
1 | 0 | 1 | 0 |
1 | 1 | 0 | 1 |
|
Scheda n° 09 | Numeri e Logica Binaria | |||||||
Scheda n° 09 - 4 |
|
|
|
|
Home |
|
|||||||
|
Motore Ricerca |
|