Дополнения к теме "Манипуляции с байтами и битами"
При разборе операторов, работающих с двоичной логикой, я сознательно не упомянул об операторах 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 |
Мне кажется несложно, но если есть вопросы, задаем на форуме