我目前正在通过 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
但我不知道为什么会这样,因此非常感谢您的解释。谢谢阅读!