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