Python でのビットマスキングの概要
このチュートリアルでは、Python でのビット マスキングについて説明し、AND
、OR
、NOT
などのビット単位の演算子を使用してビット マスキングを実行する方法を示します。
Python でのビットマスクの概要
ビットマスクは、ほぼすべてのプログラミング言語の一般的な概念です。 基本的に、それはビット単位の操作を支援し、値のビットを深く理解し、操作するのに役立つ単なる変数です。たとえば、整数値としましょう。
また、値をより小さく効率的なバージョンに圧縮するのにも役立ち、メモリ使用量とビット操作を削減します。 コンピュータでは、すべてのデータまたは情報が下位レベルのビットに格納されます。
このビットは、0
(False
) または 1
(True
) の 2つの状態のみになり、特定の組み合わせには特定の意味があります。
Python のビットマスクの概念を理解するための例を見てみましょう。
# convert 8 into binary format --> 1000
bindata = format(8, "b")
print(bindata)
出力:
1000
上記の例では、10 進数の整数 8
を 1000
に相当するバイナリ形式に変換しました。 これで、より深い部分で 8
を操作して、そのすべてを操作できます。
ここで、ビットマスキングの概念が登場します。 しかし、最初に、バイナリ ビットを操作する方法の例を見てみましょう。
コード例:
bin_a = int(format(8, "b")) # 1000
bin_b = int(format(1, "b")) # 0001 or 1
# 1000 (8)
# 0001 (1) OR (|) Bitwise Operator
# -----
# 1001 (9)
print(f"bin_ a = {bin_a}")
print(f"bin_ b = {bin_b}")
print(f"The OR (SUM) of bin_a and bin_b = {(bin_a | bin_b)}")
出力:
bin_ a = 1000
bin_ b = 1
The OR (SUM) of bin_a and bin_b = 1001
上記のコード フェンスでは、バイナリ値をビット単位で加算するために使用される、|
として表されるビット演算子 OR
を使用しました。
Python のビット演算子
ビット演算子は、任意の整数型 short
、byte
、long
、char
、int
などのビットごとの操作を実行します。それぞれに特定のユース ケースがあるさまざまなビット演算子があります。
- ビット OR
|
- ビット AND
&
- ビット単位の XOR
^
- ビット単位の補数
~
ビットごとの OR |
OR
演算子は、|
で表されるビット単位の演算子であり、2つ以上の値をビットごとに操作し、少なくとも 1つの値が true
または false
の場合は true
を返します。
以下は、2つの値に対する OR (|)
の基本構造です。
| A
| B
| A | B
|
| ——— | ——— | ——— |
| 1 (真)| 1 (真)| 1 (真)|
| 0 (偽)| 0 (偽)| 0 (偽)|
| 1 (真)| 0 (偽)| 1 (真)|
| 0 (偽)| 1 (真)| 1 (真)|
コード例:
# Bitwise operator OR (|)
a = int(format(5, "b")) # 101
b = int(format(4, "b")) # 100
# 101 (5)
# 100 (4) OR (|) Bitwise Operator
# ------
# 101 (5)
print(f"a = {a}\nb = {b}")
print("a & b = ", (a | b)) # 101
出力:
a = 101
b = 100
a & b = 101
ビット演算 AND &
AND
演算子は &
で表されるビット単位の演算子で、2つまたは複数の値をビットごとに計算し、両方の値が true
の場合は true
を返します。 それ以外の場合、false
。
これは、2つの値に対する AND
(&
) の基本構造です。
A |
B |
A & B |
---|---|---|
1 (真) | 1 (真) | 1 (真) |
0 (偽) | 0 (偽) | 0 (偽) |
1 (真) | 0 (偽) | 1 (偽) |
0 (偽) | 1 (真) | 0 (偽) |
コード例:
# Bitwise operator AND (&)
a = int(format(5, "b")) # 101
b = int(format(4, "b")) # 100
# 101 (5)
# 100 (4) AND (&) Bitwise Operator
# -----
# 100 (4)
print(f"a = {a}\nb = {b}")
print("a & b = ", (a & b)) # 100
出力:
a = 101
b = 100
a & b = 100
ビット単位の XOR ^
これは ^
で表される二項演算子であり、指定された 2つの値が true
または false
のいずれかである場合、false
を返します。 それ以外の場合は、true
を返します。
XOR
演算子の基本構造は次のとおりです。
A |
B |
A ^ B |
---|---|---|
1 (真) | 1 (真) | 0 (偽) |
0 (偽) | 0 (偽) | 0 (偽) |
1 (真) | 0 (偽) | 1 (真) |
0 (偽) | 1 (真) | 1 (真) |
コード例:
# Bitwise operator XOR (^)
a = int(format(7, "b")) # 101
b = int(format(4, "b")) # 100
# 111 (7)
# 100 (4) XOR (^) Bitwise Operator
# ------
# 011 (3)
print(f"a = {a}\nb = {b}")
print("a ^ b = ", (a ^ b)) # 011 or 11
出力:
a = 111
b = 100
a ^ b = 11
ビット単位の補数 ~
ビット単位の補数 (~
) は、NOT
演算子として知られる単項演算子です。 NOT
演算子は、値のビット パターンを反転します。
NOT
演算子の基本構造は次のとおりです。
A |
~A |
---|---|
1 (真) | 0 (偽) |
0 (偽) | 1 (真) |
NOT
(~) の概念を学ぶために、以下の例を見てみましょう。
# Bitwise operator NOT (~)
a = int(format(0, "b"))
print(f"a = {a}")
print(f"The Complement of a = {~a}")
出力:
a = 0
The Complement of a = -1
Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.
LinkedIn