4

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

示例 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);

我不知道在这种情况下的意义&和意义&。上面的结果是如何被操纵的?什么逻辑?

4

5 回答 5

10

按位算术:

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

下面是&真值表(每比特):

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

即“仅当两个输入均为 1 时才输出 1”

于 2013-04-26T06:46:30.380 回答
2

& 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
于 2013-04-26T06:43:29.950 回答
1

它是按位&(AND)运算符。

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

另请参阅:& 运算符(C# 参考)

对于你的情况 int 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)
于 2013-04-26T06:43:13.327 回答
0

Here是一个样本:

    3:  0011
    1:  0001

3 & 1:  0001
于 2013-04-26T06:47:13.137 回答
0

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

第一个例子:

a: 0 0 0 1
b: 1 0 0 1

r: 0 0 0 1  // 1

第二个例子:

a: 1 0 1 0
b: 1 0 0 1

r: 1 0 0 0  // 8

&(AND 运算符)表示,当 a 和 b 为 1 时,结果 (r) 仅为 1。否则为 0。

于 2013-04-26T06:47:26.640 回答