대회하면서 매번 헷갈릴 때가 있어서 정리해두려고 한다.
특정 비트 1로 만들기
x = 12
x |= (1<<0)
print(x) # 13
1과 or 연산을 사용하여 비트 켜기.
특정 비트 0으로 만들기
x = 12 # 1100(2)
x &= ~(1<<3)
print(x) # 4
0과 and 연산을 사용하여 비트 끄기.
특정 비트 토글 시키기
x = 12 # 1100(2)
x ^= (1<<2)
print(x)
xor 연산을 사용하여 비트 토글 하기.
특정 비트 확인하기
타겟을 시프트 연산으로 최하위 비트로 이동 후 1 과 AND
x = 12 # 1100
print((x>>1)&1) # 0
print((x>>2)&1) # 1
0이면 꺼짐
1이면 켜짐
1을 타겟 비트로 위치로 시프트 연산하고 1과 AND
x = 12 # 1100
print(x&(1<<1)) # 0
print(x&(1<<2)) # 4
0이면 꺼짐
0이 아니면 켜짐
'Computer Science > 알고리즘' 카테고리의 다른 글
[대회] KUPC Open contest 후기 (2) | 2024.11.26 |
---|---|
[알고리즘] 이분 매칭 (bipartite matching) (1) | 2024.08.12 |
[알고리즘] KMP 알고리즘 (0) | 2023.09.15 |
[알고리즘] 서로소 집합 알고리즘 (Union-Find) (0) | 2022.09.23 |
[알고리즘] 플로이드 워셜 (0) | 2022.08.30 |