按位与 & 和逻辑与 && 有什么区别?

7

15
你有没有想过在任何地方查找这个内容? - Oliver Charlesworth
5
不行,Oli,那方面没有任何资源。你知道,位运算和逻辑运算只存在了几天。 - Femaref
抱歉,各位,我没有意识到这是重复的。我是一个初学者,从未在学校学习过IT...为什么你们要投票否决我的问题?对于像我这样的初学者来说,了解基本概念可能很有意义。 - GibboK
因为这样的信息可以在几秒钟内在网络上(或维基百科)找到。 - Femaref
显示剩余3条评论
3个回答

22

& 运算符用于整数的按位运算,例如 1000 & 1001 = 1000。而 && 运算符则是用于比较布尔值。然而,& 还可以作为非短路逻辑与(non-shortcircuiting logical and)运算符使用,这意味着如果你有一个表达式 false & true,第二个参数仍将被计算。而使用 && 运算符则不会出现这种情况。


5

按位运算,顾名思义,是在位级别上进行AND操作。

因此,如果您对两个整数执行按位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

但仅限于逻辑层面。

3

好的,问题很好(尽管有些重复)。

按位与会在位级别上影响它的运算符,即对每个位进行循环并执行逻辑AND操作。

另一方面,

逻辑AND将使用2个布尔运算符检查它们的正确性(作为一个整体),并进行决策(请注意,在C#中,bool类型占用2个字节长)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接