Мне трудно понять закон де Моргана и его отношение к булевой логике и выражениям.Специально переписывать эквивалентные выражения, используя логическую логику и &&, ||, и!операторы.
Итак, я знаю, что в программировании на Си закон де Моргана - это способ переопределить выражение по-разному (используя NOT, OR, AND), пока оно остается эквивалентным.
Например,:
!(condition1 && condition2)
Также равно:
!condition1 || !condition two
И:
condition1 && !(condition2)
Также равно:
condition1 || !condition2
(мы просто умножаемздесь скобка с оператором унарного отрицания НЕ? Как в хорошие дни алгебры оле?)
Когда мой мозг начинает жариться, это когда я оцениваю немного более хитрое выражение, и как сделать это заново?напишите это с помощью логической логики.Я искал любые прошлые темы, с некоторой помощью, но все еще не могу обернуть мою голову вокруг этого.Я начал писать таблицы истинности, но не мог понять, как создать таблицу, основанную на выражении, подобном приведенному ниже.Я прилагаю все усилия, поэтому, пожалуйста, извините за любые ошибки или плохую практику.
(ПОЖАЛУЙСТА, ОБРАТИТЕ ВНИМАНИЕ, НИЖЕ КОД НЕ ТЕХНИЧЕСКИ ПОЛНЫЙ КОД, ПРОСТО ПРИМЕР ВЫРАЖЕНИЯ, ВКЛЮЧИТЬ В КОД C.)
Я не могу включить это ни в одну из своих программ на C, потому что просто не могу его получить.
например:
!( a > 12 ) && !(b >= 3 )
по существу заявляет (истина перед НЕ):
a > 12 && b >= 3
означает, что A больше 12, а b больше или равно 3.
Примите это к истинетаблица:
a b a&&b
1 0 false - a is greater than 12, but b is not greater than or equal to 3.
0 1 false - this time a is less than 12 while b >= 3.
0 0 false - a is not > 12 and b is not >= 3.
1 1 true - a is greater than 12, and b is >= 3.
Теперь примените оператор NOT: (с этого я начинаю заблудиться)
!( a > 12 ) && !( b >= 3 )
и напишите (попытайтесь) эквивалент, используя закон Де Моргана: так что ...
!( a > 12 ) && !( b >= 3 )
ЭКВИВАЛЕНТНО
a < 12 || b < 3
(есть ли способ сравнить их в таблице истинности, чтобы увидеть, действительно ли они эквивалентны?)
Другойодин, на этот раз немного сложнее ...
!( a == b ) && !( c != 2 )
РАВНОМЕРНО:
(a != b) || (c = 2)
наконец
!( (a < 9 ) || ( b <=3 ) )
ЭКВИВАЛЕНТНО ДЛЯ:
a > 9 && b > 3
Я не уверен, верно ли что-либо из этого, но я решил, что лучше всего перестать читать об этом и просто попытатьсяэто.