2016-08-22 5 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でそれはだ「そして」が、私はちょうど私がここに欠けているかを把握することはできません。正しく指摘し、この場合には0に不平等に対してチェックするために、正しいだろう、など:演算の結果が0

EDIT @Damienとして 等しくない場合

+1

結果を1と比較したいとします。 – juharr

+2

C#はlong /任意の数値型からboolへの暗黙の会話を持ちません。 – Mafii

+0

@Mafii興味深い、なぜあなたはそれがこれを作ったのか何か考えがありますか? – radbyx

答えて

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

あなたがチェックする必要があります単純な>0の比較では、63番目のビットが何らかの形で関係していると、誤検出が発生する可能性があります。

+2

ビット63が関わっている場合、これは異なる結果を返すので、 '> 0'ではなく'!= 0'をチェックすべきだと思います。 –

+0

@Damien_The_Unbeliever:良い点。編集されました。 – Tigran

関連する問題