電子レンジはいつ動くのか
コンビニの電子レンジは、「温め」ボタンか「解凍」ボタンを押すと動き出します。ただし、扉が開いているあいだは決して動きません。
このような決まりは、「はい」か「いいえ」を受け取る小さな部品を組み合わせて作ります。レンジの中のプロセッサは、その部品が何百万個も集まったものです。
このレッスンのゴール
メモ
論理回路の出力を求めることができる。
キーワード
| ことば | いみ | れい |
|---|---|---|
| 論理ゲート | 入力のビットから、出力のビットを1つ作る小さな部品 | |
| 入力 | ゲートに入るビット | |
| 出力 | ゲートが出すビット | |
| 真理値表 | すべての入力と、その出力を並べた表 | |
| 論理式 | 回路を AND、OR、NOT などの言葉で書いたもの | A AND B |
| 半加算器 | 2つのビットを足す回路 |
学生が入力するセルは、このプレビューでは空白です。
基本の3つのゲート
1は「はい」やオン、0は「いいえ」やオフを表します。
AND ゲートは、2つの入力がどちらも1のときだけ1を出します。OR ゲートは、少なくとも1つの入力が1なら1を出します。NOT ゲートは入力が1つで、それを反転します。NAND は AND のあとに NOT、NOR は OR のあとに NOT をつないだものです。
AND と OR の真理値表
| A | B | A AND B | A OR B |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 |
| 1 | 1 | 1 | 1 |
学生が入力するセルは、このプレビューでは空白です。
始める前に
メモ
上のバーの Start the lab を押し、マシンが動き出すまで待ってください。Run ボタンは、順番にコマンドをマシンのターミナルに入力します。
Python とシェルにもゲートがある
Python とシェルでは、& が AND、| が OR、^ が XOR です。XOR は、2つの入力がちがうときに1を出します。
2つの整数にこれらを使うと、同じけたのビットどうしに、けたごとにゲートが働きます。
ビットの組ごとに OR を求める
python3 -c "print(0 | 0, 0 | 1, 1 | 0, 1 | 1)"ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
6と3に3つのゲートを使う
echo $(( 6 & 3 )) $(( 6 | 3 )) $(( 6 ^ 3 ))ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
例: 6と3にゲートを使う
| ビット | 10進数 | |
|---|---|---|
| 6 | 110 | 6 |
| 3 | 011 | 3 |
| 6 AND 3 | 010 | 2 |
| 6 OR 3 | 111 | 7 |
| 6 XOR 3 | 101 | 5 |
学生が入力するセルは、このプレビューでは空白です。
回路を論理式として読む
ゲートはつなぐことができます。1つのゲートの出力が、次のゲートの入力になります。回路は論理式で Q = (A OR B) AND (NOT C) のように書きます。
計算と同じように、かっこの中を先に求め、それからかっこどうしをつなぐゲートを求めます。入力が3つなら、真理値表は8行です。
例: この回路の真理値表
| A | B | C | A OR B | NOT C | Q |
|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 1 | 0 |
| 0 | 0 | 1 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 | 1 | 1 |
| 0 | 1 | 1 | 1 | 0 | 0 |
| 1 | 0 | 0 | 1 | 1 | 1 |
| 1 | 0 | 1 | 1 | 0 | 0 |
| 1 | 1 | 0 | 1 | 1 | 1 |
| 1 | 1 | 1 | 1 | 0 | 0 |
学生が入力するセルは、このプレビューでは空白です。
2つのゲートで2つのビットを足す
2進数では、1 + 1 は 10 です。0を書いて、1をくり上げます。半加算器は、これを2つのゲートで行います。
和のビットは A XOR B、くり上がりのビットは A AND B です。この足し算器をつなげたものが、プロセッサの中で整数を足しています。
1 + 1 の和とくり上がり
python3 -c "print(1 ^ 1, 1 & 1)"ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
よくある間違い
注意
OR を「どちらか一方だけ」の意味だと考える人がよくいます。論理の OR は、2つの入力がどちらも1のときにも1を出します。「どちらか一方だけ」を表すゲートは XOR です。
さらに挑戦: 3つのビットを足す
半加算器は2つのビットを足します。長い数を足すには、各けたで右のけたからのくり上がりも足す必要があります。それが全加算器で、半加算器2つと OR ゲート1つで作れます。
1 + 1 + 1 と 0 + 1 + 1 の、和のビットとくり上がりのビットを手で求めてください。