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

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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

PAGE TOP