Java でのビットマスク操作
ビットマスクは、一部のデータのバイナリ表現です。ビットマスキングでは、すべてのデータを 0 や 1 などの 2 桁の数字と見なします。
1
は true
を表し、0
は false
を表すため、これらの 2 桁をブール値として使用することもできます。
Java でのビットマスク操作
ビットマスキングのもう 1つの定義は、数値またはその他のデータをバイナリ表現で視覚化することです。一部のビットは設定
され、その他は未設定
です。ここで、設定
は true
または 1
を意味し、未設定
は false
または 0
を意味します。
バイナリ値 10011
があるとしましょう。ここで、1 番目、4 番目、および 5 番目のビットはセット
であり、2 番目と 3 番目のビットは未設定
です。
例を通してビットマスクを理解しましょう。4つの文字 {w,x,y,z}
のセットがあり、文字列の異なる表現が必要だとします。
4 ビット {_ _ _ _}
のマスクを作成するために、各ビットは、その文字を参照しているかどうかに関する情報を提供します。簡単にするために、バイナリの組み合わせ 1001
は w,z
を意味し、0000
は空の文字列を意味し、1111
は w, x, y, z
を意味します。
ビットとビットマスキングについて理解したので、ビットを操作するために使用されるビット単位の演算子について学習します。
Java のビット単位の演算子
Java のビット単位の演算子は、ビットの操作を実行するために使用されます。これらの演算子は、short、byte、long、char、int などの任意の整数型で使用できます。
さまざまなビット単位の演算子があります。それぞれが異なる目的で使用されます。
これらは次のとおりです。
- ビットワイズ AND(
&
) - ビットワイズ OR(
|
) - ビットワイズ補完(
~
) - ビットワイズ XOR(
^
)
Java のビットワイズ AND(&
)演算子
AND 演算子は、&
で示されるビット単位の演算子です。2つ以上の値を少しずつ計算し、両方の値が true
の場合は true
を返します。それ以外の場合、false
。
1(True) & 1(True) = 1(True)
0(False) & 0(False) = 0(False)
1(True) & 0(False) = 0(False)
0(False) & 1(True) = 0(False)
コード例:
package articlecodesinjava;
public class ArticleCodesInJava {
public static void main(String[] args) {
int a = 3;
int b = 4;
// bitwise AND
// 0011 & 0100=0000 = 0
System.out.println("a & b = " + (a & b));
}
}
出力:
a & b = 0
Java のビットワイズ OR(|
)演算子
OR 演算子も|
で示されるビット単位の演算子ですが、AND(&
)演算子とは異なります。単一の値が true
である場合にのみ、true
を返します。それ以外の場合、false
。
1(True) | 1(True) = 1(True)
0(False) | 0(False) = 0(False)
1(True) | 0(False) = 1(True)
0(False) | 1(True) = 1(True)
コード例:
package articlecodesinjava;
public class ArticleCodesInJava {
public static void main(String[] args) {
int a = 3;
int b = 4;
// bitwise OR
// 0011 & 0100=0000 = 7
System.out.println("a | b = " + (a | b));
}
}
出力:
a & b = 7
Java のビット単位の補数(~
)演算子
ビット単位の補数(~
)演算子は、NOT
演算子とも呼ばれ、ビットパターンを反転させることができます。単一の値で使用されるため、単一の演算子です。
バイナリ番号 10110
があり、ビット単位の補数(~
)演算子でこれを否定したいとします。01001
になります。
0 を 1 に、1 を 0 に反転しました。
~ 1(True) = 0(False)
~ 0(False) = 1(True)
コード例:
package articlecodesinjava;
public class ArticleCodesInJava {
public static void main(String[] args) {
// Initial values
int a = 3, b;
// bitwise complement of a
// a = 011 where b = ~a, b =100
b = ~a;
System.out.println("~a = " + b);
}
}
出力:
~a = -4
Java のビットワイズ XOR(^
)演算子
Java ビットワイズ XOR 演算子は、^
で示されるバイナリ演算子です。
入力バイナリ値が両方とも異なる場合は、true
を返します。ただし、入力値が 0 または 1 のいずれかで同じである場合、結果は false
になります。
1(True) ^ 1(True) = 0(False)
0(False) ^ 0(False) = 0(False)
1(True) ^ 0(False) = 1(True)
0(False) ^ 1(True) = 1(True)
コード例:
package articlecodesinjava;
public class ArticleCodesInJava {
public static void main(String[] args) {
// Initial values
int a = 3;
int b = 4;
// bitwise xor
// 0011 ^ 0100 = 0111 = 7
System.out.println("a ^ b = " + (a ^ b));
}
}
出力:
a ^ b = 7
Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.
LinkedIn