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 - отрицание или инверсия бита, эта операции применяется только к одному биту, действие простое — текущее значение бита изменяется на противоположное
A
Y
0
1
1
0
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
Байт смещается вправо на один или более разрядов, позиции слева замещаются нулями, позиции справа теряются.