코딩 노트

04-3 비트 연산자 본문

C

04-3 비트 연산자

newbyeol 2021. 2. 19. 04:48

1. 비트 연산자 표

<< 연산자와 >> 연산자는 '비트 이동(shift) 연산자'라 해서 비트 연산자와는 성향이 조금 다르지만 흔히 비트 연산자의 범주에 포함시켜 이야기하기 때문에 함께 정리함

2. & 연산자: 비트단위 AND

& 연산은 두 개의 비트가 모두 1일때 1을 반환하는 연산

 

 

3. | 연산자: 비트단위 OR

| 연산은 두 개의 비트 중 하나라도 1이면 1을 반환하는 연산

4. ^ 연산자: 비트단위 XOR

^ 연산은 두 개의 비트가 서로 다른 경우에 1을 반환하는 연산

5. ~ 연산자: 비트단위 NOT

~ 연산은 비트를 0에서 1로, 1에서 0으로 반전시키기 때문에 보수연산이라고도 함.

(MSB도 반전되어 부호마저 바뀜...)

6. << 연산자: 비트의 왼쪽 이동(Shift)

<< 연산자는 두 개의 피연산자를 요구하여 다음의 의미를 갖음.

 

상황에 따라 곱셉과 나눗셈 연산은 비트의 이동 연산으로 대체할 수 있으며, 이는 성능의 향상으로 이어짐

 

7. >> 연산자: 비트의 오른쪽 이동(Shift)

>> 연산자와 << 연산자의 가장 큰 차이점은 비트의 열을 이동시키는 방향에 있음

 

따라서 num1 >> num2 연산을 하였을 때, num2의 크기만큼 num1의 비트 열이 오른쪽으로 이동한 결과가 반환 됨.

 

물론 num1이 양수라면(MSB가 0), 이동으로 인해서 밀려나는 오른쪽의 비트들은 소멸되고 이동으로 인해서 생긴 왼쪽의 빈 자리는 0으로 채워짐. 그러나 num1이 음수라면 CPU에 따라서 달라짐. 음의 값을 유지하기 위해 1을 채우는 CPU도 있고, 음의 값 유지에 상관하지 않고 0을 채우는 CPU도 있기 때문.