Я в настоящее время работаю через Nand2tetris для университетского курса, и это в основном просто.Но alu может сделать вычитание за один шаг, и я абсолютно не понимаю, как это работает.
opMinus = addition <> notX <> notOut
Я не смог найти никакого объяснения этому в Интернете.И последний шаг, когда я пытаюсь получить это сам, выглядит глупостью, хотя quickcheck говорит, что это правильно:
a - b
a + !b + 1 -- 2s complement
!!(a + !b + 1) -- double negation
!(!a + b) -- apparently this is correct and i have no clue why
Последний шаг выглядит так, как будто он основан на чем-то вроде
!(a+b) == !a + !b + 1
, ноУ меня нет интуиции, почему это работает, поэтому объяснение будет очень цениться.Спасибо за чтение!