비트마스킹은 이진법을 이용하여 적은 메모리로 데이터를 저장하는 기법이다
int arr[20]에 0 또는 1의 데이터를 저장하느니, 20자리의 이진수 숫자 하나에 비트 하나당 0, 1의 값으로 데이터를 저장하는 것이 훨씬 이득일 것이다.
int bitmask = 0; // 초기화
// [ n번째 값 1로 만들기 ]
bitmask |= (1 << n);
// [ n번째 값 0으로 만들기 ]
bitmask &= ~(1 << n);
// [ n번째 값 체크하기 ]
int check = (bitmask & (1 << n)); // 1이라면 1 << n을 반환, 0이라면 0 반환
// [ 1부터 n까지 모든 값 1로 채우기 ]
bitmask = (1 << (n + 1)) - 1;
// [ 모든 값 0으로 채우기 ]
bitmask = 0;
// [ n번째 값 0이면 1로, 1이면 0으로 바꾸기 ]
if(bitmask & (1 << n) == 0) {
bitmask |= (1 << n);
}
else {
bitmask &= ~(1 << n);
}
'개발 일반 > 알고리즘' 카테고리의 다른 글
숫자 배열에서 두 번째로 큰 값 찾기 (0) | 2022.06.18 |
---|