我试图找到您无法实现的最低级别的东西,因为它们太低了。因此,似乎所有计算都可以从NAND gate进行构造。
从真值表可以很容易地在JavaScript中“实现”:
function nand(a, b) {
if (a == 0 && b == 0) return 1
if (a == 0 && b == 1) return 1
if (a == 1 && b == 0) return 1
if (a == 1 && b == 1) return 0
}
但这是作弊。因为IF statements implemented怎么样?我不确定如何在代码中表示if语句链接,因为我不确定对逻辑门/电路的了解,但是我很确定IF语句本身可以表示为NAND门的组合。
因此,这就是乌龟! NAND门由更多的NAND门(用于if语句)等实现。
那么,如何避免这种情况呢?我们是否简单地说“与非”门是公理?我想知道是因为我想知道正式验证的基础在哪里。
换句话说,我要问的原因是因为我注意到每个功能都可以实现为其他功能,甚至IF语句等也可以实现。一切都可以一直执行到NAND门。但是然后我就摇摆不定了,NAND也是一个功能,但是它的实现是什么?!我感到困惑/困惑,需要一些如何思考的指导。
最佳答案
由于NAND不是Not,您可以使用AND声明它,这意味着NAND不是公理:
function nand(a, b) {
return !(a && b)
}
console.log(nand(false, false)) // true
console.log(nand(true, false)) // true
console.log(nand(false, true)) // true
console.log(nand(true, true)) // false
使用乘法可以将NAND声明为0和1。由于AND为
a * b
(如果均为1,则为1),因此NAND为1 - a * b
:function nand(a, b) {
return 1 - a * b
}
console.log(nand(0, 0)) // 1
console.log(nand(1, 0)) // 1
console.log(nand(0, 1)) // 1
console.log(nand(1, 1)) // 0
关于javascript - NAND门如何实现? (从概念上),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59480912/