异或和同或的一个结论

拿上学期数电的作业本做演草,突然想起之前有道题没有搞明白:

证明:xor(A,B,C)=nxor(A,B,C)

作业本上我是用两次取非展开,用到了异或和同或之间的结合律,但没人告诉我这个结合律是成立的,所以我的做法很可疑。我曾试过列出真值表,不过这样就算证明了也没啥意思。标准的证明是用异或的定义式展开后,把各项重新组合,然后就变成同或了。这样看似巧妙,其实证完了只能说明你记住了枯燥的公式,掌握了枯燥的展开。记得当时问过老师异或之间有没有结合律,老师说这个你最好列个真值表试一下。

今天想到了一个根据异或和同或的性质给出的证明。

性质:xor(A,0)=A,nxor(A,1)=A

可见,异或的时候,有多少个0都不影响最后的结果,只需考虑1的个数:

  • 若有偶数个1,它们两两异或的结果是0,最后结果就是0;
  • 若有奇数个1,最后剩下一个1,结果是1;

同或的时候,1是不影响结果的,只需考虑0的个数,跟上面的推理相似,可得:

  • 若有偶数个0,结果是1
  • 若有奇数个0,结果是0

对于这道题,一共三个输入变量,若有奇数个1,那么必有偶数个0,根据上面的结论,异或的结果是1,同或的结果也是1;偶数个1的情况类似。

好了,这就是我一直想找的证明。根据这个方法,很容易知道偶数个变量的时候xor和nxor的结果是不一样的,只有在变量个数是奇数个的时候它们的结果才一样。而且对于任何奇数个变量都可以毫不费力的说,它们异或和同或的结果是一样的。

【后天考通原】

Advertisements
上一篇文章
留下评论

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s

%d 博主赞过: