일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 알고리즘
- 가끔은_말로
- 세그먼트 트리
- 문자열
- 2023
- back propagation
- 크루스칼
- 우선 순위 큐
- object detection
- 플로이드 와샬
- 미래는_현재와_과거로
- lazy propagation
- BFS
- DP
- 너비 우선 탐색
- c++
- 가끔은 말로
- NEXT
- dfs
- tensorflow
- 백트래킹
- 이분 탐색
- 조합론
- 다익스트라
- pytorch
- 분할 정복
- 자바스크립트
- 회고록
- dropout
- Overfitting
Archives
- Today
- Total
Doby's Lab
Bitmasking 기본적인 연산 본문
Bitmasking
비트 마스킹이란 어떤 집합에 대해 어떤 값이 있는지 없는지에 대한 유무를 효율적으로 확인하는 방법이다.(시간 단축, 간결한 코드, 더 작은 메모리 사용)
어떤 정수형 변수를 선언하여 이를 집합으로 사용하고 N번째 비트를 켜고, 끄고, 켜져 있는지 꺼져있는지 확인을 비트 연산을 통해 하면서 비트 마스킹을 사용할 수 있다.
(궁금한 점이 있는데 int형 변수를 사용하면 범위가 2^31 - 1인 점을 고려하여 30개의 비트 밖에 사용 못 하지 않나?)
아래에는 기본적인 비트마스킹 연산에 대해 정리해두었다. 볼 때마다 왜 이런 것인지에 대해 생각해내기 위해 따로 이유는 적지 않겠다.
n번째 비트 켜기
bit |= (1 << n);
n번째 비트 끄기
bit &= ~(1 << n);
n번째 비트 켜져 있는지 꺼져 있는지 확인
if(bit & (1 << n)) cout << "켜져 있음";
else cout << "꺼져 있음";
n번째 비트 켜져있으면 끄고, 꺼져있으면 켜기
bit ^= (1 << n);
모든 비트 켜기
bit = (1 << 21) - 1;
모든 비트 끄기
bit = 0;
728x90
'PS > Study Note' 카테고리의 다른 글
Naive Factorization Code (0) | 2022.07.30 |
---|---|
Miller-Rabin 소수 판별법 Code (0) | 2022.07.30 |
Extended Euclidean Algorithm (증명 X) (0) | 2022.06.20 |
Euclidean Algorithm Code(반복, 재귀) (0) | 2022.06.18 |
Coordinate Compression 연구일지 (0) | 2022.06.05 |