ビット演算子とフラグ
&、|、^、~、<<、>> は、C 言語と同じセマンティクスで 64 ビットの Integer に対して動作し、それ以外には動作しません。
主な用途は、フラグ定数の組み合わせ、組み込み関数が返す値のビットのテスト、色の分解です。
| 作業 | 式 |
|---|---|
| フラグを組み合わせる | FileNotify.FileName | FileNotify.LastWrite |
| フラグをテストする | (mask & FileNotify.Size) != 0 |
| フラグをセットする | mask = mask | flag; |
| フラグをクリアする | mask = mask & ~flag; |
| フラグを反転する | mask = mask ^ flag; |
| ビット n をテストする | ((value >> n) & 1) == 1 または (value & (1 << n)) != 0 |
| 偶数 / 奇数 | (n & 1) == 0 |
0xRRGGBB を分解する | r = (c >> 16) & 0xFF; g = (c >> 8) & 0xFF; b = c & 0xFF; |
キーが押されている (KeyboardGetKeyState から) | (state & 0x8000) != 0。Win32 の SHORT の最上位ビットは符号拡張されるため、state < 0 でも判定できます。 |
| キーがトグルされている (Caps Lock など) | (state & 1) != 0 |
DisplayGetPixelColorFromPoint は 0xRRGGBB を Integer にまとめて返します。その点がどのモニター上にもない場合は -1 を返します。