포스트

[PS] PS 비트마스킹 알아두기 (cpp)

PS를 하면서 비트마스킹 기록용

i번째 비트가 1인지 확인하기

1
2
3
//1. 
k & ( 1 << (i-1) ); // k > INTMAX 이면 overflow

어떤수 K의 홀짝 판별

1
2
if(k & 1) // 홀수
else // 짝수

어떤 수 x가 1인 비트를 몇 개 갖고 있는가?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//1.
while(x) {
	x = x & (x-1);
	cnt++;
}

//2.
for (int i = 1; i < x; i <<= 1) {
	if(i&x) cnt++; 
}

// 3. c++20 - popcount 함수

// 4. builtin_popcount 함수
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.