-3

ブール論理に関連する非常に基本的な質問があります。と の 2 つのブール値フラグが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。どんなヘルプ/ポインタも素晴らしいでしょう! ありがとう!

4

2 に答える 2

1

これらの言語はあまり使用しないでください。

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

投稿されたリンクから: http://en.wikipedia.org/wiki/XNOR_gate

2 入力バージョンは論理等価性を実装し、右の真理値表に従って動作します。ゲートへの両方の入力が同じ場合、HIGH 出力 (1) になります。両方ではなく一方の入力が HIGH (1) の場合、LOW 出力 (0) になります。

したがって、flagA が flagB と等しい場合、flagC は true です。

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

(2 番目のルールは、他のすべてのケースをカバーします。)

于 2013-11-07T21:49:52.020 に答える