Contents
【Java】ビット演算(AND・OR・XOR・NOT)

この記事ではJavaのビット演算ついて解説します。
| 演算子 | 使用例 | 意味 |
|---|---|---|
| & | a & b | a と b の論理積(ビットAND) ※両方が1の場合は1、どちらかが0の場合は0 |
| | | a | b | a と b の論理和(ビットOR) ※どちらかが1の場合は1、両方が0の場合は0 |
| ^ | a ^ b | a と b の排他的論理和(ビットXOR) ※どちらかが1、どちらかが0の場合は1、両方が1または両方が0の場合は0 |
| ~ | ~a | a のビット反転(ビットNOT) ※1を0、0を1に反転する |
| << | a << n | a を 左へ n ビットシフト |
| >> | a >> n | a を 右へ n ビットシフト |
ビット演算(AND)

ビットANDは両方が1の場合は1、どちらかが0の場合は0とします。
int i1 = Integer.parseInt("00000000000000000000000000011001",2);
int i2 = Integer.parseInt("00000000000000000000000000011010",2);
int i = i1 & i2;
System.out.println(Integer.toBinaryString(i));
// 実行結果
11000
ビット演算(OR)

ビット演算ORはどちらかが1の場合は1、両方が0の場合は0とします。
int i1 = Integer.parseInt("00000000000000000000000000011001",2);
int i2 = Integer.parseInt("00000000000000000000000000011010",2);
int i = i1 | i2;
System.out.println(Integer.toBinaryString(i));
// 実行結果
11011
ビット演算(XOR)

ビット演算XORはどちらかが1、どちらかが0の場合は1、両方が1または両方が0の場合は0とします。
int i1 = Integer.parseInt("00000000000000000000000000011001",2);
int i2 = Integer.parseInt("00000000000000000000000000011010",2);
int i = i1 ^ i2;
System.out.println(Integer.toBinaryString(i));
// 実行結果
11
ビット演算(NOT)

ビット演算NOTは1を0、0を1に反転するします。
int i1 = Integer.parseInt("00000000000000000000000000011001",2);
int i = ~i1;
System.out.println(Integer.toBinaryString(i));
// 実行結果
11111111111111111111111111100110
シフト演算

「<<」は左にシフト、「>>」は右にシフトします。
int i1 = Integer.parseInt("00000000000000000000000000011001",2);
int i = i1 << 2;
System.out.println(Integer.toBinaryString(i));
i = i1 >> 2;
System.out.println(Integer.toBinaryString(i));
// 実行結果
1100100
110

Javaの記事の一覧はJava にまとめてあります
