logo

C++의 비트 연산자

C++에는 다양한 연산자가 있습니다. 모든 오퍼레이터에는 특정 기호와 수행할 오퍼레이션이 있습니다. C++에는 다양한 범주의 연산자가 있습니다.

  1. 산술 연산자
  2. 관계 연산자
  3. 논리 연산자
  4. 할당 연산자
  5. 비트 연산자

이번 포스팅에서는 C++의 비트 연산자(Bitwise Operator)에 대해 알아 보겠습니다.



C++ 비트 연산자

비트 연산자는 정수의 비트 수준에서 연산을 수행하는 데 사용되는 연산자입니다. 이 연산을 수행하는 동안 정수는 이진수 시퀀스로 간주됩니다. C++에는 다양한 유형의 비트 연산자가 있습니다.

  1. 비트 AND(&)
  2. 비트별 OR(|)
  3. 비트별 XOR(^)
  4. 비트별 NOT(~)
  5. 왼쪽 시프트(<<)
  6. 오른쪽 쉬프트(>>)

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, 왼쪽 시프트, 오른쪽 시프트 연산자와 같은 다양한 종류의 비트 연산자가 있습니다. 이 작업을 통해 개별 비트를 매우 정확하게 조작할 수 있으며 이는 낮은 수준의 데이터 처리에 필수적입니다.