プロが教えるわが家の防犯対策術!

論理式を簡略化する問題なのですがよくわからないので
教えて頂きたいです。
式は(B eqv A) xor B and A です。
まず公式で
A eqv B=notA xor B=A xor notBなので
(notB xor A) xor B and A=(A xor notB) xor B and A「xorの交換則」
            =A xor notB xor B and A「xorの結合則」
=A xor True and A
            =A xor A=False
となったのですがA eqv BをB xor not Aにすると
(B xor notA) xor B and A=(not A xor B) xor B and A
            =not A xor B xor B and A
            =not A xor F and A
            =not A xor F
            =not A
となってしまい答えが違ってしまいます。
やはり計算順序がおかしいのでしょうか?
回答お願いします<(_ _)>

A 回答 (2件)

#1です。


a#1の補足に書かれた演算の優先順位が間違っているようです。
>(3)優先度は()>NOT>AND>OR>XOR>IMP>EQVです。
最後の2つの優先順位が逆です。
正しくは参考URLにあるように
()>NOT>AND>OR>XOR>EQV>IMP…(◆)
です。
最初の質問の式の間違い箇所について
論理演算の優先順位(◆)に違反して計算しています。
>=A xor notB xor B and A「xorの結合則」
>=A xor True and A
演算の優先度は「notB xor B」より「B and A」の優先度の方が高いので
「notB xor B=True」の演算はできないので、ここで演算が間違った。

> =not A xor B xor B and A
> =not A xor F and A
ここでも演算の優先度の高い「B and A」を無視して
演算の優先度の低い「B xor B=False」の演算を先に演算して、
間違った。

A#1の補足の論理式の簡単化について
論理式=False
になります。
簡単のために、True=1,False=0で表し、(A,B)の全ての組み合わせに対して与えられた論理式を計算してみると
(A,B)=(0,0)の時
((B eqv A) imp ((B eqv A)xor B and A) or B)xor(B and A and((B eqv A)xor B and A)imp B and A and ((B eqv A) xor B and A))
=( 1 imp ( 1 xor 0 ) or 0)xor( 0 and( 1 xor 0 )imp 0 and ( 1 xor 0 ))
=( 1 imp 1 or 0)xor( 0 and 1 imp 0 and 1 )
=( 1 imp 1 )xor( 0 imp 0 )
= 1 xor 1
= 0

(A,B)=(0,1)の時
((B eqv A) imp ((B eqv A)xor B and A) or B)xor(B and A and((B eqv A)xor B and A)imp B and A and ((B eqv A) xor B and A))
=( 0 imp ( 0 xor 0 ) or 1)xor( 0 and( 0 xor 0 )imp 0 and ( 0 xor 0 ))
=( 0 imp 0 or 1)xor( 0 and 0 imp 0 and 0 )
=( 0 imp 1 )xor( 0 imp 0 )
= 1 xor 1
= 0

(A,B)=(1,1)の時
((B eqv A) imp ((B eqv A)xor B and A) or B)xor(B and A and((B eqv A)xor B and A)imp B and A and ((B eqv A) xor B and A))
=( 1 imp ( 1 xor 1 ) or 1)xor( 1 and( 1 xor 1 )imp 1 and ( 1 xor 1 ))
=( 1 imp 0 or 1)xor( 1 and 0 imp 1 and 0 )
=( 1 imp 1 )xor( 0 imp 0 )
= 1 xor 1
= 0

(A,B)=(1,0)の時
((B eqv A) imp ((B eqv A)xor B and A) or B)xor(B and A and((B eqv A)xor B and A)imp B and A and ((B eqv A) xor B and A))
=( 0 imp ( 0 xor 0 ) or 0)xor( 0 and( 0 xor 0 )imp 0 and ( 0 xor 0 ))
=( 0 imp 0 or 0)xor( 0 and 0 imp 0 and 0 )
=( 0 imp 0 )xor( 0 imp 0 )
= 1 xor 1
= 0

となってカルノー図(2次元真理値表)を描くまでもなく
全てのA,Bの組合せに対して、与えられた論理式は
全て「0(=False)」になる結果が得られた。

参考URL:http://msdn.microsoft.com/ja-jp/library/cc392395 …
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
順序に気をつけてやるとなんとかできました!
値を直接代入してやる方法もあったのですね、大変参考になりました!
本当にありがとうございました<(_ _)>

お礼日時:2008/10/29 03:49

カルノー図を書いて最簡形を求めるのが手っ取り早いですね。



問題に疑問点がありますので補足して下さい。
(1)
>(B eqv A) xor B and A
この式は
(B eqv A) xor (B and A)
((B eqv A) xor B) and A
のどちらですか?

(2)A eqv B
の「eqv」は古い記述ですが「一致論理」の演算子ですか?

(3)
演算の優先度の確認
「()」>「not」>「and,xor,eqv」>「or」
でいいですか?

この回答への補足

回答ありがとうございます。
(1)本当も結構ながい問題でこの部分だけ3回でてくるのでこの部分だけ
理解できれば後はできそうだったので短く書いてしまいました@@;
本来は
((B eqv A) imp ((B eqv A)xor B and A) or B)xor(B and A and((B eqv A)xor B and A)imp B and A and ((B eqv A) xor B and A))です。

(2)古い記述でしたか・・・一致論理でたぶんあっていると思います。
  equivalent(略でEQV、同値)と書いていましたので。
(3)優先度は()>NOT>AND>OR>XOR>IMP>EQVです。

補足日時:2008/10/28 21:03
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!