どうもどうも! EIEIです!
今回は、マイクラのレッドストーン回路を用いて、電卓を作る方法を紹介したいと思います!
Youtubeなどで、すごく大きな電卓の回路を動かす動画なんかを見たことがある人もいると思います。
マイクラというゲームの中で、電卓を作れるのはすごいですよね!
…とはいえ、あんな大きなものは1つの記事で解説するのは大変なので、
今回は「足し算のできる電卓」を作っていこうと思います!
実は、足し算を実現するだけならそこまで巨大な回路にはなりませんよ!
回路が苦手な方でも作れるように、分かりやすい画像を添えて解説していきます!
また、実は今回解説する内容は、専門学校や大学なんかで教えている知識なので、
思考力なんかを鍛える勉強としてもおすすめです!
もちろん、小学生などの方でも分かるように、丁寧に解説させていただきます!
本日もLet’sマイクラ!
電卓を作る前に、デジタル回路の基礎知識!
ここから、電卓を作るにあたってフワッと理解しておきたい、
デジタル回路の基礎知識について紹介します。
マイクラのレッドストーン回路も、ゲームの中の存在ではありますがデジタル回路ととらえられます。
「難しいことは読みたくない!」「早く電卓をマイクラで作りたい!」という方は、
「1桁の足し算をできる電卓! 半加算器の作り方!」まで飛ばしてくださいね。
デジタル回路の基本の「き」
ここからは、現役で高専の情報科に通っている筆者が、高専で習ったことをかみ砕いて説明いたします!
デジタル回路には、「ON」と「OFF」の2種類の状態があります。
レッドストーン回路でも、信号が通っている「ON」と、信号が通っていない「OFF」の状態がありますよね。
回路の状態として、この2種類がありますよ~
この記事では、ONのことを「1」、OFFのことを「0」として書いていきますね。
また、こちらから与える信号のことを、「入力」と言います。
足し算をする電卓であれば、足したい2つの数を「入力」しますよね。
この記事では、レッドストーン回路のレバーを「入力」として使っていきます!
勘の良い方は察せるかもしれませんが、出てくる信号のことを「出力」と言います!
電卓であれば、計算結果が「出力」されますよね~
2進数の知識! いつも使う「10進数」との違い!
皆さんは、「2進数」というものを聞いたことがあるでしょうか?
コンピューターも2進数で動いており、デジタル回路やコンピューターにとっては、便利な数の数え方なんです!
普段僕らが日常生活で使っているのは、10進数という数え方ですよ。
10進数であれば、0から9までの「10」個の数字を数えたら、桁が上がりますよね!
一方2進数だと、0と1のみしか数字がなく、「2」個数字を数えたら桁が上がります!
10進数だと「0、1、2、3、…、8、9、10、11、…」ですが、
2進数では「0、1、10、11、100、101、…」となります!
この記事では、10進数での0から7までの数字を、2進数の形で扱います。
なので、10進数と2進数の対応表を置いておきますね!
10進数の数 | 2進数で表すと |
---|---|
0 | 0 |
1 | 1 |
2 | 01 |
3 | 11 |
4 | 100 |
5 | 101 |
6 | 110 |
7 | 111 |
記事中で都度、解説を入れているので、上の表を覚えていただく必要はありません。
「回路では変な数の数え方をするんだな、」程度に思っていただければ結構です。
ちなみに、普段「06」と書かれたら「6」に直せるように、2進数でも「010」など余分に0を付けることがありますよ。
AND回路の作り方!
ここから、電卓を作るために必要な回路の作り方を、部品に分けて解説していきます!
実際にマイクラのスクリーンショットを使って、作り方を紹介します!
まずは、AND回路です! これは、2つ(以上)の入力があり、すべて1の時のみ出力が1となる回路です。
AND回路に限らず、何パターンか作り方があるのですが、今回はそのうちの1つを紹介します。
今回使うのは2入力ANDと呼ばれる、入力が2つあるものです。入力と出力の対応表が下になります。
入力1 | 入力2 | 出力 |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
実際にAND回路を作って、レバーをガチャガチャすると動作がよく分かります。
下の画像でも、入力が2つとも1じゃないと、出力が1になっていないのが分かるかと思います!
XOR回路の作り方!
次に、XOR回路です! この回路、いくつか名前を持っていて、本やサイトによっては「EOR」と書いていることなどもあります。
XOR回路は、2つある入力のうちどちらかが1の時のみ、出力が1になる回路です!
どちらも1の時は、出力は0になるんです!
XOR回路の、入力と出力の対応表は下のようになります!
入力1 | 入力2 | 出力 |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
実際に動かしてみると、下の画像のような感じです。
今回は電卓を作っていくわけですが、このXOR回路の動作が足し算にピッタリなんですよね!
なぜなら、2進数で「01 + 01」をすると、桁上がりが発生して「10」となるからです。
一番下の桁が1と1なのですが、これを足すと0になります。XOR回路の動作と一致します!
2進数での「01 + 01 = 10」は、10進数で表現すると「1 + 1 = 2」です!
「そろそろ難しくて分からない…!」という方は、「XOR回路は足し算を作る時に便利!」と認識していただければOKです♪
OR回路の作り方!
今回使う回路の部品としてはラスト! OR回路です!
OR回路は、2つ(以上)ある入力のうち、どれか1つ以上が1ならば、出力が1になる、という回路です!
1つだけ1でもいいですし、2つとも1でも出力は1になります。
OR回路をマイクラで作る際も、いくつか作り方があるのですが、
何と言ってもOR回路は、その単純な機構ゆえ、回路を接続するだけで成立します!
入力と出力の対応表は以下の通り。
入力1 | 入力2 | 出力 |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
レッドストーン回路に少し触れたことのある方なら想像できるかと思いますが、
実際に動かしてみると下の画像のようになります!
実は、足し算をする電卓であればこの3つの部品を組み合わせることで作れます!
これだけで電卓を作れちゃうの!?
ここからは、これらの回路を組み合わせて、電卓を作る方法を解説しますよ〜!
普段使っているような、10進数で足し算もかけ算もできる、みたいな電卓はもっと複雑なのですが、
2進数の足し算をデジタル回路で実現するには、これだけで十分なんです。
1桁の足し算をできる電卓! 半加算器の作り方!
まずは、1桁の足し算をすることができる、「半加算器」という大きな部品の作り方を紹介します!
半加算器は、XOR回路とAND回路を組み合わせることで作成できる、2入力2出力の部品です。
2つの回路を用いるので、少し大きくなってしまいますが、
下の画像のように作れます!
スペースや見やすさの都合で、画像ではガラスの下に配線を通して、交差させています。
実際にご自身で作る場合、こちらの画像をそのまま真似して頂いても構いませんし、
配線など気に入らない部分があれば、レッドストーン信号の強度と、余計な干渉に気をつければアレンジしていただいても大丈夫です♪
半加算器には、「出力A」と「出力C」の2種類の出力があります。
これらには意味があり、「出力A」はその桁の計算結果を表していて、
「出力C」は桁上りの有無を意味しています! 小学校では繰り上がりと、習った方もいるかもしれないですね。
2進数での「01 + 01」の答えは「10」のように、
10進数と同じような桁上りがあるんですよね。
そのため、今後「出力C」と書いてある部分は、桁上りがあるんだな、と覚えておいてください。
余談ですが、桁上りは英語で「carry」と書きます。なので、出力「C」なんですね。
以上を踏まえたうえで、半加算器の入力と出力の対応表をどうぞ!
入力X | 入力Y | 出力A(計算結果) | 出力C(桁上りの有無) |
---|---|---|---|
0 | 0 | 0 | 0 |
0 | 1 | 1 | 0 |
1 | 0 | 1 | 0 |
1 | 1 | 0 | 1 |
これを実際に動かしてみると、下の画像のようになります。
少し分かりづらいかもしれませんが、なんとこれだけで、1桁の足し算であれば実現しています!
2桁以上の足し算では、このあと説明する「全加算器」を用いますよ〜
ただ、半加算器だけでは1桁しか足し算できません。
それだと物足りないので、お次に「全加算器」を紹介させていただきます!
2桁以上の足し算を実現!? 「全加算器」の作り方!
「全加算器」とは、半加算器と似ているのですが、下の桁からの桁上げを受け取る必要があるため、
「入力C」を加えた、3入力2出力の大きな部品です!
全加算器は、半加算器2個とOR回路1個でできています。
下の画像を見ていただければ分かりますが、結構大きいんですよね〜!
ここからは、画像が分かりやすくなるように、以下のように回路を装飾していますよ。
画像を見て実際に作られる場合、この装飾は別のものに変えたり、なくしてしまっても構いません。
- 入力X(1つ目の数) …ラピスラズリブロック
- 入力Y(2つ目の数) …エメラルドブロック
- 出力A(計算結果) …ダイヤモンドブロック
- ガラス …この下に配線を通して交差していますよ、の合図
下の回路を作られる場合、レッドストーン信号の強度が弱まってしまうため、リピーターをところどころ入れている点に注意してください!
かなり複雑な表になってしまいますが、入力と出力の対応表もどうぞ。
入力X | 入力Y | 入力C | 出力A | 出力C |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 1 | 0 |
0 | 1 | 0 | 1 | 0 |
0 | 1 | 1 | 0 | 1 |
1 | 0 | 0 | 1 | 0 |
1 | 0 | 1 | 0 | 1 |
1 | 1 | 0 | 0 | 1 |
1 | 1 | 1 | 1 | 1 |
「入力C」で、下位(小さい)桁の桁上げを受け取れます。
ということは…?
なんと、1桁目の計算は半加算器、それ以降の桁の計算は全加算器で、というふうに回路をつなぐと、
これで足し算をすることができる電卓の回路が完成します!
桁を増やしたければ、全加算器をどんどん増やせばいいんですね!
「回路がよくわからないよ!」という方も、上の画像の回路をそのまま真似していただいたり、
これまでに解説した部品ごとの画像を参照して、同じものを組んでくださればOKです!
実際にできた電卓を使ってみましょう!
入力X(ラピスラズリ)と、入力Y(エメラルド)にそれぞれ、数字を入力しましょう!
2進数で入力する必要があるのに注意です。入力は0と1の2種類しかありませんからね。
例えば、入力Xに「011」、入力Yに「010」を入力したのが下の画像です!
すごい! 足し算を作るだけなら、意外とレッドストーン回路でも簡単に作れますね!
しかし、1つ注意したいことが、作った桁以上の計算結果は正しく表示できないことです。
実際の電卓でも、ものによるかもしれませんが、桁がオーバーするとエラーとなってしまいますよね…。
下の画像では、3桁で表すことのできない計算を入れてみた結果です。
このエラーを、オーバーフローと呼びます。
これを解決するためには、全加算器を増やして桁数を大きくしたりする必要があります。
ちなみに、全加算器を9個作ると、10進数での1023まで計算できます。
全加算器が15個あれば、10進数での65536まで計算できます!
同じ回路を何個も作るので、ブロックのコピーができるストラクチャーブロックを使うと便利だと思います!
ストラクチャーブロックの使い方は、下の記事で解説させていただいていますよ〜
とはいえ、桁数が多くなればなるほど、今回の作り方ではレッドストーン回路の特性上遅延も発生したりするのは注意です。
さて、今回はマイクラで、足し算のできる電卓の作り方を紹介しました!
計算機をレッドストーンで作るとなると難しいですが、これだけなら案外、少し時間をかければ組めそうな感じですよね♪
ぜひ、計算機を作って動かしてみたい! という方は参考に!
それでは皆さん、バイバ〜イ!
コメント