ビット演算の基本回路 and, or, notを利用して
加算器を作ろうと思います。
加算器を作ろうと思います。
まず、半加算器(Half Adder)を作りましょう。
1bit入力が2本(A, B)、
1bit出力が2本(Sum, Carry out)あります。
1bit出力が2本(Sum, Carry out)あります。
以下に真偽表(入出力の関係)を記します。
A+B=C:S
0+0=0:0
1+0=0:1
0+1=0:1
1+1=1:0
よって、出力は以下のように求まります。
C=A and B (論理積)
S=A xor B (排他的論理和)
= (A and (not B)) or ((not A) and B)
■全加算器を作ろう
全加算器(Adder)は、
下の位のCarry outを入力に含む、
3つの入力から、2つの出力を算出します。
全加算器(Adder)は、
下の位のCarry outを入力に含む、
3つの入力から、2つの出力を算出します。
ABC=C'S
000=00
100=01
010=01
110=10
001=01
101=10
011=10
111=11
100=01
010=01
110=10
001=01
101=10
011=10
111=11
ややこしく見えますが、1か0を3つ合計しているだけです。
■解説
1ビットの3つの数(0∼1)の和は 2ビット(0〜3)に収まる。
1ビットの3つの数(0∼1)の和は 2ビット(0〜3)に収まる。
1の位は、3つの入力のうち奇数個が1である時のみ、1になる。
2の位は、3つの入力のうち、1が2つ以上ある時のみ、1になる。
■全加算器の論理表現
この条件を論理演算で表現していきましょう。
この条件を論理演算で表現していきましょう。
半加算器の組み合わせでも表現できますが、
あえて原始的な論理演算
(簡略のため xor は使います)
で書いていきましょう。
あえて原始的な論理演算
(簡略のため xor は使います)
で書いていきましょう。
S=A xor B xor C
C'= (A and B) or (B and C) or (C and A)
学校で習った電子回路(理科)と集合論理(数学)が
現実の計算機をつながるという、
この加算器の考え方に、
私はCODEという本で初めて触れたのですが、
現実の計算機をつながるという、
この加算器の考え方に、
私はCODEという本で初めて触れたのですが、
とても感動したことを今でも覚えています。
今回、基本情報技術者試験の勉強で久々に思い出したので、
まとめてみました。少しでも魅力が伝われば嬉しいです。