当&在c#中将两个整数结合使用

本文关键字:两个 整数 结合 | 更新日期: 2023-09-27 18:11:02

我无法理解发生了什么以及这是如何从以下几行产生的:

示例1:我得到1作为下面的结果。

int a = 1, b = 9;
int r = a & b;
Console.WriteLine(r);

示例2:我得到8作为下面的结果。

int a = 10, b = 9;
int r = a & b;
Console.WriteLine(r);

我不知道&&在这个语境中的意义。上述结果是如何被操纵的?逻辑是什么?

当&在c#中将两个整数结合使用

按位算术:

9 = 1001       9 = 1001
1 = 0001      10 = 1010
--------      ---------
& = 0001 = 1   & = 1000 = 8

其中&跟随真值表(每比特):

& | 0 1
--+----
0 | 0 0
1 | 0 1

。"仅当两个输入都为1时输出1"

From & Operator (C# Reference)

对于整型,&计算其的逻辑位和操作数。

&的真值表

& | 0 1
--+----
0 | 0 0
1 | 0 1

当你写1 & 9时,结果将是1,因为它的工作原理是;

0001
1001
x---------------
0001

当你写10 & 9时,结果将是8,因为它的工作原理是;

1010
1001
x---------------
1000

为位& (AND)运算符。

按位和操作符改变位。它提供了重要的位逻辑的功能。当它应用于两个数时,结果是另一个包含1的数字,其中两个都是1数字也有1

也看到:和;操作符(c#参考)

For you case whereInt a = 1, b = 9;Int r = a &b;

a: 0001 (binary equvivalent of 1)
b: 1001 (binary equvivalent of 9)
----------
r: 0001 (which would be 1)

Here是一个示例:

    3:  0011
    1:  0001
3 & 1:  0001

int r = a &b;//a = 1, b = 9

1的例子:

a: 0 0 0 1
b: 1 0 0 1
r: 0 0 0 1  // 1

2的例子:

a: 1 0 1 0
b: 1 0 0 1
r: 1 0 0 0  // 8

,(and算子)是指当a和b为1时,结果(r)仅为1。否则为0