Sezione |
Indirizzi Base
Registri Interni
|
Schede del Tutorial |
Numeri e Logica Binaria |
SCHEDA n° 09 [ 5 di 20] |
|
Aggiornato 4 ottobre 2010 |
|
L'aritmetica sui numeri binari senza segno prevede naturalmente anche sottrazione, anche in questo caso del tutto simile a quella decimale; la cifra del minuendo è sottratta dalla cifra del sottraendo colonna dopo colonna, tenendo conto dell'eventuale prestito da sottrarre 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 prestito di 0 |
(00)2 0-0= 0 |
0-1=
1
con prestito di
1
|
(10)2 2-1= 1 |
1-0= 1 con prestito di 0 |
(01)2 1-0= 1 |
1-1= 0 con prestito di 0 |
(01)2 1-1= 0 |
|
L'interpretazione decimale della tabella mostra che la seconda sottrazione non può essere fatta se lo 0 del sottraendo non viene inteso come quello del numero 2, (10)2, ottenuto col tacito accordo di avere un prestito da togliere alle "decine" (la colonna adiacente a sinistra). |
Vediamo alcuni esempi: |
|
Binario |
Decimale |
100 - |
4 - 3 = ---------- 1 |
|
Binario |
Decimale |
110 - |
6 - 3 = ---------- 3 |
|
Binario |
Decimale |
1101 - |
13 - 3 = ---------- 10 |
|
Il processore 80x86 prevede 2 istruzioni specifiche, la SUB (Sottrazione aritmetica tra numeri interi) e la SBB (Sottrazione aritmetica tra numeri interi, con prestito), eseguita in pochi nanosecondi con operandi di tutte le dimensioni (a 8, 16, 32 bit, ...); a maggior ragione non è il caso perdere ulteriore tempo, data la particolare paranoia di questa operazione |
|
Segnalo soltanto la possibilità di avere problemi di overflow (trabocco dei limiti consentiti) anche nell'esecuzione della sottrazione; in questo caso l'errore si manifesta quando si tenta di sottrarre un minuendo più grande del sottraendo. |
|
La flag Carry assume in questo caso comunque il valore del prestito (borrow) della differenza di numeri binari della stessa dimensione ed è facilmente consultabile (insieme ad altri bit dello stesso tipo) in un particolare Registro del processore 80x86, a disposizione del programmatore assembly. |
|
In ultimo possiamo mostrare la Tabella di Verità di una sottrazione aritmetica tra 2 numeri da 1 bit ciascuno: |
|
A | B | Differenza | Prestito |
0 | 0 | 0 | 0 |
0 | 1 | 1 | 1 |
1 | 0 | 1 | 0 |
1 | 1 | 0 | 0 |
|
Scheda n° 09 | Numeri e Logica Binaria | |||||||
Scheda n° 09 - 5 |
|
|
|
|
Home |
|
|||||||
|
Motore Ricerca |
|