이번 글은 특정 알고리즘에 대한 설명이라기보다는, 수학/정수론 문제를 풀 때 꽤나 자주, 유용하게 쓰이는 여러 가지 비트연산들에 대해 설명하고자 합니다. 들어가기에 앞서, 비트 연산자 &(and), |(or), ^(xor), ~(not), (right shift)에 대해 알고 계시면 좋습니다. 간단한 예로, n개 버튼 중 어떤 m개의 버튼을 눌러보는 모든 경우의 수를 시도해보아야 하는 상황에 대해 생각해 봅시다. 백준 N과 M 시리즈 풀이처럼, 아래와 같이 재귀함수로 구현할 수 있습니다. 더보기 #include using namespace std; bool button[20];//0~n-1, n=0;i--)printf("%d",button[i]);//n번째 버튼부터 순서대로 출력. printf("\n")..