我有一个与布尔逻辑相关的非常基本的问题。
我有两个布尔标志 - flagA
和flagB
。我需要根据flagC
和flagA
的值来计算flagB
。
代码/规则是:
if($flagA && $flagB) {
$flagC = true;
} else if (!$flagA || !$flagB) {
$flagC = false;
} else if(!$flagA && !$flagB) {
$flagC = true;
}
这些规则与XNOR真值表 - http://en.wikipedia.org/wiki/XNOR_gate
相匹配我想找出不同的方法来重写上述代码(如果可能的话):
我希望用这些语言编写 - php,ruby / ruby on rails。 任何帮助/指针都会很棒! 谢谢!
答案 0 :(得分:1)
请勿使用这些语言,但这可能有效:
$flagC = ($flagA == $flagB);
从发布的链接:http://en.wikipedia.org/wiki/XNOR_gate
双输入版本实现逻辑相等,根据右边的真值表行事。如果栅极的两个输入相同,则产生高输出(1)。如果一个但不是两个输入都为HIGH(1),则产生LOW输出(0)。
因此当flagA等于flagB时,flagC为真。
答案 1 :(得分:0)
if($flagA && $flagB) {
$flagC = true;
} else {
$flagC = false;
}
(您的第二条规则涵盖所有其他案件。)