#boolean #boolean-logic
#логическое #логическая логика
Вопрос:
У меня есть 2 программы: X и Y.
X имеет два растровых изображения A и C.
X вызывает Y.
Y имеет растровое изображение B.
Код, который мне нужно выполнить в Y, это
if AB == B amp;amp; BC == C
//do some action Z
Я хочу объединить A и C, используя логические операции, чтобы я мог передать одно растровое изображение в Y. Затем это единственное растровое изображение может выполнить любую логическую операцию с B, чтобы вернуть true / false, и, соответственно, я могу решить выполнить действие Z.
Ответ №1:
Невозможно упростить, объединив A и C.
Вот наша таблица истинности:
B A C Z
0 0 0 1
0 0 1 0
0 1 0 1
0 1 1 0
1 0 0 0
1 0 1 0
1 1 0 1
1 1 1 1
Из таблицы истинности мы можем видеть, что когда B = 0, мы имеем Z = не C; когда B = 1, мы имеем Z = A.
Предположим, ради противоречия, что у нас есть однобитовая функция Y = f (A, C), которая «суммирует» A и C. Мы используем B, чтобы выбрать, равно ли итоговое значение «не C» или «A». Но это явно невозможно, потому что один бит не может сохранить достаточно информации, чтобы иметь возможность извлечь значение ‘not C’, а также значение ‘A’.
Комментарии:
1. Примечание: ваше условие также может быть выражено как
A >= B amp;amp; B >= C
, на побитовой основе.