반응형

오늘 알아볼 것은 bit 연산이야!

 

bit 연산이 뭘까?

 

 

 

 

 

 8bit = 1byte 인건 알고있지? 

그러면 int 는 4byte = 32bit 같은거야

 

bit 란 데이터를 나타내는 제일 작은 단위야 0과 1로 구성되어 있지 

0과1을 on/off 로 표현한걸 flag🏁 라고도 말해

이걸 사용하면 공간을 좀더 효율적으로 사용하는게 가능해

 

🏁flag 이건 상태를 저장할때 쓰여!

우리가 8가지 상태를 저장할때  bool 을 8번 선언 해서 사용할수도 있을텐데

bit flag 를 사용하면 char 을 하나만 사용해도 8가지 상태를 저장할수 있다는거야

1byte 만 사용해서 8가지 상태 저장을 할수있는거지

 

 

그래서 어떻게 쓰는건데?

 

 

 

 

&   비트 AND 연산  비교되는 인자가 둘다 참일때 참
|   비트 OR 연산  비교되는 인자가 하나라도 참이면 참
^   비트 XOR 연산  비교되는 인자가 서로 다르면 참
~   비트 NOT 연산  인자의 값을 반전시킨다
<< 비트 쉬프트 연산 비트값을 왼쪽으로 지정한 횟수만큼 이동한다.
>> '' 비트값을 오른쪽으로 지정한 횟수만큼 이동한다.

이 표를 보면 if 문의 and , or 문에서 본적있는거 같지?

unsigned char Flag1 = 5; //0000 0101
unsigned char Flag2 = 3; //0000 0011

printf("%d",Flag1 & Flag2); //0000 0001
printf("%d",Flag1 | Flag2); //0000 0111
printf("%d",Flag1 ^ Flag2); //0000 0110
printf("%d",~Flag1); // 1111 1010
printf("%d",Flag1 << 1); // 0000 1010
printf("%d",Flag1 >> 2); // 0000 0001

unsigned char (범위 = 0~255)

이처럼 사용된다 게임에서는 플레이어의 상태 같은걸 만든다고 생각하면 편하다.

 

 

 

'언어 > C++' 카테고리의 다른 글

c++ std::function 사용하기  (0) 2023.01.10
함수 포인터! (Function Pointer)!  (0) 2021.07.13
인라인 함수(Inline Function)  (0) 2021.06.15
네임스페이스  (9) 2021.05.18
call by reference/call by value/call by address  (0) 2021.05.03

+ Recent posts