Ок, я покажу как можно это сделать на примере 4 битов. Битовые
маски обычно используются в некоторых специфических свойствах.
Для 4-битных чисел максимальное значение равно 1+2+4+8 = 15 (или 1111). Если
свойство будет использовать биты как флажки ( 1 = True, 0 = False), то для
каждой комбинации флажков результирующее число будет всегда уникальным.
Теперь поставим перед собой задачу определения статуса отдельного бита.
Довольно муторным выглядит для такой задачи преобразования битов в десятичное
число. Пойдем другим путем. Возьмем число, скажем 7 (0111), и попробуем
выставить ему третий справа бит. Значение для проверки - 0100 (4 десятичное).
Итак, мы сравниваем две величины - 0100 и 0111, бит за битом. Вот некоторая
"кухня" работы операторов, выполняющих битовые команды: 0100 0111
4 AND 7 = 0100 (4)
(=4, т.к. бит, который мы хотим выставить, устанавливается в 1)
4 OR 7 = 0111 (7)
(не так много в этом примере)
4 XOR 7 = 0011 (3) Если вы следуете за ходом моей
мысли, то вы поймете, почему я начал с операции AND. Так как мы точно знаем, что
идет проверка на выставленность единственного бита, который должен быть
установлен в сравниваемом значении, то возможный результат может быть только 0
или (как в показанном примере) 4.
Итак, ваш код должен быть следующим: If (YourCheckVar AND 4) = 4 Then
3-й бит установлен
Else
3-й бит не установлен; |