0

別の人の VB.net プロジェクトから C# へのコード変換中に、次のコードに遭遇しました。

Public Sub New(ByVal lbytModuleAddress As Byte, ByVal lbytRelayStateMask As Byte)
    Dim lintCounter As Integer

    mbytModuleAddress = lbytModuleAddress
    For lintCounter = 0 To 7
        If lbytRelayStateMask And (2 ^ lintCounter) Then
            mblnRelayState(lintCounter) = True
        Else
            mblnRelayState(lintCounter) = False
        End If
    Next
End Sub

これを C# に変換しようとしていますが、この行の正確な意味について少し混乱しています。

If lbytRelayStateMask And (2 ^ lintCounter) Then

誰かが私を啓発してもらえますか?舞台裏で何かが起こっているように見えますが (さらに調べる必要はありません)、その前に、この if ステートメントの結果を明確にしたいと思います。

部分式のいずれかがゼロに等しい場合は偽、そうでない場合は真と言うのは正しいですか? 申し訳ありませんが、私は VB.net についてあまり詳しくありません。

4

2 に答える 2

2

lbytRelayStateMask And (2 ^ lintCounter) は、オンまたはオフの BIT 番号 lintCounter になります。a bit はブール値です。AND はビット演算であり、IF の AND ではありません

番目の著者も書いている可能性があります:

mblnRelayState(lintCounter) = (lbytRelayStateMask And (2 ^ lintCounter))

于 2011-08-01T11:56:28.493 に答える
0

はい、あなたの分析は正しいと思います。

于 2011-08-01T09:11:01.400 に答える