c# - C# 中 &= 和 |= 运算符的用途是什么

标签 c# operators

<分区>

我不确定这些运算符正在完成什么:

byteInfo[x, y, z] |= (byte)info;

还有:

byteInfo[x, y, z] &= (byte)255 - (byte)info;

来自 msdn:

class AndAssignment
{
    static void Main()
    {
        int a = 0x0c;
        a &= 0x06;
        Console.WriteLine("0x{0:x8}", a);
        bool b = true;
        b &= false;
        Console.WriteLine(b);
   }
}

/*
Output:
0x00000004
False
*/

但是,它做了什么?

最佳答案

它们是&| 运算符和赋值的组合。 a &= ba = a & b 做同样的事情。

&| 是按位 andor 运算符。 &是其操作数中所有位的交集,|是并集:

  10011100101
& 00100011110
-------------
  00000000100

  10011100101
| 00100011110
-------------
  10111111111

基本上,当您在两个数字上使用 & 时,所有位都被设置为 在两个 操作数中设置,而 |至少一个操作数中设置的所有位都已设置。

关于c# - C# 中 &= 和 |= 运算符的用途是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17160579/

相关文章:

javascript - 将 "in"运算符用于带有 javascript 的二维数组

operators - 复制操作符为 0

database - Cassandra 按位运算和运算符(&、或、非)

c# - AutoMapper 实现(Post Static Api)

C++ 分数类。重载运算符?

c# - 如何在 C# 中获取从一条路径到另一条路径的相对路径

C# Registry SetValue 抛出 UnauthorizedAccessException

c# - xUnit 支持 "same tests, different setups"吗?或者我如何编写在本地为开发人员运行并在管道中测试部署的测试?

c# - 如何从 csharp 程序将字符串传递给 vc++ dll