我正在尝试使用德摩根定律简化以下内容:!(x!=0 || y !=0)
x!=0 是否简化为 x>0?还是我在以下方面错了:
!(x>0 || y>0)
!(x>0) && !(y>0)
((x<=0) && (y<=0))
谢谢。
我正在尝试使用德摩根定律简化以下内容:!(x!=0 || y !=0)
x!=0 是否简化为 x>0?还是我在以下方面错了:
!(x>0 || y>0)
!(x>0) && !(y>0)
((x<=0) && (y<=0))
谢谢。
x!=0 是否简化为 x>0?
不,那不是真的。因为整数是有符号的。
如何简化:
!(x!=0 || y !=0)
?
考虑以下规则:
(第二德摩根定律)
由 1. 表示
!(x!=0 || y !=0) <=> (!(x!=0)) && (!(y != 0))
由 2. 表示
(!(x!=0)) && (!(y != 0)) <=> (x == 0) && (y == 0)
for(int x = -5; x < 5; x++){
for(int y = -5; y < 5; y++){
if(!(x!=0 || y !=0))
System.out.println("True : ("+x+","+y+")");
}
}
DeMorgans Law 规定如下:
!(A & B) = !A | !B (I)
!(A | B) = !A & !B (II)
在您的情况下(II)
适用:!(x!=0 || y!=0)
=> !(x!=0) && !(y!=0)
=>(x==0) && (y==0)
PS:您的问题:“x!=0 是否简化为 x>0?” 可以用“否”回答,除非 x 不能取负值(例如,如果 x 的类型是无符号的)。
x!=0 是否简化为 x>0?还是我在以下方面错了:
x != 0 // reads x does not equal 0; any number BUT 0
x > 0 // reads x is greater than 0; only numbers greater than 0
当你这样写出来时,这两个看起来一样吗?
结合
(x != 0 && x > 0) // any number above 0
(x != 0 || x > 0) // any number BUT 0
在 java 中,整数总是有符号的,因此 x!=0 不一定与 x>0 相同
根据德摩根定律,前两个比较的转换如下。
!(x>0 || y>0) ---> x <= 0 && y <= 0
!(x>0) && !(y>0) ---> !(x <=0 || y <=0)
当我教如何编写 Java do-while循环时,我会解释如何编写终止循环的条件。
例如,如果我想要求用户输入一个必须是 0、1、2 或 3 的值,如果输入值不是(值 >= 0 且值 <= 3),我希望 while 条件继续.
这转换为 while (!(value >= 0) 或 !(value <= 3))。
但是 !(value >= 0) 的意思是 (value < 0),而 !(value <= 3) 的意思是 (value > 3),所以 while 循环写成while (value < 0 || value > 3)。
希望这可以帮助。