Еще пример задания:
Составьте таблицу истинности для логической функции
X = (А ↔ B) ¬(A → (B C))
в которой столбец значений аргумента А представляет собой двоичную запись числа 27, столбец значений аргумента В – числа 77, столбец значений аргумента С – числа 120. Число в столбце записывается сверху вниз от старшего разряда к младшему. Переведите полученную двоичную запись значений функции X в десятичную систему счисления.
Решение (вариант 1):
запишем уравнение, используя более простые обозначения операций:
это выражение с тремя переменными, поэтому в таблице истинности будет 23=8 строчек; следовательно, двоичная запись чисел, по которым строятся столбцы таблицы А, В и С, должна состоять из 8 цифр
А | В | С | X |
0 | 0 | 0 | |
0 | 1 | 1 | |
0 | 0 | 1 | |
1 | 0 | 1 | |
1 | 1 | 1 | |
0 | 1 | 0 | |
1 | 0 | 0 | |
1 | 1 | 0 | |
переведем числа 27, 77 и 120 в двоичную систему, сразу дополняя запись до 8 знаков нулями в начале чисел
27 = 000110112 77 = 010011012 120 = 011110002
теперь можно составить таблицу истинности (см. рисунок справа), в которой строки переставлены в сравнении с традиционным порядком1; зеленым фоном выделена двоичная записи числа 27 (биты записываются сверху вниз), синим – запись числа 77 и розовым – запись числа 120:
вряд ли вы сможете сразу написать значения функции Х для каждой комбинации, поэтому удобно добавить в таблицу дополнительные столбцы для расчета промежуточных результатов (см. таблицу ниже)
заполняем столбцы таблицы:
А | В | С | | | | | X |
0 | 0 | 0 | 1 | 0 | 1 | 0 | 1 |
0 | 1 | 1 | 0 | 1 | 1 | 0 | 0 |
0 | 0 | 1 | 1 | 1 | 1 | 0 | 1 |
1 | 0 | 1 | 0 | 1 | 1 | 0 | 0 |
1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 |
0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 |
1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
1 | 1 | 0 | 1 | 1 | 1 | 0 | 1 |
значение
равно 1 только в тех строчках, где А = В
значение
равно 1 только в тех строчках, где В = 1 или С = 1
значение
равно 0 только в тех строчках, где А = 1 и В + С = 0
значение
– это инверсия предыдущего столбца (0 заменяется на 1, а 1 – на 0)
результат Х (последний столбец) – это логическая сумма двух столбцов, выделенных фиолетовым фоном
чтобы получить ответ, выписываем биты из столбца Х сверху вниз: Х = 101010112
переводим это число в десятичную систему: 101010112 = 27 + 25 + 23 + 21 + 20 = 171
таким образом, правильный ответ – 171.
Возможные проблемы: нужно помнить таблицы истинности логических операций легко запутаться в многочисленных столбцах с однородными данными (нулями и единицами) |
Решение (вариант 2, преобразование логической функции):
выполним пп. 1-5 так же, как и в предыдущем способе
запишем уравнение, используя более простые обозначения операций:
раскроем импликацию через операции И, ИЛИ и НЕ (
):
раскроем инверсию для выражения
по формуле де Моргана:
таким образом, выражение приобретает вид
отсюда сразу видно, что Х = 1 только тогда, когда А = В или (А = 1 и В = С = 0):
А | В | С | X | Примечание |
0 | 0 | 0 | 1 | А = В |
0 | 1 | 1 | 0 | |
0 | 0 | 1 | 1 | А = В |
1 | 0 | 1 | 0 | |
1 | 1 | 1 | 1 | А = В |
0 | 1 | 0 | 0 | |
1 | 0 | 0 | 1 | А = 1, В = С = 0 |
1 | 1 | 0 | 1 | А = В |
чтобы получить ответ, выписываем биты из столбца Х сверху вниз: Х = 101010112
переводим это число в десятичную систему: 101010112 = 27 + 25 + 23 + 21 + 20 = 171
таким образом, правильный ответ – 171.
1 Проверьте, что обычно (когда комбинации располагаются по возрастанию соответствующих двоичных чисел), столбец значений аргумента А представляет собой двоичную запись числа 15 = 11112, столбец значений аргумента В – числа 51 = 1100112, столбец значений аргумента С – числа 85 = 101010102.