1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

NAND 演算の基本 !(A & B)

Posted at

「0と1だけでこんなに奥深い世界があるなんて…!」
Paizaで出会ったNAND(ナンド)演算、正直ナメてた。でもコイツ、実は論理界のチートキャラだった!

問題概要

0 または 1 の整数 AB が与えられ、A NAND B を求めるというシンプルなお題。
NAND = !(A & B) のこと。


例)

入力: 1 1
出力: 0

NG例

const [A, B] = input.split(' ');
console.log(!(A & B)); // → true/false(数値じゃない)


OK例

const [A, B] = input.split(' ').map(Number); //.map(Number)はなくてもよい
console.log(Number(!(A & B)));  // NAND = NOT (A AND B)
// → 0 or 1(数値)


まとめ

  • NANDは「NOT(AND)」の略
  • 数値変換をする
  • NANDだけで全論理ゲート作れる → 「万能ゲート」と呼ばれる



🐻僕の失敗談(´;ω;`)と解決話!🚀🐈


おまけ 

NANDだけで他の論理演算が作れる!
→ これを「万能ゲート」って言うらしい。

代表的なやつ:

NOT A = A NAND A

A AND B = (A NAND B)NOT

A OR B = (A NAND A) NAND (B NAND B)

A XOR B = (A NAND B) AND (A OR B)


// 論理否定(NOT A)
const notA = Number(!(A & A)); // NOT A = A NAND A


// 論理積(A AND B)
const nand = Number(!(A & B));
const and = Number(!nand); // A AND B = NOT (A NAND B)


// 論理和(A OR B)
const notA_for_or = Number(!(A & A));
const notB_for_or = Number(!(B & B));
const or = Number(!(notA_for_or & notB_for_or)); // A OR B = (A NAND A) NAND (B NAND B)


// 排他的論理和(A XOR B)
const xor = Number(!( !(nand & or) )); // A XOR B = (A NAND B) AND (A OR B)
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?