Java @ mock

ビット演算子

最終更新:

Bot(ページ名リンク)

- view
管理者のみ編集可

ビット演算子


Javaにおいてビット演算子とはビット単位の操作を行うための演算子です。
ビット演算子には以下の演算子を使います。

ビット演算子 使用例 機能
>> A >> B Aを右にBビットシフト
<< A << B Aを左にBビットシフト
>>> A >>> B Aを右にBビット論理シフト
& A & B AとBについてビットごとのAND
| A | B AとBについてビットごとのOR
^ A ^ B AとBについてビットごとの排他的OR
~ ~A Aについてビットごとの反転

ビット演算子 : bit operator // bitwise operator
bit          : ビット、2進数(binary number)の単位【語源】binary digitの略
bitwise      : ビット単位の、ビット位置の、ビットごとの
binary       : 2値の、2進法の
digit        : (アラビア)数字、〔数字の〕けた
らしいです。



ビット演算子 使用例 1

BitOperatorSample1.java
class BitOperatorSample1 {
	
	public static void main([[String]][] args) {
		
		// 0001 0000
		[[byte]] byteOperand = 16;
		byte shiftOperand = 2;
		
		// 0001 0000 → 0000 0100
		System.out.println("byteOperand >> shiftOperand : " + (byteOperand >> shiftOperand));
		
		// 0001 0000 → 0100 0000
		System.out.println("byteOperand << shiftOperand : " + (byteOperand << shiftOperand));
		
	}
}

実行結果
C:\java>javac BitOperatorSample1.java

C:\java>java BitOperatorSample1
byteOperand >> shiftOperand : 4
byteOperand << shiftOperand : 64



ビット演算子 使用例 2


BitOperatorSample2.java
class BitOperatorSample2 {
	
	public static void main(String[] args) {
		
		// 1111 1111 1111 1111 1111 1111 1111
		[[int]] intOperand = -1;
		
		/*
		 * 1111 1111 1111 1111 1111 1111 1111 → 0011 1111 1111 1111 1111 1111 1111 1111
		 * (2の30乗-1=1073741823)
		 */
		System.out.println("intOperand >>> 2 : " + (intOperand >>> 2));
	}
}

実行結果
C:\java>javac BitOperatorSample2.java

C:\java>java BitOperatorSample2
intOperand >>> 2 : 1073741823



ビット演算子 使用例 3

BitOperatorSample3.java
class BitOperatorSample3 {
	
	public static void main(String[] args) {
		int intOperand1 = 19;
		int intOperand2 = 21;
		
		System.out.println(intOperand1 + "      : " + Integer.toBinaryString(intOperand1));
		System.out.println(intOperand2 + "      : " + Integer.toBinaryString(intOperand2));
		System.out.println("19 & 21 : " + Integer.toBinaryString(intOperand1 & intOperand2));
		System.out.println("19 | 21 : " + Integer.toBinaryString(intOperand1 | intOperand2));
		System.out.println("19 ^ 21 : " + Integer.toBinaryString(intOperand1 ^ intOperand2));
		System.out.println("~19     : " + Integer.toBinaryString(~intOperand1));
	}
}	

実行結果
C:\java>javac BitOperatorSample3.java

C:\java>java BitOperatorSample3
19      : 10011
21      : 10101
19 & 21 : 10001
19 | 21 : 10111
19 ^ 21 : 110
~19     : 11111111111111111111111111101100
ウィキ募集バナー