【Java】ビット操作

すごいあやふや
そのうち理解したら更新

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
//※タグに認識されるため全角

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中