[정보처리기사] 정처기 실기 매크로, 비트연산
비트연산
비트연산자 종류
기호 | 의미 | 예 |
& | 비트 논리곱 (AND) | 5 & 3 |
| | 비트 논리합 (OR) | 5 |3 |
^ | 비트 배타적 논리합 (XOR) | 5 ^ 3 |
~ | 비트 NOT | ~5 |
>> | 비트값을 우측으로 이동 | 5>>3 |
<< | 비트값을 좌측으로 이동 | 5<<3 |
✅ AND : 두 개가 참일 때 참
| 5 & 3 계산 하려면 10진법 숫자를 2진법으로 먼저 바꿔주어야 합니다.
| 0 1 0 1
| 0 0 1 1
| 둘 다 참(1)인 경우는 0 0 0 1 입니다. (1)
✅ OR : 둘 중에 하나라도 참이면 참
| 0 1 0 1
| 0 0 1 1
| 둘 중에 하나라도 참인 경우는 0 1 1 1 입니다. (7)
✅ XOR : 두 개가 틀려야 참인 것
| 0 1 0 1
| 0 0 1 1
| 두 값이 틀려야 참이므로 0 1 1 0 입니다. (6)
✅ NOT :
| 예시로 ~5 값이 양수라면 +1 한 후 부호를 바꿔주시면 됩니다. -6
| ~-5값이 음수라면 -1 한 후 부호를 +로 바꿔주면 됩니다. +4
✅ 시프트 연산 ( << , >> )
| << , >> 연산자는 피연산자의 비트열을 왼쪽, 오른쪽으로 지정한 자리수만큼 이동시키는 연산자입니다.
| 5<<3 도 마찬가지로 우선 5라는 숫자를 2진법으로 변경 해서 0101 이라는 값을 찾은 후
| 0101000 이 됩니다. 다시 10진법으로 계산하게 되면 40이 됩니다.
매크로
반복적인 일들을 쉽게 하기 위해 만들어 놓은 것.
| #define N 10
| #define SQR(X) X*X
✅ 매크로 (define) 선언 방법
변수 처럼 선언 = N 10
함수 처럼 선언 (인자를 받음) = SQR(X) X*X
#define N 10
#define SQR(X) X*X
SQR(N);
SQR(N+2);
▶️
| SQR(N) -> SQR(10) -> 10 * 10 -> 100
| SQR(N+2) 이 부분은 일반 함수랑 다르게 계산 되어야 합니다.
| N+2 가 그대로 X가 되기 때문에 N+2 * N+2 가 됩니다.
| 10 + 2 * 10 + 2 식이 되는 것이고, 연산자 우선순위에 의해서 10 + 20 + 2 가 되고, 차례로 더하면 32가 됩니다.
| * 함수처럼 생각하면 안되고 매크로 일때만 N+2 가 그대로 올라가야 하는 것이 중요합니다.
📢