<< , >> 연산자에 대해서 살펴 보자.
4비트의 0001(1)를 << 할 경우
0010(2)가 되는고
다시 0010(2)를 >>할 경우
0001(1)이 되는 것은 기본적인 것이라 소스코드는 패스.
시프트연산자를 사용하면 좀더 재밋는 일을 할 수 있는데
#include <stdio.h>
void main()
{
bool flag[4];
char bit=0;
flag[0] = true;
flag[1] = true;
flag[2] = true;
flag[3] = true;
if( flag[0] ) printf( "첫번째 상태\n" );
if( flag[1] ) printf( "두번째 상태\n" );
if( flag[2] ) printf( "세번째 상태\n" );
if( flag[3] ) printf( "네번째 상태\n" );
printf( "\n\n" );
bit = 1;
bit = bit | ( bit << 1 );
printf( "%d\n", bit );
bit = bit | ( bit << 1 );
printf( "%d\n", bit );
bit = bit | ( bit << 1 );
printf( "%d\n", bit );
if( bit & 1 ) printf( "첫번째 상태\n" );
if( bit & 2 ) printf( "두번째 상태\n" );
if( bit & 4 ) printf( "세번째 상태\n" );
if( bit & 8 ) printf( "네번째 상태\n" );
}

처럼 bool 타입의 flag를 선언 하는 것 보다
char타입의 비트연산을 사용하여 이를 대신 할 수 있다.
이때에 char의 값을 그 수치 그대로 보기보단, 1byte를 1bit로 보는 것이 더 편하다.
소스 코드는 단순한 예제이기 때문에 큰 의미는 없고,
실제 게임에 적용하기 위해선 조금의 수정은 필요 하겠지만 개념만 이해하면 쉽게 변형이 가능할 듯 하다.
지금 같은 상태는 동시에 여러 상태를 설정하는 것이지만, 조금 바꿔서 특정 상태만 특정 갯수로 설정하는 것도 충분히 가능.
'프로그래밍 > C언어' 카테고리의 다른 글
재귀 호출 (0) | 2010.03.08 |
---|---|
bit연산자 - & | ^ << >> (3) (0) | 2010.03.08 |
bit연산자 - & | ^ << >> (1) (0) | 2010.03.08 |
랜덤함수-rnd()-srand() 사용법 (0) | 2010.03.05 |
삼항 연산자 (0) | 2010.03.05 |