La sottrazione è il meccanismo fondamentale e più primitivo: a - b vs. a > b . Dopo la sottrazione di a-b la maggior parte delle CPU imposta alcuni flag in modo tale da poter determinare: result > 0 , result == 0 , result < 0 , che possiamo usare per la ramificazione condizionale.
La sottrazione, a - b , viene eseguita con l'aggiunta: a + -b , e, la negazione ( -b ) viene eseguita dal complemento più uno: ~b + 1 (per i numeri interi del complemento a due). Quindi, a - b è a + ~b + 1 . E con appropriati flag di carry possiamo determinare maggiore, uguale o minore, in modo da inferire la relazione di magnitudine.
Ora, a + ~b + 1 richiede un tre sommatore di input per il bit di ordine basso; tuttavia, qualsiasi aggiunta di byte / parole richiede sommatori di ingresso a tre bit (per accogliere due ingressi più un bit di trasferimento) per tutte le posizioni di bit, tranne il bit di ordine basso, dove non è presente alcun input di carry. Quindi, l'onere per +1 di negazione (per sottrazione) è discutibilmente minimo: che il bit di ordine basso ha bisogno dello stesso sommatore completo (input a 3 bit) di tutte le altre posizioni di bit.
(Il complemento è semplicemente un'inversione di ciascun bit sul posto, molto economico.)