【问题标题】:How Logical XOR [duplicate]如何进行逻辑异或 [重复]
【发布时间】:2017-03-10 02:53:09
【问题描述】:

我知道对于布尔值 Exclusive OR 表示如果输入不同,则输出将打开。 link

但它是如何处理如下非布尔值的。在 C# 或 Javascript 中,以下代码的值“10”如何。谁能帮我解释一下?

  Console.WriteLine(9^3);

【问题讨论】:

  • 它的工作方式类似于按位运算(如|&
  • 转换为二进制并对单个位应用 XOR。
  • 1100(12) ^ 1010(10) = 0110(6)

标签: c# .net


【解决方案1】:

我得到的印象是你在用纯逻辑术语思考,结果必须是真或假,1 或 0。^ 运算符 确实 这样做,但作为 bitwise 运算符是 per bit,一次一个,而不是一次处理整个值。不是说 9 和 3 都是“真”,所以结果一定是假的。就是9100130011,当你用xor检查每个对应的位时,你得到1010,也就是10

  1001  (9)
^ 0011  (3)
------
  1010  (10)

【讨论】:

    【解决方案2】:

    位运算符对存储在内存中的位执行操作。

    因此对每个十进制数取相等的二进制值并执行操作。

     9 ---Binary Value ---> 0000 1001
     3 ---Binary Value ---> 0000 0011
          Perform EXOR (^) ------------
                            0000 1010  ---- Decimal Value --> 10
    

    【讨论】:

      猜你喜欢
      • 2022-01-18
      • 1970-01-01
      • 1970-01-01
      • 2012-12-19
      • 2023-04-06
      • 2014-10-07
      • 1970-01-01
      • 2021-11-27
      • 1970-01-01
      相关资源
      最近更新 更多