파이썬의 비트마스크, 이진수 연산

KIM 쥬얼리 (vs0610)·2021년 1월 4일
2
post-thumbnail

비트 마스크란

모두 익히 알다시피 컴퓨터는 2진수를 사용한다. 그리고 인간은 10진수를 사용한다. 인간이 쓰는 정수를 이진수와 이진수 연산법을 통해서 문제를 해결하는 기술을 비트 마스크라고 한다.

이진수 연산의 종류

진수의 변환

1️⃣ 10진수를 2진수로 변환하기

bin(13) # '0b1101'

bin 이라는 파이썬 내장함수를 이용한다. 이때 주의할 점으로 str type으로 반환한다는 점이 있다. 파이썬에서 이진수의 경우에는 숫자 앞에 0b가 붙는다.

2️⃣ 2진수를 10진수로 변환하기

int('0b1101',2) # 13

int에 두번째 인자로 오는 2는 앞에오는 인자를 2진수로 인식한다는 뜻이다. 2진수의 0b1101을 10진수로 변환한다는 뜻이다.

3️⃣ and, or, xor, not

0b1101(13)과 0b1001(9)로 예를 들어보도록 하겠다. 네개의 논리 연산자에서는 각 자리수 별로 연산을 진행한다.

and
0b1101 & 0b1001 # 0b1001
각 자리수별로 두 숫자가 모두 1일 때에만 1을 반환한다. 
or
0b1101 | 0b1001 # 0b1101
각 자리수별로 1이 하나라도 있다면 1을 반환한다.(둘다 0일 경우에만 0)
xor
0b1101 ^ 0b1001 # 0b100
각 자리의 숫자가 서로 다를 때 1을 반환한다.
not
~0b1001 # 0b110
1이면 0, 0이면 1을 반환한다.

4️⃣ 시프트연산자( <<, >>)

<< 는 왼쪽으로 옮긴다는 연산자, >>는 오른쪽으로 옮긴다는 연산자이다.

2개의 댓글

comment-user-thumbnail
2021년 1월 5일

유용한 정보 감사합니다~^^

1개의 답글