Дополнения к теме "Манипуляции с байтами и битами"

При разборе операторов, работающих с двоичной логикой, я сознательно не упомянул об операторах AndAlso , OrElse. И совершил ошибку, не разобравшись как следует и посчитав их устаревшей моделью операторов AND и OR

На самом деле, эти операторы хоть и здорово напоминают работу операторов AND и OR , но все же имеют серьезное отличие. Эти операторы никогда не возвращают чисел , отличных от (TRUE,FALSE) То есть они направлены на работу с булевой логикой. Я покажу примеры и отличия:

Dim As Byte a = 14 , b = 22

Print a And b 'результат 6
Print a AndAlso b ' результат -1

Sleep

Как видно в примере, оператор AND вычисляет битовую манипуляцию двух переменных 14 и 22

01110  число 14
10110 число 22

результат работы оператора AND должен быть вам понятен:

00110  число 6

Если есть трудности перечитайте эту тему.

Оператор AndAlso работает проще:

1) Он смотрит на первый операнд. Если он равен 0 , то на второй оператор даже не обращает никакого внимания и возвращает FALSE (0) .
2)Если первый операнд не равен нулю, то идет проверка второго операнда на значение 0. Опять же , если второй операнд равен нулю, то возвращает FALSE (0)
3) И только если оба операнда не равны 0 , то возвращает TRUE (-1)

Таблица работы оператора AndAlso:

Левый операнд Правый операнд Результат
0 - 0
1 0 0
1 1 1

------------------------------------------------------------------------------------------------------------------------------------

Теперь разберем работу оператора OrElse. Здесь FALSE(0)  будет возвращено только в том случае , если оба операнда равны 0 . В любом другом случае будет возвращено TRUE (-1).

Пример работы:

Dim As Byte a = 14 , b = 22, c , d

Print a Or b 'результат 30
Print a OrElse b ' результат -1
Print c OrElse d ' результат 0

Sleep

И таблица работы оператора OrElse:

Левый операнд Правый операнд Результат
0 - 0
1 0 0
1 1 1

Мне кажется несложно, но если есть вопросы, задаем на форуме