오늘 알아볼 것은 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 |