pafuイーランスクール 学んでできる

メニューへ戻る

全加算器と状態遷移図 (ハードウェア分野)

平成16年春期 問1 問題確認

解説
設問1
まず、0011+0101の1桁目を考えます。
1 + 1 = 10 ですので、c = 0, x = 1, y = 1, c' = 1, s = 0になります。
(この計算で桁上がりした"1(c')"は、2桁目のcに入ります。)
よって、11/0(xy/s)になります。この矢印をたどって"q1"に移動します。
q0 ⇒ q1

c(c') 1 ←2桁目へ桁上がり
x 0 0 1 1
y 0 1 0 1
--------------
s 0

2桁目は、1 + 1 + 0 = 10 ですので、c = 1, x = 1, y = 0, c' = 1, s = 0になります。
よって、10/0 になり、"q1"を繰り返します。
q0 ⇒ q1 ⇒ q1

c(c') 1 1 ←桁上がり
x 0 0 1 1
y 0 1 0 1
--------------
s 0 0

3桁目は、1 + 0 + 1 = 10 ですので、c = 1, x = 0, y = 1, c' = 1, s = 0になります。
よって、01/0 になり、"q1"を繰り返します。
q0 ⇒ q1 ⇒ q1 ⇒ q1

c(c') 1 1 1 ←桁上がり
x 0 0 1 1
y 0 1 0 1
--------------
s 0 0 0

4桁目は、1 + 0 + 0 = 1 ですので、c = 1, x = 0, y = 0, c' = 0, s = 1になります。
よって、00/1になりますので、この矢印をたどって"q0"に移動します。
q0 ⇒ q1 ⇒ q1 ⇒ q1 ⇒ q0

c(c') 1 1 1 ←桁上がり
x 0 0 1 1
y 0 1 0 1
--------------
s 1 0 0 0

上記のことから答えは"エ"になります。
設問2
まず、真の条件で解っているのは、s[i] ← x[i] xor y[i] です。
xor は、0 xor 0 = 0, 0 xor 1 = 1, 1 xor 0 = 1, 1 xor 1 = 0 を返すので、加算した答えの1の位の値が返されるのが解ります。
( 0 + 0 = 0, 0 + 1 = 1, 1 + 1 = 10 )
偽の条件で解ってるのは、s[i] ← not(x[i] xor y[i]) です。
これはxorの否定(not)ですので、xorが 1の時は0、0の時は1を返します。
つまり、xorで返された値に更に1を加えた値の1の位の答えと同じになります。
( 0 xor 1 + 1 = 10, 1 xor 1 + 1 = 1 )
上記のことから、この分岐の条件は、桁上がりの有無で分岐させないといけません。
問題の中に、"1を true, 0をfalse"と書いてあるのでこれで判断させることが解ります。
偽の条件の方を見てみると加算した1の位の値に1を加えた値になっていますのでこれが桁上がりがあった場合(true 1)になります。
よって、"a"は、"ア"の "sw = 0" になります。
桁上がりの有無を判定するための値をsw(分岐の条件)に格納しているところがないので、"b"と"c"にはその値を格納することが解ります。
"b"は、前の位の計算で桁上がりがない場合ですので、桁上がりが起こる"1(x) + 1(y)"の時のみswに1を格納すれば良い訳ですから答えは"キ"の"sw ← x[i] and y[i]"になります。
"c"は、桁上がりがあった場合ですので、設問1でいう、11/1, 10/1, 01/1, 00/0 に
なるものになります。 よって、答えは"ク"の"sw ← x[i] or y[i]"になります。

koya様 ご投稿

メニューへ戻る

pafuイーランスクール

pafuイーランスクール 学んでできる