핵심 정리

비트 연산자

비트 연산자는 값을 비트 단위로 연산합니다.

C 언어 비트 연산자
연산자 설명
& 비트 AND
| 비트 OR
^ 비트 XOR (배타적 OR, Exclusive OR)
~ 비트 NOT
<< 비트를 왼쪽으로 시프트
>> 비트를 오른쪽으로 시프트
&= 비트 AND 연산 후 할당
|= 비트 OR 연산 후 할당
^= 비트 XOR 연산 후 할당
<<= 비트를 왼쪽으로 시프트한 후 할당
>>= 비트를 오른쪽으로 시프트한 후 할당

부호 있는 자료형의 비트 연산

부호 있는 자료형의 비트를 오른쪽으로 이동시키면 모자라는 공간은 부호 비트의 값으로 채워집니다. 그리고 비트를 왼쪽으로 이동시키면 부호 비트를 덮어쓰게 되므로 부호가 바뀔 수 있습니다.

1000 0000 (-128)
_________ >> 2
1110 0000 (-32)
0010 0000 (32)
_________ << 2
1000 0000 (-128)

비트 연산자로 플래그 처리하기

플래그의 비트를 조작하거나 검사할 때 사용하는 숫자를 마스크(mask)라고 부릅니다.

플래그 연산 방법
연산 방법 설명
flag |= mask 플래그의 특정 비트를 켬
flag &= ~mask 플래그의 특정 비트를 끔
flag ^= mask 플래그의 특정 비트를 토글시킴
flag & mask 플래그의 특정 비트가 켜져 있는지 검사

연산자 우선순위

각 연산자는 우선순위가 있으며 우선순위가 높은 순서대로 계산됩니다.

C 언어 연산자 우선순위
우선순위 연산자 설명 결합 법칙(방향)
1




x++
x--
( )
[ ]
.
->
(자료형){값}
증가 연산자(뒤, 후위)
감소 연산자(뒤, 후위)
함수 호출
배열 첨자
구조체/공용체 멤버 접근
포인터로 구조체/공용체 멤버 접근
복합 리터럴





2









++x
--x
+x
-x
!
~
(자료형)
*x
&x
sizeof
증가 연산자(앞, 전위)
감소 연산자(앞, 전위)
단항 덧셈(양의 부호)
단항 뺄셈(음의 부호)
논리 NOT
비트 NOT
자료형 캐스팅(자료형 변환)
포인터 x 역참조
x의 주소
자료형의 크기












3


*
/
%
곱셈
나눗셈
나머지



4

+
-
덧셈
뺄셈


5

<<
>>
비트를 왼쪽으로 시프트
비트를 오른쪽으로 시프트


6



<
<=
>
>=
작음
작거나 같음

크거나 같음




7

==
!=
같음
다름


8 & 비트 AND
9 ^ 비트 XOR
10 | 비트 OR
11 && 논리 AND
12 || 논리 OR
13 ? : 삼항 연산자
14











=
+=
-=
*=
/=
%=
<<=
>>=
&=
^=
|=

할당
덧셈 후 할당
뺄셈 후 할당
곱셈 후 할당
나눗셈 후 할당
나머지 연산 후 할당
비트를 왼쪽으로 시프트한 후 할당
비트를 오른쪽으로 시프트한 후 할당
비트 AND 연산 후 할당
비트 XOR 연산 후 할당
비트 OR 연산 후 할당













15 , 쉼표(콤마) 연산자

연산자 우선순위와 괄호

우선순위가 낮은 연산자를 먼저 계산할 때는 괄호로 묶어줍니다.

num1 = (35 + 1) * 2;    // 괄호를 사용하여 35 + 1을 먼저 계산한 뒤 2를 곱함