2013-04-26 24 views
4

的配合​​使用,我无法理解发生了什么,以及如何这个结果从下面几行:奇怪的结果时,与在两个整数C#

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

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

实施例2:我得到作为结果的下方。

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

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

+0

我想知道你在这里试图做什么。你期望什么结果? – comecme 2013-04-26 06:54:57

+0

哈哈我参加了一个在线考试,并且有一个问题,所以我在VS中试过了,我得到了结果,我不知道结果的逻辑是什么。这就是为什么我问这里:D – Learner 2013-04-26 06:55:53

回答

10

按位运算:

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

其中&如下真值表(每比特):

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

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

+0

谢谢Marc :)它帮助我很多 – Learner 2013-04-26 06:53:10

+0

但我有一个问题。我们如何知道&这个真值表?另外什么是真理表或运营商?我认为它由||表示? – Learner 2013-04-26 06:54:27

+0

@Divine按位“或”是'|',而不是'||'; “或者”是“如果其中一个或两个输入都是1,则输出1”,因此“{0,0} => 0”,“{1,0} => 1”,“{0,1} => 1” '{1,1} => 1'。关于“我们如何知道真值表” - 要么通过理解推理(即,只有在两个输入都是1的情况下的“输出1”)并且通过另一个叫做“学习它”的技巧来计算出来。海事组织“理解推理”方法更有用。例如,“xor”是“输出1,如果*正好*一个(即不是两个)输入都是1”等 – 2013-04-26 06:58:37

1

它是Bitwise & (AND)运营商。

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

另见:& Operator (C# Reference)

对于你的情况下 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) 
+0

谢谢哈比:)这可以帮助我 – Learner 2013-04-26 06:50:36

+1

@Divine,不客气 – Habib 2013-04-26 06:51:02

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 
+1

谢谢你Soner :)它可以帮助我 – Learner 2013-04-26 06:52:20

+0

@Divine欢迎你'')' – 2013-04-26 06:53:10

+0

:)..... .................... – Learner 2013-04-26 06:54:59

0

Here是一个示例:

3: 0011 
    1: 0001 

3 & 1: 0001 
0

INT R =一个& 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-操作者)意味着,结果(r)是仅1当a和b是1.否则它是0.

+0

谢谢,但一个是只有1和b不是1,你说“当和和b”应该是1,因为r是1.你如何计算a/b的二进制除法? – Learner 2013-04-26 06:50:03