본문 바로가기
프로그래밍/C언어

bit연산자 - & | ^ << >> (2)

by 리뷰하는 (게임)프로그래머_리프TV 2010. 3. 8.

<< , >> 연산자에 대해서 살펴 보자.

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