我无法从以下几行中理解发生了什么以及这是如何产生的:
示例 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);
我不知道在这种情况下的意义&
和意义&
。上面的结果是如何被操纵的?什么逻辑?
按位算术:
9 = 1001 9 = 1001
1 = 0001 10 = 1010
-------- ---------
& = 0001 = 1 & = 1000 = 8
下面是&
真值表(每比特):
& | 0 1
--+----
0 | 0 0
1 | 0 1
即“仅当两个输入均为 1 时才输出 1”
对于整数类型,
&
计算其操作数的逻辑按位与。
真值表&
& | 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。
另请参阅:& 运算符(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)
Here
是一个样本:
3: 0011
1: 0001
3 & 1: 0001
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。