비트 연산

김태훈·2023년 12월 31일
0

C/C++

목록 보기
3/22
post-custom-banner

비트 shift

 <<  lvalue를 rvalue 만큼 왼쪽으로 밀기
 >> lvalue를  rvalue 만큼 오른쪽으로 밀기
 
unsigned char a = 14;
	unsigned char b = 14;
	a <<= 2;   //  2*n 을 곲한 값
	b >>= 3; //   2*n 으로 나눈 몫

#비트 연산-비트 각 자리마다 연산
| -합 두 비트 하나라도 1이면 1
& -곱 두 비트 모두 1이여야 1
^ -xor 같으면0,다르면 1
~ -반전

비트 활용

#define SLEEPING 1
#define HUNGRY	 2
#define BLOOD 	 4
#define POISON	 8
int main()
{
	unsigned char a = 15;
	//비트 추가
	a |= BLOOD;
	a |= POISON;

	//비트 확인
	if (a & POISON)
	{

	}

	//특정 자리비트 제거
	a &= ~POISON;

#define

#define MULTIERROR(x, y)  x* y
#define MULTICORRECT(x, y)  (x)* (y)

	int a= (1 + 2) * (3 + 4);
	int b= MULTIERROR(1 + 2, 3 + 4);
	int c = MULTICORRECT(1 + 2, 3 + 4);
    

#define은 정의 코드가 정의내용 그 자체로 바꿔지는 것이다.

정의코드를 사용할때 그것을 그대로 정의내용으로 바꿔서 생각 해 볼것!

보통 16진수 define을 사용

#define HUNGRY 0x001
#define SLEEPING 0x002
#define POISON	 0x004
#define TIRED	 0x008

#define RIDING  0x010
//16진수이기 때문에 16이 되면 다음 자릿수 1로 증가
profile
복습을 위한 핵심 내용 및 모작
post-custom-banner

0개의 댓글