C#中的按位运算.如何将2 long转换为bool结果?

rad*_*byx 2 c# bitwise-operators

如何在C#中检查"1"是否在"9"中?

long l1 = 1L; // 0001
long l9 = 9L; // 1001
if (l1 & l9) // True (Cannot implicit convert 'long' to 'bool)
{
}
Run Code Online (Sandbox Code Playgroud)

它可以在JavaScript中使用"&",在vb中使用"And",但我无法弄清楚我在这里缺少什么.

Tig*_*ran 6

// check if result of binary op is != 0
// that means "contains" 
if ((l1 & l9) != 0)
{
   ...
} 
Run Code Online (Sandbox Code Playgroud)

您需要检查操作的结果是否不等于0.

编辑 作为@Damien:正确地指出,在这种情况下将纠正以检查不等式0,因为>0如果第63位以某种方式涉及简单比较可能产生误报.

  • 我认为你应该检查`!= 0`而不是`> 0`,因为如果涉及第63位,这将返回不同的结果. (2认同)