2016-08-22 60 views
1

如何檢查C#中的「1」是否在「9」中?C#中的按位操作。如何將2 long轉換爲bool結果?

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

有可能在JavaScript中「&」,並在VB中它的「和」,但我想不出什麼,我在這裏失蹤。

+1

你想比較結果爲1. – juharr

+2

C#沒有從長/任何數字類型到布爾的隱式對話。 – Mafii

+0

@Mafii有趣,你有什麼想法他們爲什麼這樣做? – radbyx

回答

5
// check if result of binary op is != 0 
// that means "contains" 
if ((l1 & l9) != 0) 
{ 
    ... 
} 

您需要檢查操作的結果不等於0

編輯 作爲@Damien:正確地指出,在這種情況下會糾正對證不平等0,如簡單的>0比較可能會產生誤報,如果第63位是以某種方式參與。

+2

我想你應該檢查'!= 0'而不是'> 0',因爲如果涉及到位63,這將返回不同的結果。 –

+0

@Damien_The_Unbeliever:好點。編輯。 – Tigran