Using the De Morgan Rule
!(A && B)
is equivalent to!A || !B
the original expression
boolean reject = !(speed > 2000 && memory > 512)
is equivalent to
boolean reject = !(speed > 2000) || !(memory > 512)
which is equivalent to
boolean reject = (speed <= 2000) || (memory <= 512)
Here is the other De Morgan rule:
!(A || B)
is equivalent to!A && !B
This truth table shows why this rule is true.
A | B | (A || B) | !(A || B) | !A | !B | !A && !B |
---|---|---|---|---|---|---|
F | F | F | T | T | T | T |
F | T | T | F | T | F | F |
T | F | T | F | F | T | F |
T | T | T | F | F | F | F |
The fourth and the last column have the same truth values, which shows that the expressions at the top of those columns are equivalent.
Rewrite the following fragment:
while ( !(input.equals( "quit" ) || (count > limit)) ) { . . . }