Математики имеют дело с объектами, такими как, например, -- числа, -- функции, -- матрицы, -- прямые на плоскости и т.д., а также имеют дело с высказываниями. Высказывание есть некоторое повествовательное предложение, подлежащим в котором является математический объект, и про которое можно в принципе сказать верно оно или ложно. Приведем примеры высказываний.
1. Прямая пересекает ось Ох.
2. Число «пи» больше 3.14.
3. Отношение равно 1.
4. Число есть корень уравнения .
5. Число составляет все множество корней уравнения .
6. Корень из 2 не будет корнем никакого многочлена с целыми коэффициентами.
7. Число e (основание натуральных логарифмов) не будет корнем никакого многочлена с целыми коэффициентами.
Здесь утверждения 2,4,7 справедливы, утверждения 1,5,6 ложны, а 3 не является утверждением, поскольку нет такого объекта-числа как 0/0.
А будут ли сами «ИСТИНА» и «ложь» математическими объектами? Да, будут. Они составляют весьма важное в математической логике множество
которое называется булеаном, и на котором можно определить разнообразные логические операции: «или», «и», «следует», «эквивалентность», «не», «либо» (исключающее). Первые четыре операции, а также последняя двуместные (или, как говорят, бинарные), операция отрицания «не» одноместная (=унарная). Чтобы напомнить житейский смысл этих операций, попытайтесь оценить истинность следующих высказываний в зависимости от разных истинностных оценок компонент этих высказываний.
а. Не верно, что Васька плут и мошенник.
б. Не верно, что Фигаро здесь или Фигаро там.
в. Ветер дует, потому (=из-за того), что деревья качаются.
г. Мы победим либо все вместе погибнем.
д. Ты и ты и ты не можете сравниться с Матильдой моей
Так как нам надо алгебраизировать операции на булеане (помни название предмета!), то полагаем: и это равно 1 в однобитовом представлении булеана, и это равно 0, операцию «или» называем дизъюнкцией и обозначаем “or”, операцию «и» называем конъюнкцией и обозначаем “and” (иначе, она называется логическим умножением), операцию отрицания обозначаем “not”, операцию следования называем импликацией и обозначаем , исключающее или обозначаем “xor” (по-другому “+”, -- логическое сложение). Тогда действия этих операций можно свести в таблицу
Таблица 1
x | 0 | 1 | 0 | 1 |
y | 0 | 0 | 1 | 1 |
x or y | 0 | 1 | 1 | 1 |
x and y (= xy) | 0 | 0 | 0 | 1 |
x +y | 0 | 1 | 1 | 0 |
x xor y (= x+y) | 0 | 1 | 1 | 0 |
not x (=1+x) | 1 | 0 | ||
x Imp y (x ⇒ y) | 1 | 0 | 1 | 1 |
x Equ y (x≡ y) | 1 | 0 | 0 | 1 |
Предпоследняя строка таблицы определяется в соответствии с принципом «солгавши раз, да кто тебе поверит!». Если некто ложное утверждение объявляет истинным, и тем самым его собственное мировоззрение становится противоречивым, то далее он может объявлять, что угодно – в своих глазах он будет прав. Еще раз объясним импликацию на математическом языке: – ложность посылки влечет истинность импликации вне зависимости от . В компьютерных языках операции импликации и эквивалентности используют крайне редко. Частично это объясняется тем, что эквивалентно (здесь -- какие-либо высказывания).
На битовые строки логические операции распространяются покомпонентно:
Здесь * -- какая-либо бинарная операция, а -- унарная операция (она у нас пока одна – отрицание, но все впереди)
ПРИМЕРЫ логических вычислений в (полубайт):
В среде VBA под True и False отводится два байта (=16 бит), столько же сколько и под тип целого числа Integer. При этом True представляется строкой из единиц (1,1,…,1), а False – строкой из нулей. Система представления целых чисел типа Integer такова, что первый бит указывает на знак числа (см. «Компьютер и алгебра») и строка из 16 единиц представляет целое число -1. Поэтому ничего удивительного нет в том, что на вопросы к дебюггеру “True = -1”; “True<False” он ответит утвердительно.