비트 연산자에 대한 이해가 없다면, 아래 내용을 이해하기 힘들 수 있습니다.
컴퓨터는 10진수를 계산하고, 다른 언어들을 인식하고 계산하는 것처럼 보일 때가 많지만, 결국은 주어진 데이터를 모두 2진수로 인식한다.
전기신호가 0이면 off
, 1이면 on
인 것을 확인하여 연산하는 것이다.
이와 같이 boolean
또한, true
는 1과 같고, false
는 0과 같다.
우리가 프로그램을 작성할 때, 상태를 확인하기 위해 플래그를 boolean(또는 int)
변수로 생성하여 on, off
를 확인하는 경우가 많은데, 플래그가 많이 필요할 때 모든 플래그를 변수로 생성하여 하나하나 확인하는 방식은 코드가 길어질 뿐더러, 더 많은 연산을 수행해야한다.
하지만, 컴퓨터가 계산하는 방식과 같이 비트로 플래그를 처리하면 int
형 변수(클러스터 환경 32bits
) 하나로 32개의 플래그
를 처리할 수 있다.
(char
형 변수 하나로 8개 플래그
)
개요에서 비트 연산을 통해 플래그를 사용하는 이유를 알았으니, 이제 어떻게 사용해야 하는 지 알아보자
(32비트를 다 적으면 많기 때문에, 8비트인 char
형 예시로 보자)
우선, 모든 플래그
가 false
인 상태로 변수를 선언한다.
코드
char flag = 0; // 8개의 플래그가 모두 false인 상태로 선언
비트
위에서 선언한 flag
변수의 비트를 왼쪽부터 각각 7에서 0번 플래그라고 하자.
그리고 0, 1, 2, 3 플래그를 기상, 아침, 점심, 저녁식사 여부라고 할 때,
일어나서 점심만 먹었다면 0번, 2번 플래그를 켜줘야 한다.