返信先: P62 全加算器の真理値表について

#1048
nobody
ゲスト

先ず、p.62の真理値表は、下位桁からの桁上がりであるXがあるので、全加算器の真理値表です。
左側XYZは入力値、右側CSは出力値です。
この真理値表は、単なる足し算を表してるだけです。
(X,Y,Z)=(0,1,1)なら足したら2だから、2進数表記で10なので、(C,S)=(1,0)ってだけです。

半加算器や全加算器は、理屈は混乱するので、先ずは丸覚えしてしまいましょう。
① 半加算器では、桁上がりCは「論理積」、1桁目の和Sは「排他的論理和」
② 全加算器では、「1つ目の半加算器の桁上がりC」と「2つ目の半加算器の桁上がりC」の【論理和】が「出力値C」

①の半加算器については、簡単ですよね?
X Y C S
0 0 0 0
0 1 0 1
1 0 0 1
1 1 1 0
Cは、XとYの「論理積」になってますよね?
Sは、XとYの「排他的論理和」になってますよね?

問題は、②の全加算器です。p.62と併せてイメージしながら読んでください。
先ずは、下位桁からの桁上がりXとYの和を計算するので①と同じ「半加算器」を用います。
この出力は「桁上がりC」と「1桁目の和S」でしたね?
次に、もう一つの入力値Zを足しますが、どこに足すと思いますか?
当然、先程の出力結果である「1桁目の和S」にZを足すわけです。
これが、2つ目の半加算器が行っていることです。
2つ目の半加算器も、1つ目の半加算器同様に「桁上がりC」と「1桁目の和S」が出力されます。
これで、「1桁目の和S」は確定です。
ここで、問題なのは、「1つ目の半加算器のC」と「2つ目の半加算器のC」をどうするかです。

★ここからがポイント★
「1つ目のC」が1だった場合、1つ目の半加算器のSは絶対に0ですよね?←ここポイント
だから、2つ目の半加算器で入力値Zが1でも「2つ目のC」は絶対に0です。
逆に言えば、「1つ目のCが1」で「2つ目のCも1」というケースはあり得ないということです。

「1つ目のC」が0だった場合、1つ目の半加算器のSは0か1です。
「1つ目の半加算器のSが1」で「2つ目の半加算器の入力値Zが1」の場合だけ「2つ目のCは1」で、それ以外の場合は「2つ目のCは0」です。

以上の★以降のケースを真理値表でまとめます。
※「1つ目のC」をC1、「2つ目のC」をC2、全加算器の出力値をCとします。
C1 C2 C
1 1 ありえない
1 0 1
0 1 1
0 0 0
以上から、全加算器の出力値Cは、論理和と考えることができるという理屈です。