排他的論理和
日本語 | 排他的論理和 |
英語 | XOR、EOR、exclusive or |
ふりがな | はいたてきろんりわ |
フリガナ | ハイタテキロンリワ |
2つの真偽値のうち、「真」同士もしくは「偽」同士であれば「偽」を、それ以外は「真」を返す論理演算。
論理演算のひとつ。
一致していれば「偽」、異なれば「真」を返すひねくれた演算。この「異なれば」という点から「排他的」な論理和という名前が付けられている。
ただし「論理和」に大きな意味はなく、排他的論理和は「排他的論理積」と呼ばれることもある。
英語での略称は「eXclusive OR」の略として「XOR演算」と言われる事が多いが、希に「Exclusive OR」の略として「EOR」と書かれることもある。
排他的論理和は、論理和の結果から、論理積の結果を引いた値でもある。
Javaでは、boolean型での排他的論理和を計算する演算子は存在しない。
排他的論理和は、論理和と論理積を用いると「( bL OR bR ) AND ( NOT bL OR NOT bR )」と記述できるため、||演算子と&&演算子を使用して「( bL || bR ) && ( !bL || !bR )」で計算できる。
また、ビット単位での排他的論理和は^演算子を用いて計算できる。
論理演算のひとつ。
一致していれば「偽」、異なれば「真」を返すひねくれた演算。この「異なれば」という点から「排他的」な論理和という名前が付けられている。
ただし「論理和」に大きな意味はなく、排他的論理和は「排他的論理積」と呼ばれることもある。
英語での略称は「eXclusive OR」の略として「XOR演算」と言われる事が多いが、希に「Exclusive OR」の略として「EOR」と書かれることもある。
排他的論理和は、論理和の結果から、論理積の結果を引いた値でもある。
Javaでは、boolean型での排他的論理和を計算する演算子は存在しない。
排他的論理和は、論理和と論理積を用いると「( bL OR bR ) AND ( NOT bL OR NOT bR )」と記述できるため、||演算子と&&演算子を使用して「( bL || bR ) && ( !bL || !bR )」で計算できる。
また、ビット単位での排他的論理和は^演算子を用いて計算できる。
参考サイト
- (参考サイトはありません)
// Sample.java
public class Sample
{
public static void main( String[] args )
{
// 排他的論理和を計算します。
// 排他的論理和を直接計算する演算子はないため(ビット単位ではあるけど)、
// bL XOR bR = ( bL OR bR ) AND ( NOT bL OR NOT bR )
// という公式を使用します。
boolean bResult;
boolean bL;
boolean bR;
// 真 XOR 真 → 偽
bL = true;
bR = true;
bResult = ( bL || bR ) && ( !bL || !bR );
System.out.println( bResult );
// false
// 真 XOR 偽 → 真
bL = true;
bR = false;
bResult = ( bL || bR ) && ( !bL || !bR );
System.out.println( bResult );
// true
// 偽 XOR 真 → 真
bL = false;
bR = true;
bResult = ( bL || bR ) && ( !bL || !bR );
System.out.println( bResult );
// true
// 偽 XOR 偽 → 偽
bL = false;
bR = false;
bResult = ( bL || bR ) && ( !bL || !bR );
System.out.println( bResult );
// false
// このように、両方とも同じだとfalseが、
// 違うとtrueが返ります。
}
}
public class Sample
{
public static void main( String[] args )
{
// 排他的論理和を計算します。
// 排他的論理和を直接計算する演算子はないため(ビット単位ではあるけど)、
// bL XOR bR = ( bL OR bR ) AND ( NOT bL OR NOT bR )
// という公式を使用します。
boolean bResult;
boolean bL;
boolean bR;
// 真 XOR 真 → 偽
bL = true;
bR = true;
bResult = ( bL || bR ) && ( !bL || !bR );
System.out.println( bResult );
// false
// 真 XOR 偽 → 真
bL = true;
bR = false;
bResult = ( bL || bR ) && ( !bL || !bR );
System.out.println( bResult );
// true
// 偽 XOR 真 → 真
bL = false;
bR = true;
bResult = ( bL || bR ) && ( !bL || !bR );
System.out.println( bResult );
// true
// 偽 XOR 偽 → 偽
bL = false;
bR = false;
bResult = ( bL || bR ) && ( !bL || !bR );
System.out.println( bResult );
// false
// このように、両方とも同じだとfalseが、
// 違うとtrueが返ります。
}
}
// Sample.java public class Sample { public static void main( String[] args ) { // 排他的論理和を計算します。 // 排他的論理和を直接計算する演算子はないため(ビット単位ではあるけど)、 // bL XOR bR = ( bL OR bR ) AND ( NOT bL OR NOT bR ) // という公式を使用します。 boolean bResult; boolean bL; boolean bR; // 真 XOR 真 → 偽 bL = true; bR = true; bResult = ( bL || bR ) && ( !bL || !bR ); System.out.println( bResult ); // false // 真 XOR 偽 → 真 bL = true; bR = false; bResult = ( bL || bR ) && ( !bL || !bR ); System.out.println( bResult ); // true // 偽 XOR 真 → 真 bL = false; bR = true; bResult = ( bL || bR ) && ( !bL || !bR ); System.out.println( bResult ); // true // 偽 XOR 偽 → 偽 bL = false; bR = false; bResult = ( bL || bR ) && ( !bL || !bR ); System.out.println( bResult ); // false // このように、両方とも同じだとfalseが、 // 違うとtrueが返ります。 } }