-3

我有一个与布尔逻辑相关的非常基本的问题。我有两个布尔标志 -flagAflagB. 我需要根据和flagC的值进行计算。flagAflagB

代码/规则是:

    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 编写这个语言。任何帮助/指针都会很棒!谢谢!

4

2 回答 2

1

不要过多地使用这些语言,但这可能有效:

$flagC = ($flagA == $flagB);

从发布的链接: http ://en.wikipedia.org/wiki/XNOR_gate

双输入版本实现逻辑相等,根据右边的真值表​​表现。如果门的两个输入相同,则产生高输出 (1)。如果一个但不是两个输入都为 HIGH (1),则产生 LOW 输出 (0)。

所以当flagA 等于flagB 时,flagC 为真。

于 2013-11-07T21:57:20.517 回答
0
if($flagA && $flagB) {
      $flagC = true; 
    } else {
      $flagC = false; 
    }

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

于 2013-11-07T21:49:52.020 回答