Сравнение не тогда и vs и потом не

Мне просто интересно, есть ли разница между оператором if или оператором while, если условие либо (!a && !b) (давайте назовем этот оператор 1), либо !(a && b) (давайте назовем этот оператор 2).

Я думал об этом, и у нас есть четыре возможные комбинации a и b, и я думаю, что условие было бы другим, если бы a != b. Я просто надеюсь, что кто-нибудь сможет проверить мою логику.

Если а и b оба истинны, то оба утверждения 1 и 2 ложны. Если a и b оба ложны, то оба утверждения 1 и 2 верны. «Однако, если a истинно, а b ложно или наоборот, то утверждение 1 ложно, а утверждение 2 истинно. Это правильно?


person jhobbie    schedule 26.06.2014    source источник


Ответы (2)


На самом деле вы спрашиваете об основном законе булевой алгебры: Законы Де Моргана очень полезно знать при переработке или упрощении условных выражений.

Законы де Моргана

!(a && b)  =  (!a || !b)
!(a || b)  =  (!a && !b)

Ваша интуиция о том, что ваши утверждения 1 и 2 могут не быть эквивалентными, верна. Рассмотрение четырех возможных вариантов a и b, приведенных выше, показывает, что фактические эквивалентности определяются законами Де Моргана.

введите здесь описание изображения

Ключ: ∧ — логическое И (&&); ∨ является логическим ИЛИ (||).

Источник изображения: http://ndp.jct.ac.il/tutorials/mavomath/node15.html

person kjhughes    schedule 26.06.2014

!(a && b) = !a || !b это не равно !a && !b. В первом случае, если a или b ложно, результат будет истинным. Во втором случае и a, и b должны быть ложными, чтобы результат был истинным.

Итак, как вы говорите, у них разные результаты, когда a != b.

person James Snook    schedule 26.06.2014
comment
Хорошо, спасибо, я просто искал подтверждение, и спасибо за альтернативное представление утверждения 1. - person jhobbie; 26.06.2014