現在勉強している基本情報技術者試験についてまとめたものです。
自分のアウトプット用なので見やすさなどは期待しないでください。
コンピューターの回路
論理演算
1を真(True)、2を偽(False)として「AND」「OR」「NOT」などを用いて行う演算。
ベン図を使うとわかりやすく表すことができるが今回は割愛。
論理回路
論理演算を行う電子回路。
基本回路
以下の3つの回路。
- 論理積回路(AND回路)
- 論理和回路(OR回路)
- 否定回路(NOT回路)
論理積(AND)
2つの条件のどちらも合致した場合真となる。
論理積回路(AND回路)
入力がどちらも1だった場合、1を出力する論理回路。
論理式は[A(入力)・B(入力) = Y(出力)]
真理値表は下記。
A | B | Y |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
論理和(OR)
2つの条件のうち、どちらかが合致した場合真となる。
論理和回路(OR回路)
入力のどちらかが1だった場合、1を出力する論理回路。
論理式は[A(入力)+ B(入力) = Y(出力)]
真理値表は下記。
A | B | Y |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
否定(NOT)
ある条件の合致しないものが真となる。
否定回路(NOT回路)
入力を反転させて出力する論理回路。
真理値表は下記。
A | Y |
---|---|
0 | 1 |
1 | 0 |
否定論理積回路(NAND回路)
論理積と否定を組み合わせた論理回路で、論理積の結果を反転させて出力する。
真理値表は下記。
A | B | Y |
---|---|---|
0 | 0 | 1 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
否定論理和回路(NOR回路)
論理和と否定を組み合わせた論理回路で、論理和の結果を反転させて出力する。
真理値表は下記。
A | B | Y |
---|---|---|
0 | 0 | 1 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 0 |
排他的論理和回路(EOR回路またはXOR回路)
2つの入力の内、片方だけが1の場合1を出力する。
真理値表は下記。
A | B | Y |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
加算器
半加算器
2進数の足し算を行う回路で、桁上がりを考慮しないもの。
計算を行う際、一番下の桁は桁上がりしてくることを考慮しなくていいので、この回路を使う。
2進数の1桁同士の計算は下記の4パターンがある。
- $0 + 0 = 00$
- $0 + 1 = 01$
- $1 + 0 = 01$
- $1 + 1 = 10$
この答えの2桁目の出力をC、1桁目の出力をSとして真理値表にしたら下記のようになる。
A | B | C |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
A | B | S |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
この表はそれぞれ、出力C=論理積、出力S=排他的論理和となっているため、この2つの回路を用いることで作ることができる。
全加算器
2進数の足し算を行う回路で、桁上がりを考慮するもの。
計算を行う際、2桁目より上の桁は桁上がりしてくることを考慮しなければいけないので、この回路を使う。
半加算器の仕組みに加え、桁上がりしてきた数(出力C')も考慮しなければならない。
まず、2つの入力から出力(C,S)を求めるのは半加算器と同じ。
次に、出力Sに入力C'を足せばいいので、この2つを再び入力として出力(C,S)を求める。
つまり、1つ目の半加算器の出力Sにもう1つ半加算器を繋げ、2つの出力Cを論理和回路(両方とも桁上がりすることはあり得ない為)で繋げば全加算器の完成。
論理回路を用いたビット操作
2の補数を求めるといったビット操作も、論理回路を使うと簡単に求めることができる。
マスクパターン
ビット操作をするときに使う、操作したい位置に1を入れたビット列。
例えば、[00000011]の全てのビットを反転させたいときは、[11111111]というマスクパターンを用意する。
この2つを排他的論理和で計算すると、2つの入力の内、片方だけが1の場合1を出力するので結果は下記のようになる。
||||||||||
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|2進数|0|0|0|0|0|0|1|1|
|マスクパターン|1|1|1|1|1|1|1|1|
|排他的論理和|1|1|1|1|1|1|0|0|
また、ビットの取り出しを行いたいときは論理積を使う。
例えば、[01101011]の下4桁を取り出すときは[00001111]というマスクパターンを用意する。
論理積は2つの入力が両方とも1の時、1を出力するので結果は下記のようになる。
||||||||||
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|2進数|0|1|1|0|1|0|1|1|
|マスクパターン|0|0|0|0|1|1|1|1|
|論理積|0|0|0|0|1|0|1|1|