Bitwise AND& amp;和LOGICAL AND&&

时间:2011-02-19 14:35:17

标签: c# programming-languages

  

可能重复:
  What is the difference between logical and conditional AND, OR in C#?

Bitwise AND& amp;和逻辑AND&& ??

3 个答案:

答案 0 :(得分:17)

&使用按位运算修改整数,即。 1000 & 1001 = 1000&&比较布尔值。但是,&兼作非短路逻辑,并且意味着如果您有false & true,则仍会评估第二个参数。 &&不会出现这种情况。

答案 1 :(得分:4)

按位,顾名思义,它是BIT级别的AND操作。

所以,如果你对两个整数执行BITWISE AND:

int a = 7;     // b00000111
int b = 3;     // b00000011
int c = a & b; // b00000011 (bitwise and)

另一方面,在C#中,逻辑AND在逻辑(布尔)级别操作。所以你需要布尔值作为运算符,结果是另一个逻辑值:

bool a = true;
bool b = false;
bool c = a && b; // c is false
c = a && true; // c is true

但仅限于逻辑层面。

答案 2 :(得分:3)

嗯,好问题(虽然重复)。

按位AND 将影响其位操作符的位级,即循环并对每个位执行逻辑AND操作。

另一方面,

逻辑AND 将需要2个布尔运算符来检查它们的正确性(作为一个整体)并决定(注意C#中的bool是2个字节长)。