본문 바로가기
C++

3-2. C++ 비트단위 연산자(shift,AND,OR,XOR)

by kwon5346 2024. 1. 29.
반응형

1. 비트단위 연산자 (Bitwise Operators)

연산자 종류
<< (left shift), >> (right shift)
~(Bitwise NOT), &(Bitwise AND), |(Bitwise OR), ^(Bitwise XOR)
// XOR 연산자는 없지만 Bitwise XOR 연산자는 있다.
  • <<, >> (left shift, right shift)

숫자를 이진수로 바꿔서 출력해주는 bitset library를 사용하면 비트의 변화를 쉽게 확인할 수 있다.

std::bitset<표현할 비트개수>(표현할 숫자(변수))

 

비트와이즈 오퍼레이터를 사용할 때는 일반적으로 unsigned를 사용한다.

signed일 경우 맨앞 비트를 부호비트로 사용하기 때문에 복잡해지는 이유이다.

 

출력결과 left shift를 할때 숫자의 변화에 규칙성이 있었다 .

처음 3이었던 숫자가 left shift를 한번하니까 3 * 2^1, 두번하니까 3 * 2^2, ..

어떤 숫자를 n번shift했다면 2^n 만큼 곱해진 결과가 나오는 규칙이다.

 

즉, 어떤 unsigned int에 2의 n제곱을 곱하고 싶다면,

계산량이 많을때 shift operator를 통하여 훨씬 빠르게 구할 수 있다.

 

right shift는 left shift를 반대로 생각해보면 끝이다.

1번 shift했다면 2로 나눈값이 나올것이고, 2번 shift했다면 2^2로 나눈 값이 나올 것으로 쉽게 예상할 수 있다.

 

 

  •  ~  (Bitwise NOT)

0이 1로, 1이 0으로 반전시키는 오퍼레이터.

 

 

  • &, |, ^,  (Bitwise AND, OR, XOR)

* 이진수를 입력할때엔 비트앞에 0b를 붙이면 된다.

 

AND는 둘다 1이어야 1, OR는 둘중 하나만 1이어도 1, XOR은 둘중 하나만 1일때만 1이 된다.

반응형