计算布尔标志

时间:2013-11-07 21:47:52

标签: boolean-logic xor

我有一个与布尔逻辑相关的非常基本的问题。 我有两个布尔标志 - flagAflagB。我需要根据flagCflagA的值来计算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。 任何帮助/指针都会很棒! 谢谢!

2 个答案:

答案 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; 
    }

(您的第二条规则涵盖所有其他案件。)