C#中的位运算。如何转换2个长';结果如何?

C#中的位运算。如何转换2个长';结果如何?,c#,bitwise-operators,C#,Bitwise Operators,如何检查C#中的“9”中是否有“1” JavaScript中的“&”和vb中的“and”都是可能的,但我就是想不出我在这里遗漏了什么 // check if result of binary op is != 0 // that means "contains" if ((l1 & l9) != 0) { ... } 您需要检查操作的结果是否不等于0 编辑 正如@Damien:正确指出的,在这种情况下,检查0的不平等性是正确的,因为简单的>0比较可能会产生误报,如果第63位不

如何检查C#中的“9”中是否有“1”

JavaScript中的“&”和vb中的“and”都是可能的,但我就是想不出我在这里遗漏了什么

// check if result of binary op is != 0
// that means "contains" 
if ((l1 & l9) != 0)
{
   ...
} 
您需要检查操作的结果是否不等于0

编辑
正如@Damien:正确指出的,在这种情况下,检查
0
的不平等性是正确的,因为简单的
>0
比较可能会产生误报,如果第63位不知何故涉及

您想将结果与1进行比较。C#没有从long/any number类型到bool的隐式对话。@Mafii有趣,您知道他们为什么这样做吗?@radbyx调试和维护不隐式对话的代码更安全。除了bool最初(现在仍然)基于整数类型之外,没有理由认为bool是一个数字。这是真是假。c#devs做出了这个艰难的决定,但我认为这是为了更好。很难理解包含隐含数字的代码来引导对话。我认为您应该检查
=0
而不是
>0
,因为如果涉及位63,这将返回不同的结果。
// check if result of binary op is != 0
// that means "contains" 
if ((l1 & l9) != 0)
{
   ...
}