Таблица правды - Помощь
У меня есть вопрос для назначения. Вопросы в основном следующие: есть две целочисленные переменные, скажем, A и B. Оба эти числа содержат данные. Использование таблицы истинности, которая, если таковая имеется, из следующих тестов операторов IF эквивалентна:
if (!(A == 60 && B == 40))
- if (A != 60 || B != 40)
- if (A == 60 && (!(B == 40)))
Как бы я занялся этим, пожалуйста. Любой совет будет оценен. Я думаю, что мне нужно создать таблицу с тремя столбцами - один с именем A, другой B и третий столбец с именем RESULT (ДА ИЛИ НЕТ).
Заявление: if (!(A == 60 && B == 40))
- Я не уверен, как читать часть if (!
, Другими словами, часть A == 60 && B == 40
по сути, говорит мне, что А должно равняться 60, а в то же время В должно равняться 40. После этого я запутался. Любая помощь / совет, пожалуйста, будет оценен.
Спасибо Крис
2 ответа
Это действительно не имеет никакого отношения к Java как таковой. Да, вы можете решить, написав таблицы истинности. !
означает логическое отрицание или нет, или вы можете даже думать об этом как об обратном. Лично я считаю полезным установить все части конкретной таблицы истинности.
a | b | !b | a & b | a & !b | !(a & b)
----------------------------------------------------------------------------------------
A = 60 | B = 40 | !(B = 40) | (A = 60 & B = 40) | A = 60 & !(B = 40) | !(A = 60 & B = 40)
T | T | F | T | F | F
T | F | T | F | T | T
F | T | F | F | F | T
F | F | T | F | F | T
Вы должны отметить, что ваш конкретный пример подчиняется одному из законов де Моргана.
P is A = 60
Q is B = 40
¬ is !
∧ is &&
∨ is ||
так...
!(A && B)
действительно так же, как !A || !B
Таблица правды говорит вам все остальное, что вам нужно знать, чтобы решить эту проблему.
Я надеюсь, что этот код, который я создаю, поможет вам понять, это простой код для отображения таблицы истинности с использованием двоичных (0 и 1) чисел вместо логических (ИСТИНА, ЛОЖЬ)
/**
* Truth table for the logical operators. Using
* zeros and ones.
*
* @ Samuel Mayol
*/
public class LogicalOpTable {
public static void main(String[] args) {
boolean p, q;
byte p1, q1, pAndQ, pOrQ, pXORq, notP, pq;
System.out.println("Using 0s and 1s for the Truth Table:");
System.out.println("P\tQ\tAND\tOR\tXOR\tNOT"); // using tabs \t
pq =1;
switch (pq) { // without break it will execute the whole swich case statements
case 1 :
p = true; q = true;
p1=(byte) (p?1:0); // The ? : operator in Java
q1=(byte) (q?1:0); // Short form for Java If statement
pAndQ=(byte) ((p&q)?1:0);
pOrQ=(byte) ((p|q)?1:0);
pXORq=(byte) ((p^q)?1:0);
notP= (byte) ((!p)?1:0);
System.out.print(p1 + "\t" + q1 + "\t");
System.out.print(pAndQ + "\t" + pOrQ + "\t");
System.out.println(pXORq + "\t" + notP);
case 2:
p = true; q = false;
p1=(byte) (p?1:0); // The ? : operator in Java
q1=(byte) (q?1:0); // Short form for Java If statement
pAndQ=(byte) ((p&q)?1:0);
pOrQ=(byte) ((p|q)?1:0);
pXORq=(byte) ((p^q)?1:0);
notP= (byte) ((!p)?1:0);
System.out.print(p1 + "\t" + q1 + "\t");
System.out.print(pAndQ + "\t" + pOrQ + "\t");
System.out.println(pXORq + "\t" + notP);
case 3:
p = false; q = true;
p1=(byte) (p?1:0); // The ? : operator in Java
q1=(byte) (q?1:0); // Short form for Java If statement
pAndQ=(byte) ((p&q)?1:0);
pOrQ=(byte) ((p|q)?1:0);
pXORq=(byte) ((p^q)?1:0);
notP= (byte) ((!p)?1:0);
System.out.print(p1 + "\t" + q1 + "\t");
System.out.print(pAndQ + "\t" + pOrQ + "\t");
System.out.println(pXORq + "\t" + notP);
case 4:
p = false; q = false;
p1=(byte) (p?1:0); // The ? : operator in Java
q1=(byte) (q?1:0); // Short form for Java If statement
pAndQ=(byte) ((p&q)?1:0);
pOrQ=(byte) ((p|q)?1:0);
pXORq=(byte) ((p^q)?1:0);
notP= (byte) ((!p)?1:0);
System.out.print(p1 + "\t" + q1 + "\t");
System.out.print(pAndQ + "\t" + pOrQ + "\t");
System.out.println(pXORq + "\t" + notP);
}
}
}
Результат после запуска этого кода:
Using 0s and 1s for the Truth Table:
P Q AND OR XOR NOT
1 1 1 1 0 0
1 0 0 1 1 0
0 1 0 1 1 1
0 0 0 0 0 1