😸
(初心者向け)基本情報技術者試験の回路問題解くときのコツ
はじめに
こんにちはみゃっちーです!🦔
新卒一年目の若造ですが、基本情報技術者を勉強している同期を見ていると、電子回路の分野で躓いている人が多く見えました。
実は、僕自身学生時代は電子系の学校に通ってたこともあるので、だれでも使えてわかりやすい解き方を共有できたらいいなと思います。
どんな人がみればいい?
今回レベルとしては、
- 論理和(OR演算)、論理積(AND演算)、否定(NOT演算)、排他的論理論理和(NOR)がどんな入力でどんな出力が得られるかがわかる初心者という人に見ていただければ嬉しいです。
1.各演算子の働き
各演算子をプログラムで使う際それぞれ働きがあります。
- OR(特定のbitを1にする)
- AND(特定のbitを取り出す)
- XOR(特定のbitを反転させる)
OR(特定のbitを1にする)
元のデータ 1011|0110
与える数値 0000|1111
↓OR
結果 1011|1111 ←1を与えた部分だけ1にかわる
AND(特定のbitを0にする、特定のbitを取り出す)
元のデータ 1011|0110
与える数値 1111|0000
↓AND
結果 1011|0000 ←0を与えた部分だけ0に
また、捉え方次第で 「特定のbitを取り出す」 とも言えます。
元のデータ 1011|0110
与える数値 0000|1111
↓AND
結果 0000|0101 ←1を与えた部分だけを取り出す
XOR(特定のbitを反転させる)
元のデータ 1011|0110
与える数値 0000|1111
↓XOR
結果 1011|1001 ←1を与えた部分だけ元のデータが反転している
これらの知識を活用する問題
すべての回路はNANDだけで表すことができる
すべての回路をNANDで表すには、ORとNOTをANDで表すことができれば可能になります。回路設計するときも、OR、NOTの在庫がありません!と先生にいうといちいちそんなこと言わずに黙ってNAND使えと言われます。
OR回路とAND回路の変換
OR回路とAND回路は以下のように NOTの場所を反転 させて、等価回路に変換することができます。以下の回路は左右で同じ働きをします。
NOT回路をNANDで表す
このようにNANDの入力をつなぐことでNATとして扱うことができます。
なぜ、このようなことができるかというとこれがNANDの表です。
入力A | 入力B | 出力 |
---|---|---|
0 | 0 | 1 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
二つの端子をつなぐということは入力が(0、0)と(1、1)の2種類になります。NAND表にあるこの2項目を見てみると、入力が1の時に出力0。入力が0の時に出力1とNOTと同じ働きになることがわかります。
入力A | 入力B | 出力 |
---|---|---|
0 | 0 | 1 |
1 | 1 | 0 |
これらの知識を活用する問題
さいごに
この知識を持っていれば大体の回路問題を楽に解けるようになるかと思います!
また解けない問題が出ても総当たりとベン図で何とかしましょう!
Discussion