Bitwise operators

Kimbab1004·2024년 6월 22일
0

CPP

목록 보기
7/27
post-thumbnail

비트 연산이란?

비트 연산은 한 개 혹은 두 개의 이진수에 대해 비트 단위로 적용되는 연산이다.

& 둘다 1 이면 1
| 둘중 하나라도 1이면 1 -> 해당 부분 비트 1로 킴 이미 1이면 건들 x
^ 같으면 0, 다르면 1
~ 1을 0으로, 0 을 1로 변환

비트 연산은 기본적으로 비트를 통해 위치를 찾아간다. (1,2,4,8,16,32 ..)
Short, Char과 같이 적은 비트를 가진다면 큰 문제가 없다면 비트 수가 많아지면 계산하기 복잡해지고 팀내 작업간 해당 비트가 어떤걸 의미하는지 알 수 없어 차질이 생길 수 있다.

이 문제를 해결하기 위해 지시문(Define)을 사용한다.

//예시
#define ATT_UP		0x1
#define DEF_UP		0x2
#define DEX_UP		0x4
#define AGI_UP		0x8

#define FIRED		0x10
#define ICED		0x20
#define POISION		0x40
#define BLEED		0x80

//한번에 여러 지시문을 사용하고 싶으면 묶어서 다시 정의해준다.
#define HOLLY		(ATT_UP | DEF_UP | DEX_UP)
  
State |= ATT_UP;

State |= HOLLY;

if (State & ICED)
{
	printf("동상상태이다.");
   
}

// 특정 자리 비트 제거
State &= ~ICED;

&=과 =의 차이점

State &= ~ICED;는 State의 특정 비트만을 0으로 설정하는 반면,
State = ~ICED;는 State를 ~ICED 값으로 완전히 덮어씌웁니다.

0개의 댓글