我最近有一道试题:
byte a,b,c;
a = 190;
b = 4;
c = (byte)(a & b);
c 的值是多少?
我从来没有以这种方式使用过逻辑操作数,这是怎么回事?单步执行此步骤,答案是 4,但为什么呢?
此外,这在现实世界中会出现在哪里?我会争辩说,以这种方式使用逻辑操作数并进行强制转换只是一种不好的做法,但我可能是错的。
最佳答案
在这种情况下,您进行的是按位与运算,而不是逻辑与运算,它是将 a 和 b 的两个值的位组合在一起,并为您提供一个结果,该结果仅包含在 a 和 b 中设置的位,在这种情况下,只有 4s 位。
190 = 10111110
& 4 = 00000100
-------------------
= 4 00000100
编辑:有趣的是,msdn 本身使将其称为逻辑还是按位的问题变得有些困惑。在他们对逻辑运算符(& && | || 等)的描述中,他们说逻辑运算符(按位和 bool ),但随后在 & 本身的描述中表明它对整数执行按位与,对 bool 执行逻辑与。看起来它仍然被认为是一个逻辑运算符,但整数类型之间的操作是按位与。
http://msdn.microsoft.com/en-us/library/sbf85k1c(v=vs.71).aspx
关于c# - 逻辑 & 在 C# 中如何处理两个字节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5664605/