| 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 | 
 |