論理演算の種類には下記があります。
AND(論理積):どちらの条件も満たす
真偽値表
入力A | 入力B | 論理演算結果 |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
論理演算子は「&」
両方のビットが共に1の場合だけ1になります。
System.out.println(85 & 15);
// 実行結果:5
85=0000 0000 0000 0000 0000 0000 0101 0101
15=0000 0000 0000 0000 0000 0000 0000 1111
05=0000 0000 0000 0000 0000 0000 0000 0101
実行結果=5
OR(論理和):どちらかの条件を満たす
真偽値表
入力A | 入力B | 論理演算結果 |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
論理演算子は「|」
少なくもどちらか一つのビットが1の場合、1になります。
System.out.println(85 | 15);
// 実行結果:95
85=0000 0000 0000 0000 0000 0000 0101 0101
15=0000 0000 0000 0000 0000 0000 0000 1111
95=0000 0000 0000 0000 0000 0000 0101 1111
実行結果=95
NAND(Not AND):ANDの否定
真偽値表は、ANDの反転になります。
入力A | 入力B | 論理演算結果 |
---|---|---|
0 | 0 | 1 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
論理演算子はない模様?
NOR(Not OR):ORの否定
真偽値表は、ORの反転となります。
入力A | 入力B | 論理演算結果 |
---|---|---|
0 | 0 | 1 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 0 |
論理演算子はない模様?
XOR(排他的論理和):ORの重複部分を排除したもの
真偽値表は、「両方とも1」の結果がORと異なります。
入力A | 入力B | 論理演算結果 |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
論理演算子は「^」
どちらかのビット一つだけ1の場合に1になり、両方1の場合と両方0の場合は0になります。
System.out.println(85 ^ 15);
// 実行結果:90
85=0000 0000 0000 0000 0000 0000 0101 0101
15=0000 0000 0000 0000 0000 0000 0000 1111
90=0000 0000 0000 0000 0000 0000 0101 1010
実行結果:90