どうも初めまして!
最近基本情報技術者の資格取得に向けて勉強中な駆け出しエンジニアのワカです。
■この記事を書こうと思ったきっかけ
最近書籍を購入して勉強しているのですが、暗記ばかりでなかなか身にならないと思いました。
そこで基本情報に書かれている内容を自分なりに解釈したものをここに備忘録として書き残すことにしました。
そうすれば手も動かせるし人にみられると思うとその分責任感出ますしね!
あと個人的に今自作PCを作りたいとも考えているのでこの機会に詳しくなっとこうと思ったのも理由の一つです笑
もしかすると間違っている点などあるかもしれませんので、その時は指摘していただけると嬉しいです。
■コンピュータ回路
コンピュータの中では論理回路と呼ばれる演算を行う回路の組み合わせによって制御を行っています。
論理回路と言っても難しくはありません。一つ一つの回路はただ単に電気がONになっているかOFFになっているかの2択を区別しているだけです。
しかしこれがいくつも組み合わさることによって複雑な制御を可能にしているわけなんです。
論理回路の種類
回路の種類にはいくつかありそれらは以下の通りです。
回路名 | 論理式 | 説明 |
---|---|---|
論理積回路(AND) | A・B=Y | 〇〇かつ×× |
論理和回路(OR) | A+B=Y | 〇〇または×× |
否定回路(NOT) | A≠Y | 〇〇以外 |
否定論理積回路(NAND) | A・B≠Y | 〇〇かつ××以外全て |
否定論理和回路(NOR) | A+B≠Y | 〇〇か××いずれか |
排他的論理和回路(EOR、XOR) | A⊕B=Y | 〇〇ではない |
※○≠△・・・○とは逆の結果(否定形)=△の意味
半加算器と全加算器
では上記に説明した論理演算を用いてどのようにして計算処理を行うか説明していきます。
ます2進数の足し算を行う回路のことを加算器と呼びます。
この加算器には二つの種類がありますそれが以下の二つです。
半加算器・・・下位からの桁上がりを考慮しない
前加算器・・・下位からの桁上がりを考慮する
【半加算器がどのように動いているか】
2進数を計算するにあたってそのパターンは四つしかありません。
そして出力される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のパターン・・・論理積(AND)
出力Sのパターン・・・排他的論理和(EOR、XOR)
そのため半加算器は「論理積回路(AND)と排他的論理和回路(EOR、XOR)の組み合わせによって成り立っている」のです。
【全加算器がどのように動いているか】
では前加算器についてですが、これは主に半加算器で求めることができる1桁より以降の桁数を求める際に使用する必要があります。
半加算器と比べて違うところは
半加算器がA、Bの二つの入力だったのに対してぜんかさんではそれに新たな入力として前の桁でくり上がりしてくる数として「入力C」を追加で加えなければいけません。
つまりこういうこと
半加算器・・・入力A + 入力B = 出力C S
前加算器・・・入力A + 入力B + 入力C = 出力C S
こうみると新たな入力Cによって全く異なる考え方が必要なように考えてしまいますが、実はそうでもありません。
結局順番に1こずつ計算していけばいいので結局
入力A + 入力B = 出力C S
出力CS + 出力C = 出力C S
となるわけで、つまり、「半加算器を2回使っているだけ」なのです。
■最後に
コンピュータの回路について調べていく中で結局のところ突き詰めていけば単純な足し算の組み合わせであることに驚いた。
実際はこの計算を考えられないようなスピードで計算しているのかと思うと正直すごい技術だなと感心してしまう笑
では次回の記事にて!!