C++에는 다양한 연산자가 있습니다. 모든 오퍼레이터에는 특정 기호와 수행할 오퍼레이션이 있습니다. C++에는 다양한 범주의 연산자가 있습니다.
- 산술 연산자
- 관계 연산자
- 논리 연산자
- 할당 연산자
- 비트 연산자
이번 포스팅에서는 C++의 비트 연산자(Bitwise Operator)에 대해 알아 보겠습니다.
C++ 비트 연산자
비트 연산자는 정수의 비트 수준에서 연산을 수행하는 데 사용되는 연산자입니다. 이 연산을 수행하는 동안 정수는 이진수 시퀀스로 간주됩니다. C++에는 다양한 유형의 비트 연산자가 있습니다.
- 비트 AND(&)
- 비트별 OR(|)
- 비트별 XOR(^)
- 비트별 NOT(~)
- 왼쪽 시프트(<<)
- 오른쪽 쉬프트(>>)
1. 비트별 AND(&)
비트별 AND 연산은 두 정수 사이에서 수행됩니다. 이는 동일한 위치의 각 비트를 비교하고 결과 비트는 두 해당 비트가 모두 설정된 경우에만 설정(1)됩니다(1). 비트 AND 연산을 수행하는 데 사용되는 기호는 &입니다.
예 : 두 숫자 7과 4 사이에서 비트 단위 연산을 수행합니다. 이진수에서 7은 111로 표시되고 4는 100으로 표시됩니다.
1 1 1 & 1 0 0 ------ 1 0 0>
위의 예에서 볼 수 있듯이 해당 비트(둘 다)가 설정된 비트만 설정됩니다. 따라서 7&4=4
2. 비트 OR(|)
두 정수 사이에 비트별 OR 연산을 수행하면 동일한 위치의 각 비트를 비교하여 해당 비트 중 하나라도 세트(1)되면 결과 비트가 세트(1)됩니다. 비트별 OR 연산을 수행하는 데 사용되는 기호는 |입니다.
예: 두 숫자 7과 4 사이에 비트별 OR 연산을 수행하겠습니다. 이진수에서 7은 111로 표시되고 4는 100으로 표시됩니다.
1 1 1 | 1 0 0 ------ 1 1 1>
위의 예에서 볼 수 있듯이 해당 비트는 적어도 하나의 해당 비트가 설정된 설정 비트입니다. 따라서 7|4=7입니다.
3. 비트별 XOR(^)
두 정수 사이에 비트별 XOR 연산이 수행되면 동일한 위치의 각 비트를 비교하고 해당 비트 중 하나라도 다른 경우 결과 비트가 설정(1)됩니다. 즉, 둘 중 하나는 1이어야 하고 다른 하나는 0이어야 합니다. 비트별 XOR 연산을 수행하는 데 사용되는 기호는 ^입니다.
C# 목록
예: 두 숫자 7과 4 사이에 비트별 XOR 연산을 수행합니다. 이진수에서 7은 111로 표시되고 4는 100으로 표시됩니다.
1 1 1 ^ 1 0 0 ------ 0 1 1>
위의 예에서 볼 수 있듯이 해당 비트는 해당 비트가 다른 설정된 비트입니다. 따라서 7^4=3입니다.
4.비트별 NOT(~)
비트별 NOT 연산은 단일 숫자에 대해 수행됩니다. 현재 비트를 보수로 변경합니다. 즉, 현재 비트가 0이면 결과는 1이 되고 현재 비트가 1이면 0이 됩니다. 기호는 ~로 표시됩니다.
예: 숫자 4에 대해 비트별 NOT 연산을 수행하겠습니다. 숫자 4는 이진수로 100으로 표시됩니다.
~ 1 0 0 ------ 0 1 1>
결과에서 볼 수 있듯이 초기값이 1이었던 비트는 결과적으로 0이 되고 그 반대도 마찬가지입니다. 따라서 숫자 4의 비트별 NOT은 3이 됩니다.
5.왼쪽 시프트(<<)
이 연산자는 정수의 비트를 특정 숫자만큼 왼쪽으로 이동합니다(언급한 대로). 이 왼쪽 시프트 연산은 정수에 시프트된 위치의 2승을 곱하는 것과 같습니다. 왼쪽 시프트 연산자를 나타내는 데 사용되는 기호는 <<입니다.
예: 정수 5가 있다고 가정하고 해당 비트를 2자리만큼 왼쪽으로 이동합니다. 작업은 x << 2로 표시됩니다.
숫자 5는 이진수로 101로 표현됩니다. 비트를 왼쪽으로 이동하기 위해 시작 부분에 0을 추가합니다. 따라서 00000101로 표시됩니다. 이제 모든 비트를 왼쪽으로 두 자리 이동하고 빈 위치를 0으로 채웁니다. 따라서 20인 00010100이 됩니다. 앞서 언급했듯이 숫자를 2비트만큼 왼쪽으로 이동한다는 것은 숫자에 2를 2로 곱한 4를 의미합니다. 5*4 = 20은 위에서 언급한 내용을 보여줍니다.
저장된 프로그램 제어
6.오른쪽 쉬프트(>>)
이 연산자는 정수의 비트를 특정 숫자만큼 오른쪽으로 이동합니다(언급한 대로). 이 오른쪽 시프트 연산은 정수를 시프트된 위치의 2승으로 나누는 것과 같습니다. 왼쪽 시프트 연산자를 나타내는 데 사용되는 기호는>>입니다.
예: 정수 16이 있다고 가정하고 해당 비트를 2자리만큼 오른쪽으로 이동합니다. 연산은 x>> 2로 표시됩니다.
숫자 16은 이진수로 10000으로 표시됩니다. 비트를 오른쪽으로 이동하기 위해 시작 부분에 0을 추가합니다. 따라서 00010000으로 표시됩니다. 이제 모든 비트를 오른쪽으로 두 위치 이동하고 빈 위치를 0으로 채웁니다. 따라서 4인 00000100이 됩니다. 앞에서 언급했듯이 숫자를 2비트 오른쪽으로 이동한다는 것은 숫자를 2로 나누고 2로 올려서 4가 되는 것을 의미합니다. 16*4 = 4는 위에서 언급한 내용을 보여줍니다.
C++ 프로그램 비트 연산자
다음은 주제의 구현입니다.
C++ // C++ Program to demonstrate // Bitwise Operator #include using namespace std; // Main function int main() b; // Bitwise XOR int bitwise_xor = a ^ b; // Bitwise NOT int bitwise_not = ~a; // Bitwise Left Shift int left_shift = a << 2; // Bitwise Right Shift int right_shift = a>> 1; // 비트 연산자 cout의 결과 인쇄<< 'AND: ' << bitwise_and << endl; cout << 'OR: ' << bitwise_or << endl; cout << 'XOR: ' << bitwise_xor << endl; cout << 'NOT a: ' << bitwise_not << endl; cout << 'Left Shift: ' << left_shift << endl; cout << 'Right Shift: ' << right_shift << endl; return 0;>
산출:
AND: 1 OR: 7 XOR: 6 NOT a: -6 Left Shift: 20 Right Shift: 2>
결론
결론적으로 비트 연산자는 이진(비트) 수준에서 작업을 수행하는 데 사용됩니다. C++에는 AND, OR, XOR, NOT, 왼쪽 시프트, 오른쪽 시프트 연산자와 같은 다양한 종류의 비트 연산자가 있습니다. 이 작업을 통해 개별 비트를 매우 정확하게 조작할 수 있으며 이는 낮은 수준의 데이터 처리에 필수적입니다.