Логический тип данных Операции сдвига
Логический тип данных Переменные логического типа описываются с помощью идентификатора Boolean. Диапазон значений – два: False (ложь) или True (истина), размер выделяемой памяти – 1 байт (False и True – стандартные константы). Тип является перечислимым, поэтому: False < True, Ord (False) = 0, Ord(True) = 1, Succ(False) = True, Pred(True = False).
Перечислим четыре логические операции, реализованные в Турбо Паскале: логическое сложение, или дизъюнкция, - Or; логическое умножение, или конъюнкция, - And; отрицание - Not, исключающее «или» (сложение по модулю два) – Xor. Результаты выполнения операций над переменными логического типа х и у приведены в таблице.
Значение операнда Значение операции xy Not xX And yX Or yX Xor y False TrueFalse True FalseTrue False True FalseTrue False
Здесь сведены в одну таблицу четыре таблицы истинности, с помощью которых в математической логике обычно описываются значения логических функций. Таблица истинности представляет собой таблицу, устанавливающую соответствие между возможными значениями наборов переменных и значениями операции.
Следует четко понимать, что результатом выполнения операций сравнения (отношения): (больше), = (больше или равно), (не равно), = (равно) является величина логического типа. Ее значение равно True, если отношение выполняется для значений входящих в него операндов, и False – в противном случае.
В языке Турбо Паскаль нет возможности ввода логических данных с помощью оператора Read. Однако предусмотрен вывод значений логического типа с помощью оператора Write.
Операции сдвига Существуют две операции сдвига: Shl – сдвиг влево и Shr – сдвиг вправо. Тип операндов и результата в операциях сдвига Integer. Итак, m Shl n – значение m сдвигается влево на n разрядов; а при m Shr n - значение m сдвигается вправо на n разрядов.
При выполнении операции разряды, вышедшие за пределы области памяти, выделяемой для типа данных теряются, а с другой стороны добавляются нули. Например, если m равно 32, то сдвиг влево на один разряд дает 64, а сдвиг вправо – 16. Операции равносильны умножению и делению на два.
Пример 1 Program My4_1; Uses Crt; Var a, b: Boolean; Begin ClrScr; a:=True;b:=True;Writeln (a:6, b:6, And b:6); a:=True;b:=False;Writeln (a:6, b:6, And b:6); a:=False;b:=True;Writeln (a:6, b:6, And b:6); a:=False;b:=False;Writeln (a:6, b:6, And b:6); Readln End.