【问题标题】:How can one input uncommon logic gates in C#?如何在 C# 中输入不常见的逻辑门?
【发布时间】:2017-09-06 17:06:31
【问题描述】:

我知道你可以使用|| 表示 OR,&& 表示 AND,! 本质上表示 NOT,但是其他逻辑门,例如 NOR、XOR 等呢?

【问题讨论】:

  • xor 有一个内置运算符
  • !(a || b)- NOR, !(a && b)- NAND , a ^ b - xor
  • 这就像在问如何在给定算术运算符集的情况下除以加法的结果。简单:弄清楚你想做什么并编写代码。
  • 另外,对于非数字比较,异或只是 !=
  • 令人讨厌,!|和 !& 将编译并且不会抛出运行时错误,尽管它们会导致语义错误,因为这些运算符不会按照您的想法执行(它们只是分别执行 OR 和 AND)。

标签: c# logic


【解决方案1】:

从已有的逻辑表达式中简单地构建更复杂的逻辑表达式。

NOR 将是 (!x && !y)

XOR 将是(x && !y) || (!x && y)

正如@AleksAndreev 指出的那样,还有一个异或运算符^

【讨论】:

    【解决方案2】:

    C# 中唯一的逻辑中缀运算符是:

    • | 逻辑或(此运算符始终计算两个操作数)
    • || 条件 OR(如果第一个操作数为真,则 C# 不会计算第二个操作数)
    • & 逻辑与(此运算符始终计算两个操作数)
    • && 条件与(如果第一个操作数为假,则 C# 不会计算第二个操作数)
    • ^异或

    'not' 运算符是前缀运算符:

    • !不是

    要执行类似于其他逻辑门的逻辑运算,您必须使用逻辑运算符的组合,例如:

    • !(A && B)NAND
    • !(A || B)NOR
    • !(A ^ B)XNOR

    【讨论】:

      【解决方案3】:

      对于 XOR,您可以使用 ^ 符号

      // Logical exclusive-OR
      // When one operand is true and the other is false, exclusive-OR 
      // returns True.
      Console.WriteLine(true ^ false);
      // When both operands are false, exclusive-OR returns False.
      Console.WriteLine(false ^ false);
      // When both operands are true, exclusive-OR returns False.
      Console.WriteLine(true ^ true);
      

      https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/xor-operator

      对于 NOR,您可以使用 !|| 的组合

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-01-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-06
        相关资源
        最近更新 更多