Notice
Recent Posts
Recent Comments
Link
오븐 노트
[C++] 비트 연산과 비트 플래그 본문
비트 단위의 조작이 필요할 때 사용 (게임 데이터 등)
각 비트에 의미를 부여해서 boolean 처럼 사용 할 수 있다.
Bit Flag | ~ | bitwise not | 단일 숫자의 모든 비트를 대상으로 0은 1, 1은 0으로 뒤바꿈 |
& | bitwise and | 두 숫자의 모든 비트 쌍을 대상으로 and 연산 | |
| | bitwise or | 두 숫자의 모든 비트 쌍을 대상으로 or 연산 | |
^ | bitwise xor | 두 숫자의 모든 비트 쌍을 대상으로 xor 연산 | |
<< | 비트 좌측 이동 시프트 | 비트열을 N만큼 왼쪽으로 이동 왼쪽으로 넘치는 N개의 비트는 버림 새로 생성되는 오른쪽의 비트는 0 |
|
>> | 비트 우측 이동 시프트 | 비트열을 N만큼 오른쪽으로 이동 오른쪽으로 넘치는 N개의 비트는 버림 ※새로 생성되는 왼쪽의 비트는 부호 비트가 존재할 경우 부호 비트를 따라감※ 이외에는 0으로 생성됨 때문에 bit 단위로 무언가를 할 때에는 unsigned로 생성하는 것이 좋음 |
#include <iostream>
using namespace std;
unsigned char flag;
int main()
{
//0b0000 [무적][변이][스턴][에어본]
// 무적 상태
flag = (1 << 3);
// 무적 + 변이
flag |= (1 << 2);
// 무적인가?
// bitmask : (1 << 3) 부분. 가면을 씌워 확인한다
bool invincible = (flag & (1 << 3)) != 0;
// 무적 or 스턴
bool mask = (1 << 3) | (1 << 1);
bool stunOrInvincible = ((flag & 0b1010) != 0);
}
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문 - 인프런 | 강의
C++ 카테고리의 글은 인프런 Rookiss님의 강의를 공부하며 정리하는 내용입니다.
이미 알고 있는 내용도 다시 정리 되어있을 수 있습니다.
모든 글은 제가 공부하기 위해 작성합니다.
'Develop > C++' 카테고리의 다른 글
[C++] 유의사항 (0) | 2022.05.23 |
---|---|
[C++] const와 메모리 구조 (0) | 2022.05.16 |
[C++] 문자와 문자열 (0) | 2022.05.11 |
[C++] 불리언과 부동소수점 (0) | 2022.05.11 |
[C++] 정수 (0) | 2022.05.11 |