비트 연산자는 주로 메모리를 효율적으로 관리하거나 서버와 클라이언트 간의 전송하는 패킷을 효율적으로 주고 받아야 하는 경우 고민해볼 수 있다...
C/C++에서 가장 기초인 자료형에 대해 배우게 되는데... 1byte 부터 8byte까지 다양하게 사용이 가능하다...
cout << sizeof(bool); 명령으로 살펴보면 bool 역시 1byte임을 알 수 있다. 게임의 경우 장비에 대한 착용 유무를 확인 한다고 하면 대략 기존 8개 정도(머리, 상의, 하의, 신발, 장갑, 귀걸이 2개 , 목걸이 등등)로 나뉜다...
그렇다면 이 8개를 1byte씩 계산하면 대략 8byte를 사용하지만 4byte int형으로 표현도 가능하다.
우리가 비트의 대한 개념을 배웠다면 숫자 표현이 4byte는 32bit 표현 가능하다.
int형 4byte = 32 bit이므로 비트 표현은 32개 표현 가능..
// Bit 단위로 대입 unsigned int EquipItem = 0; EquipItem |= 1; EquipItem |= 4; // 아이템 존재 유무 확인 for (int i=0; i<32; ++i) { if (EquipItem & (1 << i)) cout << i << endl; }
만약 bool 자료형을 배열로 만들어 사용한다면이라는 생각을 해보게 되었다..
bool EquipItem[8] = {false, };
cout << sizeof(EquipItem) << endl;
사이즈가 궁금해서 일단 출력해 봤더니 8byte가 나온다...
약간의 계산적인 부분이 비트 연산할 때 복잡할거라 생각했지만 이해하고 나니 훨씬 간편하다...
어떤 상황이냐에 따라 코드가 달라질 것이다... 기초는 역시 중요한 것 같다...
기초를 튼튼히 하면 할수록 많은 것들이 보인다...
경력 3년이 될 때까지는 계속 머리속에 기초는 외워야겠다는 생각을 해본다...
'Languages > cplusplus' 카테고리의 다른 글
[MFC] 콤보 박스 사용법 정리 (0) | 2012.08.08 |
---|---|
unix_timestamp 값을 C++ 날짜, 시간으로 변환하기 (0) | 2012.05.30 |
선언과 정의 찾아가기가 안맞을 때 (0) | 2012.01.05 |
#ifndef 와 #pragma의 차이점 (0) | 2011.11.07 |
[C/C++] #define, #ifdef, #ifndef, #endif (0) | 2011.10.21 |