見出し画像

マイクラのレッドストーンで電卓を作る!【こんにちはレッドストーン(電卓編)4】

前置き

こんにちは
水地です
今回は、Minecraftのレッドストーンを使った電卓の作り方を解説していきたいと思います。
レッドストーンは楽しむことが上達の鍵だと思っています。
自分が作った回路が実際に動いているところを想像しながら作ると、より楽しく感じられます!
また、僕は独学でレッドストーン回路を作っているので、もしかしたら間違っているところや表現が正しくないところがあるかもしれません。
それでは、本編に入っていきたいと思います。

二進数の足し算と加算器

二進数は、前回解説しましたが、今回は二進数の足し算を解説していきたいと思います。
そして、二進数の足し算が行える加算器を作っていきたいと思います。

二進数の足し算

二進数の足し算は、十進数の足し算に近い感覚で行うことができます。
例として、2+3(10+11)をしたいと思います。

2+3

まず、1桁目の足し算を行います。

1桁目

十進数の場合は、これで完了します。
2+3=5なので正解です。
それでは、二進数の場合を想定してみましょう。

10+11

二進数の場合も、まずは1桁目から行います。

1桁目

1桁目の計算では、0+1になるので、1になります。
では、次に2桁目の計算を行いたいと思います。

2桁目

2桁目は、1+1になります。
この場合は、10に桁上げするので、3桁目に桁上げを伝えて、2桁目は0になります。

3桁目

3桁目は、1+0+0になるので、1になります。
よって、10+11=101となります。

二進数の足し算も、慣れれば簡単です。
では、次はこの足し算を行える回路を作っていきたいと思います。

半加算器

半加算器とは、0+0、1+0、0+1、1+1が行える加算器です。
0+0=00、1+0=01、0+1=01、1+1=10になります。

半加算器

この処理を行える論理回路を今から組みますが、
この表を見ていると、ある法則に気づくはずです。
S(和)はAかBのどちらかが1になった時のみ1になっています。

ここでクイズです!
この法則に当てはまる論理回路はなんでしょう?


ヒントは、下の画像の真理値表と同じ動きをする論理回路です!

ヒント


正解は…
XORでした!

XORの真理値表

つまり、半加算器のSはXORを使えば、再現できるということですね。

では、Cはどのようにして再現すればいいでしょうか?
CはAとBが両方とも1になった時に1になっています。

実は、これはAND回路を使えば再現できます。
ANDの真理値表は下の画像のようになっているので、ピッタリです。

ANDの真理値表

では、XORとANDを使えば半加算器が作れることが分かったので、実際にマイクラの中で作っていきたいと思います。

実際に作ってみる

半加算器

上の画像が、レッドストーン回路で作られた半加算器になります。
XORとANDを1つずつ使っています。
意外と簡単な構造で半加算器が作れることが分かりますね。

実際に作ってみて、ちゃんと半加算器を動かしてみてください!

全加算器

半加算器は完成しましたが、実は半加算機だけでは、二進数2桁以上の計算を行うことはできません。
なぜなら、半加算器は桁上げに対応していないからです。

半加算器は、C(桁上げ)を出力しますが、Ci(キャリーインプット)には対応していません。
そこで登場するのが、全加算器です。

全加算器とは、0+0だけではなく、さらにもう一つ+0できる加算器です。
0+0+0=00~1+1+1=11までの8通りの計算が行えます。
この全加算器なら、桁上げにも対応できるため、全加算器を4つつなげることで、二進数4桁の足し算も行えるようになります。

それでは、全加算器も実際に作ってみたいと思います。

全加算器を作ってみる

全加算器

上の画像が、レッドストーン回路で作られた全加算器になります。
半加算器を2つ使っていますね。
また、配線の延長のためにレッドストーンリピーターも使われています。
入力するレバーも、2つから3つに増えています。

こちらの全加算器も、実際に作って動かしてみてほしいです!

4bit加算器

4bit加算器も作ってみました!
一見すごく複雑そうですが、よく見てみれば全加算器が4つつながっている構造になっています。
下の位のCは上の位のCiに繋がっています。
なので、桁上げが発生する計算も問題ありません。

最後に

まずは、実際に作って動かしてみることが大事だと思います。
自分が作った論理回路が動いているというのは、すごく感動するものだと思っています。

次回は、エンコーダーについて解説したいと思います。
最後まで読んでくれてありがとうございました!

いいなと思ったら応援しよう!