Перейти к основному содержимому

Битовые операторы и флаги

&, |, ^, ~, << и >> работают с 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
Распаковать 0xRRGGBBr = (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, если точка не находится ни на одном мониторе.