C 비트 연산자
비트 연산자는 비트 AND(&
), 비트 제외 OR(^
) 및 비트 포괄 OR(|
) 연산을 수행합니다.
:
equality-expression
AND-expression
&
equality-expression
:
AND-expression
exclusive-OR-expression
^
AND-expression
:
exclusive-OR-expression
inclusive-OR-expression
|
exclusive-OR-expression
비트 연산자의 피연산자는 정수 형식을 가져야 하지만 해당 형식은 다를 수 있습니다. 이러한 연산자는 일반적인 산술 변환을 수행하며, 결과의 형식은 변환 후 피연산자의 형식입니다.
C 비트 연산자는 아래에 설명되어 있습니다.
연산자 | 설명 |
---|---|
& |
비트 AND 연산자는 첫 번째 피연산자의 각 비트를 두 번째 피연산자의 해당 비트와 비교합니다. 양쪽 비트가 모두 1이면 해당 결과 비트는 1로 설정됩니다. 그렇지 않으면 해당 결과 비트는 0으로 설정됩니다. |
^ |
포괄적 비트 OR 연산자는 첫 번째 피연산자의 각 비트를 두 번째 피연산자의 해당 비트와 비교합니다. 한 비트가 0이고 다른 비트가 1인 경우 해당 결과 비트는 1로 설정됩니다. 그렇지 않으면 해당 결과 비트는 0으로 설정됩니다. |
| |
배타적 비트 OR 연산자는 첫 번째 피연산자의 각 비트를 두 번째 피연산자의 해당 비트와 비교합니다. 어느 한쪽 비트가 1이면 해당 결과 비트는 1로 설정됩니다. 그렇지 않으면 해당 결과 비트는 0으로 설정됩니다. |
이러한 선언은 다음 3가지 예제에서 사용됩니다.
short i = 0xAB00;
short j = 0xABCD;
short n;
n = i & j;
이 첫 번째 예제에서 n
에 할당된 결과는 i
(16진수 0xAB00)와 같습니다.
n = i | j;
n = i ^ j;
두 번째 예제에서 포괄적 비트 OR의 결과 값은 0xABCD(16진수)이지만 세 번째 예제의 배타적 비트 OR은 0xCD(16진수)를 생성합니다.
Microsoft 전용
부호 있는 정수에 대한 비트 연산 결과는 C 표준에 따라 구현이 정의됩니다. Microsoft C 컴파일러의 경우 부호 있는 정수에 대한 비트 연산은 부호 없는 정수에 대한 비트 연산과 동일하게 작동합니다. 예를 들어, -16 & 99
는 이진 형식으로 다음과 같이 표현될 수 있습니다.
11111111 11110000
& 00000000 01100011
_________________
00000000 01100000
비트 AND의 결과는 10진수 96입니다.
Microsoft 전용 종료