[c] 연산자 우선순위와 쉬프트 연산자

프로그래밍에서는 서로 다른 연산자들이 수식 안에서 사용될 때 우선순위에 따라 계산됩니다. 또한, 비트 단위로 연산을 하기 위해 쉬프트(shift) 연산자를 사용할 수 있습니다.

연산자 우선순위

연산자 우선순위는 연산자가 어떤 순서로 계산되는지를 결정합니다. 이를 통해 괄호를 사용하여 특정 연산을 먼저 처리하도록 할 수 있습니다.

다음은 일반적으로 사용되는 몇 가지 연산자의 우선순위입니다.

  1. 괄호: ( )
  2. 단항 연산자: +, -, ++, --
  3. 곱셈, 나눗셈, 나머지 연산: *, /, %
  4. 덧셈, 뺄셈 연산: +, -
  5. 시프트 연산자: <<, >>
  6. 비트 단위 논리 연산자: &, |, ^
  7. 비교 연산자: <, <=, >, >=
  8. 등호 연산자: ==, !=
  9. 논리 NOT: !
  10. 논리 AND: &&
  11. 논리 OR: ||
  12. 삼항 연산자: ? :
  13. 대입 연산자: =, +=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=

쉬프트 연산자

쉬프트 연산자는 비트를 좌나 우로 이동시키는 연산을 수행합니다. 주로 비트 연산 또는 이진수 계산에 사용됩니다.

쉬프트 연산자의 사용 예시는 다음과 같습니다.

#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언어 쉬프트 연산자를 참고하시기 바랍니다.