在 C# 中,这个语句 int i = x & y 背后的含义是什么?

Lev*_*dze -3 .net c#

我不确定这个声明是什么意思:

int i = x & y;
Run Code Online (Sandbox Code Playgroud)

我运行了这个例子

int x = 1 & 2;
int y = 5;
int sum = x + y;
Run Code Online (Sandbox Code Playgroud)

结果是 5,我不确定&在这种情况下我是否了解运算符的作用

Joe*_*orn 9

&运算符是一个按位与。要了解它的作用,请查看位模式。

所以如果1有这个二进制位模式:

0 1
Run Code Online (Sandbox Code Playgroud)

2有这个二进制位模式:

1 0
Run Code Online (Sandbox Code Playgroud)

您将它们放在一起并查看列:

0 1
1 0
Run Code Online (Sandbox Code Playgroud)

仅保留所有1值为 的列的值1。所以我们有这个结果:

0 0 
Run Code Online (Sandbox Code Playgroud)

这是0.

因此,在第一行代码之后,x值为00加号5仍然是5


另一个例子,让我们做这样的表达:1 & 3。我们有这两种二进制位模式:

0 1
1 1
Run Code Online (Sandbox Code Playgroud)

产生这个结果:

0 1
Run Code Online (Sandbox Code Playgroud)

所以我们得到1. 我们也可以这样做2 & 3

1 0
1 1
Run Code Online (Sandbox Code Playgroud)

要得到这个结果:

1 0
Run Code Online (Sandbox Code Playgroud)

这是2.


按位 AND 有多种用途。其中一个简单的方法是检查偶数与奇数。该表达式x & 1 == 1是检查变量x是否为奇数的快速方法。x & 1 == 0快速检查它是否均匀。