분류


  • 비트 마스크 알고리즘

설명


어떤 상태를 나타내기 위해 배열을 사용하는 것이 아닌 2의 보수 체계를 이용하여 계산하는 방법

컴퓨터 엔지니어링 측면에서 굉장히 빠른 방법이라고 할 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def show(a):
b = [0] * 32
i = 32
while i > 0:
b[32-i] = 1 if a & (1 << (i-1)) else 0
i -= 1
return b

show(a) # 선택된 원소 보기 (32 bit - int)
a = 0 # 원소 초기화 (0・・・0000)
a = -1 # 모든 원소 선택 (1・・・1111)
a &= ~(1<<i) # 2^i 위치 원소 삭제
a |= (1<<i) # 2^i 위치 원소 선택
a & (1<<i) # 2^i 번째가 선택되었는가?
a ^= (1<<i) # 2^i 번째 원소 토글
(a & -a) # 0이 아닌 마지막 비트 구하기
a &= (a - 1) # 마지막 원소 삭제

참고


https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=ndb796&logNo=221312837477