битов флаг


От таблицата се вижда, че добавянето на малко знаме превключва 0 до 1 на съответната позиция. За да работите с флаговете използвани функции и BITAND BitOR.

С BITAND функция проверява за флага, той е включен.

$ Нежелателни = 44
Ако BITAND ($ нежелателни. 8) След това
MsgBox (0. "Message". "Да, този флаг е разрешено")
още
MsgBox (0. "Message". "Не, на този флаг е изключен")
EndIf


С BitOR може безопасно да се съчетаят знамена

$ Нежелателни = 12; 8 + 4
$ Нежелателни = BitOR ($ нежелателни 4). Добавя флаг 4
MsgBox (0. "Message" $ нежелателни.); Броят 12 не се е променила, тъй като флагът е бил разрешен, преди

Това е допустимо да обобщим битови флагове без BitOR. например 8 + 4 + 2, но понякога се използва константи като стил за GUICreate може да направи грешка. Някои от константи вече съдържа комбинация от битови флагове и с добавянето на флага, който вече присъства в константа може да получи напълно различна комбинация от битови флагове. Например, ако се опитате да 14 (8 + 4 + 2) 4, за да добавите флаг, можете да получите номера 18 (16 + 2), а това е друга комбинация от флагове. Очевидно е, че всички десетични числа с разширяването на знамената на битови определено дават само една комбинация от флагове, както и всяка комбинация от флагове дава само един уникален десетични числа, защото тя е в действителност един и същ номер само в десетичен или двоичен представителство ,

Използването бит флаг

Пример функция с малко флаг.

MsgBox (0. "съобщение. _Check (32 + 8 + 4))

Func _Check ($ нежелателни)
Местна $ sText
Ако BITAND ($ нежелателни. 1) След $ sText = '1' @LF
Ако BITAND ($ нежелателни. 2) След това $ sText = '2' @LF
Ако BITAND ($ нежелателни. 4) След това $ sText = '4' @LF
Ако BITAND ($ нежелателни. 8) Тогава $ sText = '8' @LF
Ако BITAND ($ нежелателни. 16) Тогава $ sText = "16" @LF
Ако BITAND ($ нежелателни. 32) Тогава $ sText = "32" @LF
Ако BITAND ($ нежелателни. 64) Тогава $ sText = "64" @LF
Ако BITAND ($ нежелателни. 128) Тогава $ sText = '128' @LF
Връщане $ sText
EndFunc; ==> _ Check


изключения флаг процес

$ Нежелателни = 12
Ако BITAND ($ нежелателни 4.) Тогава $ нежелателни - = 4
MsgBox (0. "Message". $ Нежелателни)

$ Нежелателни = 12
$ Нежелателни = BitNOT (BitOR (BitNOT ($ нежелателни), 4))
MsgBox (0. "Message". $ Нежелателни)