【问题标题】:Bitewise And Operator位与运算符
【发布时间】:2021-11-04 04:26:24
【问题描述】:

想知道 &= 运算符。以及它是如何工作的。从我收集的内容中,它找出最后一个“位”并返回它。例如二进制中的 10 是 1010。所以它会返回 0

我无法理解的是它是如何做到的。导致该结果的过程是什么?

using System;

namespace MyApplication
{
  class Program
  {
    static void Main(string[] args)
    {
      int x = 5;
      x &= 3;
      Console.WriteLine(x);  
     }
  }  //Output is 1
}

来自https://www.w3schools.com/cs/trycs.php?filename=demo_oper_ass7的代码

【问题讨论】:

  • 二进制中的 5 是 0101(即 4 + 1)。二进制中的 3 是 0011(即 2 +1)。所以它们共享的值是 0001(即 1)。这不是 C# 独有的,这就是按位与在任何编程语言中的工作方式。请阅读Bitwise operations。您也可以参考truth tables,了解将任意两位与特定操作组合的单个结果。

标签: c# .net operators


【解决方案1】:

如果您将值视为二进制,我认为它的工作原理会更清楚:

Decimal Binary
5 0101
3 0011
1 0001

按位与将根据它们的位置依次对每对位进行运算。下面的真值表演示了给定两个 位值(由 P 和 Q 表示)会发生什么:

p q p ^ q
1 1 1
1 0 0
0 1 0
0 0 0

如您所见,只有当 P 和 Q 都为 1 时,结果才会为 1。在所有其他情况下,结果都是 0。

我将在下表中将 5 和 3 分解为各自的位,小数列表示每个位代表的十进制值。如您所见,5 是 4 + 1,3 是 2 + 1。应用按位与,我们可以在 R 列中看到结果:

dec 5 (p) 3 (q) R (p ^ q)
8 0 0 0
4 1 0 0
2 0 1 0
1 1 1 1

p ^ q 的结果,其中 for (p = 5, q = 3) 是 0001(十进制为 1)。

您可以阅读更多关于按位运算here 并查看更多真值表here

【讨论】:

    猜你喜欢
    • 2011-04-20
    • 2012-09-06
    • 1970-01-01
    • 2016-07-18
    • 2011-03-26
    • 2010-10-10
    • 2015-11-24
    • 1970-01-01
    相关资源
    最近更新 更多