비트 연산과 비트 플래그

이승덱·2021년 7월 21일
0

CPP

목록 보기
5/70
#include <iostream>

using namespace std;

unsigned char flag; //부호를 없애야 >>을 하더라도 부호비트가 딸려오지 않음.

int main()

{

#pragma region 비트연산

 //비트연산

 //비트 단위의 조작이 필요할 때

 //- 대표적으로 BitFlag

 //- bitwise not

 // 단일 숫자의 모든 비트를 대상으로 0은 1, 1은 0으로 바꿈

 //& bitwise and

 //두 숫자의 모든 비트 쌍을 대상으로 and연산

 //| bitwise or

 //두 숫자의 모든 비트 쌍을 대상으로 or연산

 //^ bitwise xor

 //두 숫자의 모든 비트 쌍을 대상으로 xor연산

 

 //<< 비트 좌측 이동

 //비트열을 N만큼 왼쪽으로 이동

 //왼쪽의 넘치는 N개의 비트는 사라짐.

 //오른쪽의 새로운 N개의 비트는 모두 0

 //*2를 할 때 자주 보이는 패턴

 //>> 비트 우측 이동

 //비트열을 N만큼 오른쪽으로 이동

 //오른쪽의 넘치는 N개의 비트는 버림.

 //왼쪽 생성되는 N개의 비트는

 //- 부호 비트가 존재 할 경우 부호 비트를 따라감 (부호있는 정수라면 이 부분을 유의)

 //- 아니면 0

 //실습

 //0b0000 [무적][변이][스턴][에어본]

 //무적 상태로 만든다.

 flag = (1<<3);

 //변이상태를 추가함 ( 무적+변이)

 flag |= (1 << 2);

 //무적 상태인지 확인을 하고 싶은 경우.

 cout<<(flag & (1 << 3))<<endl;

 //무적이거나 스턴 상태 인지 확인을 하고 싶은 경우

 cout << ((flag & 0b1010)) << endl;

 cout << (int)flag << endl;

#pragma endregion

}
profile
공부 기록용 블로그입니다

0개의 댓글