Minecraftと負論理

回路初心者がデジタル回路の勉強をする中で、負論理の考え方をMinecraftに応用できると気付き、面白いと思ったのでメモしておく。

Minecraftのレッドストーン回路で基本論理素子を作るにはどうすれば良いか。

NOT、OR

NOT回路とOR回路の製作は容易である。
NOTはレッドストーントーチを用いるだけ、ORはレッドストーンワイヤーを繋げるだけで作ることができる。

ORの出力にNOTをつければNOR回路となるので、これの製作も容易である。

AND、NAND

ANDは少し複雑になる。NANDを作る方が簡単であり、NANDの出力を否定する形でANDを作ると良い。
NAND素子は以下のようなMIL論理記号で表される。


NANDと聞くと”AND”に引っ張られて1番の正論理で考えてしまうが、2番の負論理を見ればNOTとORで構成されていることが分かるので、Minecraftで簡単に製作できる。

XOR

ついでにXORも考えてみる。

論理式通りに

さすがにXORは簡単には行かない。論理式で書くと以下のようになる。

    \[ Z=A\overline{B}+\overline{A}B \]

つまり(\overline{A}BのAND)と(A\overline{B}のAND)のORを取れば良い。

ANDを負論理に変えると以下のようになる。

NOTが2個連続で現れるところは打ち消し合うので、OR3個とNOT4個でXORを作ることができる。しかし回路が交差しているので、Minecraftで実装するとレッドストーンワイヤーを跨ぐために回路が大きくなる。

もっと小さく

回路を跨がない方法がこれだという。OR4個とNOT3個。

    \begin{align*} Z&=\overline{\overline{A+B}+A}+\overline{\overline{A+B}+B}\\ &=\overline{(\overline{A+B}+A)(\overline{A+B}+B)}\\ &=\overline{(\overline{A}\ \overline{B}+A)(\overline{A}\ \overline{B}+B)}\\ &=\overline{\overline{A}\ \overline{B}\ \overline{A}\ \overline{B}+\overline{A}\ \overline{B}B+A\overline{A}\ \overline{B}+AB}\\ &=\overline{\overline{A}\ \overline{B}+AB}\\ &=\overline{\overline{A}\ \overline{B}}\ \overline{AB}\\ &=(A+B)(\overline{A}+\overline{B})\\ &=A\overline{A}+A\overline{B}+B\overline{A}+B\overline{B}\\ &=A\overline{B}+\overline{A}B\\ \end{align*}

これがXORになるのは分かるが、よくこんなの思いつくな。
慣れてくると簡単らしいが、私もそうなるのだろうか。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください