Объедините два булевых уравнения, чтобы отделить булевы переменные от других - PullRequest
1 голос
/ 12 октября 2011

У меня 2 программы: X и Y.

X имеет два растровых изображения A и C.

X звонит Y.

Y имеет битовую карту B.

Код, который мне нужно выполнить в Y, это

if AB == B && BC == C 
    //do some action Z

Я хочу объединить на A и C, используя логические операции, чтобы я мог передать одну битовую карту Y. Затем этот единственный битовый массив может выполнить любую логическую операцию с B, чтобы вернуть true / false, и, соответственно, я могу решить выполнить действие Z .

1 Ответ

2 голосов
/ 12 октября 2011

Невозможно упростить объединение 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" , Но это явно невозможно, поскольку один бит не может сохранить достаточно информации, чтобы можно было извлечь значение «не C», а также значение «A».

...