출처: https://meyouus.tistory.com/64 [정보 공유 - For Me For You For Us]
본문으로 바로가기

비트연산자 bin()에 대하여

category Python 공부하기 2020. 12. 1. 16:07

이번에는 비트연산자 bin()에 대해 알아보도록 하겠다:

>>> 0b1010
10
>>> bin(0b1010)
'0b1010'
>>> bin(0b1010 & 0b100101)
'0b0'
>>> bin(0b1010 | 0b100101)
'0b101111'
>>> bin(0b1010 ^ 0b100101)
'0b101111'
>>> bin(~0b1010)
'-0b1011'
>>> bin(0b101010 >> 1)
'0b10101'
>>> bin(0b101010 << 2)
'0b10101000'


여기서 5개의 연산자의 종류를 볼 수 있다.


AND 연산자 (&)

&연산자의 경우 자릿수의 숫자가 1이면 1을 출력하고, 아니라면 0을 출력한다. 위의 예시의 경우, 두 자릿수가 같이 1인 경우는 없으므로 단순 '0b0'을 출력한다


OR 연산자 (|)

| 연산자의 경우 자릿수의 숫자가 하나라도 1이면 1을 출력하고, 둘 다 1이 아닐 경우에는 0을 출력한다. 위의 예시의 경우, 두 자릿수가 동시에 0인 경우를 빼고는 모두 1을 출력하여 '0b101111'을 출력한다.


XOR 연산자 (^)

^ 연산자의 경우 각 자릿수를 비교하여 숫자가 서로 다르다면 1을, 같다면 0을 출력한다. 위의 예시의 경우, 두 자릿수가 같은 경우는 0일때 빼고는 없으므로 '0b101111'을 출력한다.


NOT 연산자 (~)

~ 연산자는 매우 특이한 경우이다:

  1. 0b1010 (10) --(1)
  2. 0b0101 --(2): (1)의 보수(비트를 반전시켜 얻는수)
  3. 0b1010 --(3): (2)의 보수
  4. 0b1011 --(4): (2)에 1을 더한 수이다.
  5. -0b1011 --(5): (4)의 음수이다.

이 계산과정을 통해 NOT 연산자는 계산한다.


SHIFT 연산자 (<< 또는 >>)

<< 또는 >> 연산자는 한칸씩 옮기는 것이라고 생각하면 된다. 위의 예시의 경우 bin(0b101010 >> 1) 는 한칸을 오른쪽으로 옮기는 것이다. 즉, 2로 나누는 경우다. bin(0b101010 << 2) 는 두칸을 왼쪽으로 옮기는 것이다. 2의 제곱을 곱하는 경우라고 생각하면 된다.



이번에는 bin() 비트연산자에 대해 알아보았다. 다른 제곱수는 모르겠지만 이를 통해 2진법의 숫자는 보다 더 편리하게 사용할 수 있다.