Операции отношения предназначены для сравнения различных величин (величины должны быть сравнимых типов). Результат сравнения имеет логический тип. Имеются следующие операции отношения:
= - равно; < > - не равно;
> - больше; >= - больше или равно;
< - меньше; <= меньше или равно.
Операции отношения используются также для указателей, строк и множеств.
Для величин логического типа определены логические операции NOT (не), AND (и), OR (или), XOR (исключающее или).
Операция NOT имеет смысл противоположного события, она изменяет значение FALSE на TRUE и наоборот.
NOT(a<b) º a>=b;
NOT(a=b) º a< >b;
Операция AND называется также конъюнкцией или логическим умножением.
A & B
A
TRUE
FALSE
B
TRUE
TRUE
FALSE
FALSE
FALSE
FALSE
Операция ИЛИ (OR), иначе говоря, логическая дизъюнкция (логическое сложение).
Результат операции OR
A Ú B
A
TRUE
FALSE
B
TRUE
TRUE
TRUE
FALSE
TRUE
FALSE
Операция исключающее ИЛИ (XOR) даёт результат TRUE, если только один из операндов имеет значение TRUE, а другой имеет значение FALSE; при совпадении логических значений операндов результат имеет значение FALSE. В математике эту операцию часто называют сложением по модулю.
Результат операции XOR
A Å B
A
TRUE
FALSE
B
TRUE
TRUE
TRUE
FALSE
TRUE
FALSE
В Турбо Паскале имеется два вида вычисления логических выражений: полное вычисление и укороченное вычисление. Так при вычислении
1. a and b and c and d;
2. a or b or c or d;
в первом выражении достаточно получить одно значение FALSE, чтобы прекратить проверки, а во втором вычисление логического выражения теряет смысл при получении первого значения TRUE.
Выбор вида вычислений осуществляется с помощью директивы компилятора $B. В случае директивы{$B-} (этот вариант выбирается по умолчанию) производится укороченное вычисление. В случае директивы {$B+} производится полное вычисление.
Операции NOT, AND, OR, XOR (а также SHL,SHR) можно использовать для побитовых операций с целыми числами, при этом тип величин не меняется.
Результат битовой операции AND (И)
а AND b
а
b
Операция И может использоваться для наложения «маски» – выделения из некоторого целого числа определенной части его разрядов. Например, пусть имеем переменную х типа byte. Требуется выделить 4 младших разряда и записать их в переменную y. Тип байт – это 8 разрядов двоичного кода, тогда требуемый результат достигается следующей записью
Y:=X and 15, или, что то же самое Y:=x and $F.
Результат битовой операции OR (ИЛИ)
а OR b
а
b
Результат битовой операции XOR (исключающее ИЛИ)
а XOR b
а
b
SHL операция i SHL j сдвигает значение i на j битов влево. Освободившиеся биты заполняются нулями.
SHR операция i SHR j сдвигает значение i на j битов вправо Освободившиеся биты заполняются нулями.