с обычными логическими операция над
1. Введение. Логические операции. Введение
Наряду с обычными логическими операция над логическими типами Boolean, часто приходятся выполнять операции и над отдельными битами, обычно используемыми, как флаги. Для эффективной работы необходимо понятие логических операций. Паскаль поддерживает следующие логические операции AND - логическое И; OR - (включающие) логическое ИЛИ; XOR - (исключающие) логическое ИЛИ; NOT - отрицание или инверсия бита; SHL - логический сдвиг влево; SHR - логический сдвиг вправо. Другие логические операции над числами в Паскаль не включены, но доступны через ассемблерные вставки.
Каждый бит может иметь только два состояния
ЛОЖЬ (FALSE) или
ИСТИНА (TRUE)
Состояние бита можно описывать и другими словами, часть которых пришла из математики, часть из электроники, часть из логики.
Для значения ЛОЖЬ, альтернативные варианты такие - [НЕТ, НОЛЬ, ВЫКЛЮЧЕНО, НЕ УСТАНОВЛЕНО, СБРОШЕНО, FALSE, F, 0, -] и другие.
Для значения ИСТИНА, альтернативные варианты такие - [ДА, ЕДИНИЦА, ВКЛЮЧЕНО, УСТАНОВЛЕНО, ВЗВЕДЕНО, TRUE, T, 1, +] и другие.
Рассмотрим эти операции по отдельности
AND - логическое И, эта операции выглядит так
A | B | Y |
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
Выражение истинно, когда истинны оба бита. Присказка "И там И там"
OR - (включающие) логическое ИЛИ, эта операции выглядит так
A | B | Y |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
Выражение истинно, когда истинен хотя бы один бит. Присказка "ИЛИ там ИЛИ там, включая и там и там"
XOR - (исключающие) логическое ИЛИ, эта операции выглядит так
A | B | Y |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
Выражение истинно, когда истинен только один бит. Присказка "ИЛИ там ИЛИ там, исключая и там и там"
NOT - отрицание или инверсия бита, эта операции применяется только к одному биту, действие простое — текущее значение бита изменяется на противоположное
SHL - логический сдвиг влево, операции применяется только к группе битов, одного из целочисленных типов Паскаля, например к байту, слову и т.д. Сдвиг байта влево на один разряд.
Разряды | B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 |
До | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 1 |
После | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 0 |
Сдвиг байта влево на два разряда
Разряды | B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 |
До | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 1 |
После | 0 | 1 | 1 | 1 | 0 | 1 | 0 | 0 |
Байт смещается влево на один или более разрядов, позиции справа замещаются нулями, позиции слева теряются.
SHR - логический сдвиг вправо, операции применяется только к группе битов, одного из целочисленных типов Паскаля, например к байту, слову и т.д.
Сдвиг байта вправо на один разряд.
Разряды | B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 |
До | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 1 |
После | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 0 |
Сдвиг байта вправо на два разряда.
Разряды | B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 |
До | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 1 |
После | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 1 |
Байт смещается вправо на один или более разрядов, позиции слева замещаются нулями, позиции справа теряются.
Содержание Назад Вперед