<< 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 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 HUNGRY 0x001
#define SLEEPING 0x002
#define POISON 0x004
#define TIRED 0x008
#define RIDING 0x010
//16진수이기 때문에 16이 되면 다음 자릿수 1로 증가