[c] 연산자 우선순위와 쉬프트 연산자
프로그래밍에서는 서로 다른 연산자들이 수식 안에서 사용될 때 우선순위에 따라 계산됩니다. 또한, 비트 단위로 연산을 하기 위해 쉬프트(shift) 연산자를 사용할 수 있습니다.
연산자 우선순위
연산자 우선순위는 연산자가 어떤 순서로 계산되는지를 결정합니다. 이를 통해 괄호를 사용하여 특정 연산을 먼저 처리하도록 할 수 있습니다.
다음은 일반적으로 사용되는 몇 가지 연산자의 우선순위입니다.
- 괄호:
( )
- 단항 연산자:
+, -, ++, --
- 곱셈, 나눗셈, 나머지 연산:
*, /, %
- 덧셈, 뺄셈 연산:
+, -
- 시프트 연산자:
<<, >>
- 비트 단위 논리 연산자:
&, |, ^
- 비교 연산자:
<, <=, >, >=
- 등호 연산자:
==, !=
- 논리 NOT:
!
- 논리 AND:
&&
- 논리 OR:
||
- 삼항 연산자:
? :
- 대입 연산자:
=, +=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=
쉬프트 연산자
쉬프트 연산자는 비트를 좌나 우로 이동시키는 연산을 수행합니다. 주로 비트 연산 또는 이진수 계산에 사용됩니다.
<<
(left shift): 비트를 왼쪽으로 이동시킵니다.>>
(right shift): 비트를 오른쪽으로 이동시킵니다.
쉬프트 연산자의 사용 예시는 다음과 같습니다.
#include <stdio.h>
int main() {
int num = 8; // 0000 1000
printf("Initial value: %d\n", num);
num = num << 2; // 왼쪽으로 2칸 이동
printf("After left shift by 2: %d\n", num);
num = num >> 1; // 오른쪽으로 1칸 이동
printf("After right shift by 1: %d\n", num);
return 0;
}
위 코드는 초기에 num
변수에 8을 대입하고, 왼쪽으로 2칸, 오른쪽으로 1칸 이동한 후의 결과를 출력합니다. 실제로 실행시켜보면 왼쪽으로 이동할 때마다 2배가 되는 것을 확인할 수 있습니다.
자세한 내용은 C언어 쉬프트 연산자를 참고하시기 바랍니다.