Python의 비트마스킹 소개

Zeeshan Afridi 2023년6월21일
Python의 비트마스킹 소개

이 튜토리얼은 Python의 비트 마스킹에 대해 교육하고 AND, OR, NOT 등과 같은 비트 연산자로 비트 마스킹을 수행하는 방법을 보여줍니다.

Python의 비트마스크 소개

Bitmask는 거의 모든 프로그래밍 언어의 일반적인 개념입니다. 기본적으로 이것은 비트 연산을 돕고 값의 비트를 깊이 이해하고 조작하는 데 도움이 되는 변수일 뿐입니다. 예를 들어 정수 값이라고 합시다.

또한 값을 더 작고 효율적인 버전으로 압축하여 메모리 사용량과 비트 작업을 줄이는 데 도움이 됩니다. 컴퓨터에서 모든 데이터 또는 정보는 하위 수준의 비트에 저장됩니다.

이 비트는 0(False) 또는 1(True)의 두 가지 상태에만 있을 수 있으며 특정 조합에는 특정 의미가 있습니다.

Python의 비트마스크 개념을 이해하기 위한 예를 살펴보겠습니다.

# convert 8 into binary format --> 1000
bindata = format(8, "b")
print(bindata)

출력:

1000

위의 예에서는 10진수인 81000에 해당하는 이진 형식으로 변환했습니다. 이제 우리는 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 등의 정수 유형의 비트 단위 연산을 수행합니다. 각각 특정 사용 사례가 있는 다양한 비트 연산자가 있습니다.

  1. 비트 OR |
  2. 비트 AND &
  3. 비트별 XOR ^
  4. 비트 보수 ~

비트 OR |

OR 연산자는 |로 표시되는 비트 연산자이며 두 개 이상의 값을 비트 단위로 조작하고 하나 이상의 값이 true이면 true를 반환하고 그렇지 않으면 false를 반환합니다.

다음은 두 값에 대한 OR (|)의 기본 구조입니다.

| A | B | A| 비|
| ——— | ——— | ——— |
| 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 연산자는 &로 표시되는 비트 연산자이며 두 개 이상의 값을 비트 단위로 계산하고 두 값이 모두 true인 경우 true를 반환합니다. 그렇지 않으면 false입니다.

두 값에 대한 AND(&)의 기본 구조입니다.

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 ^

^로 표시되는 이항 연산자이며 주어진 두 값이 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 Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn