Битовые операторы и флаги
&, |, ^, ~, << и >> работают с 64-битными значениями Integer по правилам C и ни с чем
другим. В основном они нужны для объединения констант-флагов, проверки битов в значениях,
возвращаемых встроенными функциями, и распаковки цветов.
| Задача | Выражение |
|---|---|
| Объединить флаги | 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, если точка
не находится ни на одном мониторе.