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 にまとめてあります