各ビットごとの条件式(True/False)として考えるとわかりやすい。
And
左右がTrueでTrue
Or
左右いずれかTrueでTrue
Not
TrueならFalse、FalseならTrue
Xor
左右が違う場合True
VBAでは10進法のまま計算する。
2進法から10進法へは各フラグを下記の数値を足すだけ。
128,64,32,16,8,4,2,1
例えば、
10進法で3なら、00 00 00 11
10進法で6なら、00 00 01 10
なので、Andで計算すると2のフラグのみTrueとなる。
1 2 3 4 5 |
Sub TEST2() Debug.Print 3 And 6 ' 2 End Sub |
2,8のフラグを立たせたければ10とすればいい。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Sub TEST2() f = 10 If f And 1 Then Debug.Print 1 If f And 2 Then Debug.Print 2 If f And 4 Then Debug.Print 4 If f And 8 Then Debug.Print 8 If f And 16 Then Debug.Print 16 ' 2, 8 End Sub |