ビット演算子 - (2009/03/20 (金) 02:23:59) の1つ前との変更点
追加された行は緑色になります。
削除された行は赤色になります。
*ビット演算子
Javaにおいてビット演算子とはビット単位の操作を行うための演算子です。
ビット演算子には以下の演算子を使います。
#html2(){{{{{{
<table class="mock">
<tr><th>ビット演算子</th><th>使用例 </th><th>機能 </th></tr>
<tr><td>>> </td><td>A >> B </td><td>Aを右にBビットシフト </td></tr>
<tr><td><< </td><td>A << B </td><td>Aを左にBビットシフト </td></tr>
<tr><td>>>> </td><td>A >>> B </td><td>Aを右にBビット論理シフト </td></tr>
<tr><td>& </td><td>A & B </td><td>AとBについてビットごとのAND </td></tr>
<tr><td>| </td><td>A | B </td><td>AとBについてビットごとのOR </td></tr>
<tr><td>^ </td><td>A ^ B </td><td>AとBについてビットごとの排他的OR </td></tr>
<tr><td>~ </td><td>~A </td><td>Aについてビットごとの反転 </td></tr>
</table>
}}}}}}
ビット演算子 : 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
*ビット演算子
Javaにおいてビット[[演算子]]とはビット単位の操作を行うための演算子です。
ビット演算子には以下の演算子を使います。
#html2(){{{{{{
<table class="mock">
<tr><th>ビット演算子</th><th>使用例 </th><th>機能 </th></tr>
<tr><td>>> </td><td>A >> B </td><td>Aを右にBビットシフト </td></tr>
<tr><td><< </td><td>A << B </td><td>Aを左にBビットシフト </td></tr>
<tr><td>>>> </td><td>A >>> B </td><td>Aを右にBビット論理シフト </td></tr>
<tr><td>& </td><td>A & B </td><td>AとBについてビットごとのAND </td></tr>
<tr><td>| </td><td>A | B </td><td>AとBについてビットごとのOR </td></tr>
<tr><td>^ </td><td>A ^ B </td><td>AとBについてビットごとの排他的OR </td></tr>
<tr><td>~ </td><td>~A </td><td>Aについてビットごとの反転 </td></tr>
</table>
}}}}}}
ビット演算子 : 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
表示オプション
横に並べて表示:
変化行の前後のみ表示: