我试图找到您无法实现的最低级别的东西,因为它们太低了。因此,似乎所有计算都可以从NAND gate进行构造。

javascript - NAND门如何实现? (从概念上)-LMLPHP

从真值表可以很容易地在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/

10-11 08:22