CPP_어소_10_define / 비트 연산자

CJB_ny·2022년 4월 28일
0

CPP_AROTHO

목록 보기
8/83
post-thumbnail

비트 연산자.

비트 단위로 연산이 진행될때 사용되는 연산자이다.

unsigned char byte = 1;
byte << 1;

하게되면 몇이 될까?

2가 된다. => 두배!

사진과 같은 경우

0 0 0 0 1 0 1 0 => 10진수로 10인 경우

을 << 1 왼쪽으로 밀면 어떻게 될까?

"두배"가 되어서 20이 된다.

0 0 0 1 0 1 0 0 => 20

만약

unsigned char byte = 10;
byte <<= 2;

10을 넣어넣고 2칸 밀면??

4배 가된다.

(참고로 비트연산자도 <<=, >>= 가능하다.)

실제로 이상태에서 2칸 밀면

4배인 40이 된다.

byte <<= 3; 은??
8배이다.

byte >>= 1;
은 무슨 말 일까?

그렇지. 오히려 1/2로 줄어들 것이다.

13일 경우는???

마지막 비트가 오른쪽으로 밀려서 소실됨,

그래서

byte >>= 1; 일경우는
2^1으로 나눈 몫에 해당할 것이고
byte >>= 2; 일경우 2^2(4)로 나눈 몫에 해당
byte가 13일 경우
byte >>= 4; 라면
13을 >>2 하면 10진수로 몫이 3이다.

비트 곱(&), 합(|), XOR(^), 반전(~)

이게 비트 단위로 진행할 연산이다.

~는

이런개념이다.

xor => 같으면 0 다르면 1이다.

<정리>


전처리기

C++ 코드에서는 이런 "#"이 붙은 전처리기 부터 수행을 한 후 컴파일러가

코드를 보게된다.

"#define"이라는것이 있는데 ( == 매크로 )

내가 지정한 구문을 특정 숫자로 치환을 해준다.

#define HUNGRY 1

int main()
{

	int food  = HUNGRY;


	return 0;

}

이렇게 되어있을 때 코드가 먼저 수행되기전

#define HUNGRY 1

int main()
{

	int food  = 1;


	return 0;

}

1로 바꾸어 놓고 코드가 이제 수행되는 것이다.

그러면 이거 왜 쓸까?

장점이 두가지있음

define 장점

1) 가독성

2) 유지보수 측면

2) -> HUNGRY로 다 작성했기 때문에

3으로 바꾸더라도 다 바뀐다.
profile
공부 일기장으로 변해버린 블로그 (https://cjbworld.tistory.com/ <- 이사중)

0개의 댓글