비트 연산자 개요
비트 연산자는 정수형 데이터의 개별 비트를 조작하는 데 사용됩니다. C++에서 제공하는 비트 연산자는 다음과 같습니다.
1. 비트 AND &
2. 비트 OR |
3. 비트 XOR ^
4. 비트 NOT ~
5. 왼쪽 시프트 <<
6. 오른쪽 시프트 >>
이 연산자들은 비트 수준에서 작동하므로, 효율적인 연산이 가능하고 특정 상황에서 매우 유용합니다.
비트 연산자 상세 설명
비트 AND 연산자 &
두 피연산자의 대응되는 비트가 모두 1일 때만 1을 반환합니다.
비트 OR 연산자 |
두 피연산자의 대응되는 비트 중 하나라도 1이면 1을 반환합니다.
비트 XOR 연산자 ^
두 피연산자의 대응되는 비트가 서로 다를 때 1을 반환합니다.
비트 NOT 연산자 ~
피연산자의 모든 비트를 반전시킵니다.
왼쪽 시프트 연산자 <<
왼쪽 피연산자의 비트들을 오른쪽 피연산자에 지정된 수만큼 왼쪽으로 이동시킵니다.
오른쪽 시프트 연산자 >>
왼쪽 피연산자의 비트들을 오른쪽 피연산자에 지정된 수만큼 오른쪽으로 이동시킵니다.
비트 연산자의 활용
비트 마스킹
특정 비트만 조작하거나 확인하는 기법입니다.
비트 토글
특정 비트의 값을 반전시키는 기법입니다.
비트 플래그
여러 불리언 값을 하나의 정수에 저장하는 기법입니다.
주의사항
- 부호 있는 정수형에 대한 시프트 연산의 결과는 구현에 따라 다를 수 있습니다.
- 비트 연산의 우선순위에 주의해야 합니다. 괄호를 사용하여 의도를 명확히 표현하는 것이 좋습니다.
- 0으로 나누는 것과 마찬가지로, 음수 값이나 피연산자의 비트 수보다 큰 값으로 시프트하는 것은 정의되지 않은 동작을 유발할 수 있습니다.
연습 문제
- 정수를 입력받아 2진수로 표현하는 프로그램을 작성하세요.
- 두 정수를 입력받아 모든 비트 연산의 결과를 출력하는 프로그램을 작성하세요.
- 비트 마스킹을 이용하여 RGB 색상 값을 조작하는 프로그램을 작성하세요. (힌트 : 각 색상은 0-255 범위의 값을 가집니다)
- 주어진 정수가 2의 거듭제곱인지 확인하는 프로그램을 비트 연산을 사용하여 작성하세요.
- XOR 연산을 사용하여 두 변수의 값을 교환하는 프로그램을 작성하세요.
참고자료