Логический тип данных Операции сдвига Логический тип данных Переменные логического типа описываются с помощью идентификатора Boolean. Диапазон значений – два: False (ложь) или True (истина), размер выделяемой памяти – 1 байт (False и True – стандартные константы). Тип является перечислимым, поэтому: False < True, Ord (False) = 0, Ord(True) = 1, Succ(False) = True, Pred(True = False). Перечислим четыре логические операции, реализованные в Турбо Паскале: логическое сложение, или дизъюнкция, - Or; логическое умножение, или конъюнкция, - And; от рицание - Not, исключающее «или» (сложение по модулю два) – Xor. Результаты выполнения операций над переменными логического типа х и у приведены в таблице. Значение операнда x y Значение операции Not x X And y X Or y X Xor y False False True False False False False True True False True True True False False False True True True True False True True 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.