Logic 逻辑:A&;!(B | C)|(B | C)与(A | B | C)相同吗?
我遇到了一些obj-c代码,我想知道是否有办法简化它:Logic 逻辑:A&;!(B | C)|(B | C)与(A | B | C)相同吗?,logic,Logic,我遇到了一些obj-c代码,我想知道是否有办法简化它: #if ( A && !(B || C)) || ( B || C ) 这和我的一样吗 #if ( A || B || C ) 如果没有,是否有其他更易于阅读的方法来表述 [编辑] 在提问之前,我试过了真值表,但我认为我必须漏掉一些东西,因为我怀疑基金会。框架/基金会。有什么好的理由吗 这是原始代码(来自基金会.H): 获取笔+纸+尝试,只有8种可能的输入是的,它是相同的。使用De Morgan规则: (A&!(B |
#if ( A && !(B || C)) || ( B || C )
这和我的一样吗
#if ( A || B || C )
如果没有,是否有其他更易于阅读的方法来表述
[编辑]
在提问之前,我试过了真值表,但我认为我必须漏掉一些东西,因为我怀疑基金会。框架/基金会。有什么好的理由吗
这是原始代码(来自基金会.H):
获取笔+纸+尝试,只有8种可能的输入是的,它是相同的。使用De Morgan规则: (A&!(B | | C))| |(B | C)=(A&!B&!C)| |(B | C)。
所以当A=1,B,C=0时,第二个是真的。如果不是这样的话,当B | | C时,第二部分(B | | C)将为真。因此它等于第一部分。是的,这两个表达式是等价的。(我刚刚编写了几个函数来测试所有八种可能性。)
根据最后两栏,我会说是。是。正如其他人所说,你可以用真理表来衡量它。德摩根规则也有帮助 然而,我认为最好的选择是使用。学习需要几分钟,但卡诺映射允许您始终找到布尔逻辑的最简单表达式。真值表可以验证最小化,但不能给你 我是这样得到的: 首先,表格布局:
AB
00 01 11 10
0| | | | |
C 1| | | | |
现在,考虑你的方程,B | | C总是会导致一个真理:
AB
00 01 11 10
0| | T | T | |
C 1| T | T | T | T |
这只剩下两种情况。在这两种情况下,右侧的计算结果都为false。对于000,左侧也计算为false(0&&!(无论什么)为false)。100,1&!(0 | | | 0)的计算结果为true。因此,这种说法是正确的。填写:
AB
00 01 11 10
0| F | T | T | T |
C 1| T | T | T | T |
现在,我们只需要“覆盖”所有真相。“C”将覆盖最下面一行。“B”将覆盖中间的正方形(四个值)。因此,“B | | C”覆盖了除右上角正方形以外的所有区域。现在,“A”将覆盖右边的四个空间正方形。这是多余的,没关系。因此,“A | | B | | C”覆盖了所有的真正方形,省略了唯一的假正方形。它们是一样的。您可以使用来测试它。当
A
、B
和C
为false
时,这两个表达式仅在一种情况下给出false
,您也可以说:
(A&&!(B|C)| |(B|C)重写为(A&&!W)| | W(1)
(1) 重写为(A&&!W)|(A | |!A | | W)(2)
(2) 重写(A&&!W)| | | | | | | | | | | | | | | | | | | | | | 124
(3) 重写(A&&!W)| |!(A&&!W)| | | | | W)(4)
(4) 导致A | | W,然后A | | B | | C为什么不实施一个包含结果的小真值表并自己测试它呢?只有8种不同的输入| A=true,B=true,C=true | A=true,B=true。C=假|等等。比较真值表。如果输出是相同的,那么你的逻辑是等价的。你在问题标题中的括号与问题本身略有不同。如果标题是正确的,那么“!(B | | C)|(B | | C)”部分可以替换为“true”,留下“A&&true”,这只相当于A。另一方面,问题版本似乎缺少一对括号,否则会出现语法错误。除此之外,我同意其他海报,创建真相表。@Peter Perháč-感谢编辑@detunized,是的,我用了最后两个,而不是| | | | ed。它们是一样的,很自然,我先试过了。我认为代码的来源高于这个看似晦涩的公式:OSX的基础。因此我怀疑我的涂鸦。但是,是的,+1代表你卓越的第一直觉。我是一名实验物理学家——如果让我选择做数学或做测量,我也会选择愚蠢的解决方案,但哪一个是愚蠢的,哪一个不是取决于实验@约翰-聪明的选择是先用最愚蠢的方法做!这是一个聪明的链接。我会和我的数学老师朋友们分享+1这是一个比这个问题值得回答的更好的答案,具有教育意义。你也可以说
a^(B|C)
no?
AB
00 01 11 10
0| | T | T | |
C 1| T | T | T | T |
AB
00 01 11 10
0| F | T | T | T |
C 1| T | T | T | T |