ビット演算子とはプログラム言語が、開発者にバイナリーデータ(2進数表記)のビット処理を表現するためにシフト演算子と共に用意された構文の1つです。
ビット演算子は、整数型(byte,short,int,long)に利用できます。
演算子 | 構文 | 説明 |
---|---|---|
&(ビットAND) | 整数型 & 整数型 | 対比対象の整数型のbit(2進数)の各桁を対比し、 双方の値が「1」の場合、処理結果の同一桁数に「1」を付与する。 |
|(ビットOR) | 整数型 | 整数型 | 対比対象の整数型のbit(2進数)の各桁を対比し、 どちらかの値が「1」の場合処理結果の同一桁数を「1」を付与する。 |
^(ビットXOR) | 整数型 ^ 整数型 | 対比対象の整数型のbit(2進数)の各桁を対比し、 双方値が一致する場合には、同一桁数を「0」を付与する。 不一致の場合には、「1」を付与する。 |
~(ビットNOT) | ^ 整数型 | bit(2進数)の反転処理です。 bitの「0」を「1」に、「1」を「0」に変換して処理結果とする。 |
論理演算子サンプル
byte a = 0b00010101;
byte b = 0b00111010;
System.out.println(Integer.toBinaryString( a ) );
System.out.println(Integer.toBinaryString( b ) );
byte resultAnd = (byte) (a & b);
System.out.println(Integer.toBinaryString( resultAnd ) );
byte resultOR= (byte) (a | b);
System.out.println(Integer.toBinaryString( resultOR ) );
byte resultXOR = (byte) (a ^ b);
System.out.println(Integer.toBinaryString( resultXOR ) );
byte resultNOT = (byte) ~a;
System.out.println(Integer.toBinaryString( resultNOT ) );
出力結果
10101
111010
10000
111111
101111
11111111111111111111111111101010
桁数揃え
00010101 a
00111010 b
00010000 a AND b
00111111 a OR b
00101111 a XOR b
11101010 NOT a
桁数を揃えた結果が期待された値になっているかと思います。