Doby's Lab

Bitmasking 기본적인 연산 본문

PS/Study Note

Bitmasking 기본적인 연산

도비(Doby) 2022. 7. 17. 23:36

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