すごいあやふや
そのうち理解したら更新
NOT演算子(~)
数値がプラスの場合+1してマイナスにする
マイナスの場合-1してプラスにする
byte x = 10; // 0000 1010
System.out.println(~x); // 1111 0101 // -11
AND演算子(&)
ビット同士を比較して両者が1になっているもののみを1とする
byte x = 10; // 0000 1010
byte y = 6; // 0000 0110
System.out.println(x&y); // 0000 0010 // 2
OR演算子(|)
ビット同士を比較し、どちらかが1になっていものを1とする
byte x = 10; // 0000 1010
byte y = 6; // 0000 0110
System.out.println(x|y); // 0000 1110 // 14
XOR演算子(^)
2つの値のここのビット同士を比較し、
どちらか一方のみが1になっているビットを1とする
byte x = 10; // 0000 1010
byte y = 6; // 0000 0110
System.out.println(x|y); // 0000 1100 // 12
右シフト(>>)
すべてのビットを指定された分だけ右にシフトさせる
左端には最上位ビットと同じ符号が入る
byte x = -10; // 1111 0110
System.out.println(x>>2); // 1111 1101 // -3
符号なし右シフト(>>>)
すべてのビットを指定された分だけ右にシフトさせる
左端には0が入る
byte x = 10; // 0000 1010
System.out.println(x>>>2); // 0000 0010 // 2
左シフト(<<)※タグに認識されるため全角
すべてのビットを指定された分だけ左にシフトさせる
右端には0が入る
byte x = 10; // 0000 1010
System.out.println(x<<2); // 0010 1000 // 40
//※タグに認識されるため全角