c# - 逻辑 & 在 C# 中如何处理两个字节?

标签 c#

我最近有一道试题:

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/

相关文章:

c# - Silverlight 与 Java Applet 在 32 位/64 位计算机上的互操作性

c# - 嵌入式wpf文本框不接受输入

javascript - 从 C# 项目页面导航到 Javascript 项目页面 Windows Phone 8.1

c# - 多个通配符目录/文件搜索 C# .net 中的任意目录结构

C#、visual studio 代码、调试器、处理 'configurationDone' 请求时出错。未知错误 : 0x89720010,

c# - Visual Studio 忽略 #if DEBUG/RELEASE 范围内的代码,并且不检查错误或自动完成

c# - 当涉及到 MessageBox 时,String.Format() 的对齐方式表现不同

c# - 在 C# 中使用正则表达式分组的子字符串

c# - 如何使用 WinApi 随心所欲地 move 窗口

c# - 使用 LINQ 从文件中高效地计算总计