6

DeMorgan の法則を使用して以下を単純化しようとしています。(x!=0 || y !=0)

x!=0 は x>0 に単純化されますか? または、次の点で間違っていますか?

 !(x>0 || y>0)
 !(x>0) && !(y>0)
 ((x<=0) && (y<=0))

ありがとう。

4

6 に答える 6

6

x!=0 は x>0 に単純化されますか?

いいえ、そうではありません。整数は署名されているためです。


単純化する方法: !(x!=0 || y !=0)?

このルールを考慮してください:

  1. ここに画像の説明を入力(第二のド・モルガンの法則)

  2. ここに画像の説明を入力

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+")");
    }
}
于 2013-11-18T09:04:46.107 に答える
3

ドモルガンズ法は次のように述べています。

!(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 の型が符号なしの場合) を除き、「いいえ」と答えることができます。

于 2013-11-18T09:07:22.690 に答える
1

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

このように書くと、この2つは同じに見えますか?

組み合わせた

(x != 0 && x > 0) // any number above 0
(x != 0 || x > 0) // any number BUT 0
于 2013-11-18T09:01:53.423 に答える
1

Java では整数は常に符号付きであるため、x!=0 が x>0 と同じであるとは限りません。

于 2013-11-18T09:02:54.913 に答える
0

De' Morgan の法則に従った最初の 2 つの比較の変換は次のとおりです。

 !(x>0 || y>0)        --->      x <= 0 && y <= 0

 !(x>0) && !(y>0)     --->      !(x <=0 || y <=0)   
于 2013-11-18T09:11:16.353 に答える