본문 바로가기
Problem Solving/SW Expert Academy

Bit operation & Bit mask

by 사향낭 2022. 1. 18.

 

Bit operation을 이용해 다른 변수 선언 없이 swap 하는 방법

 

void swap(int *a, int *b) {
  *a ^= *b;
  *b ^= *a;
  *a ^= *b;
}

 

 

비트를 이용하여 쉽게 set을 나타낼 수 있다.

 

i번째 원소가 set에 포함되어 있는지 확인하려면 set을 의미하는 값의 i번째 bit이 켜져 있는지를 확인하는 것이다.

 

int나 long long 등의 자료형들이 가질 수 있는 bit 개수를 고려하고 구현하면 된다.

 

 

 

응용으로는 bit mask + dp 문제가 있다.

 

 

아주 강력한 방법이지만 자료형의 크기 때문에 가질 수 있는 상태가 제한된다.

 

array 형태로 만들면 확장 가능할 듯. (쓸 일이 있을까?)

 

int array[10];

/*
array[0]: 0번부터 31번 원소까지
array[1]: 32번부터 63번 원소까지
...
*/

댓글