이번에는 비트연산자 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 연산자 (~)
~
연산자는 매우 특이한 경우이다:
- 0b1010 (10) --(1)
- 0b0101 --(2): (1)의 보수(비트를 반전시켜 얻는수)
- 0b1010 --(3): (2)의 보수
- 0b1011 --(4): (2)에 1을 더한 수이다.
- -0b1011 --(5): (4)의 음수이다.
이 계산과정을 통해 NOT
연산자는 계산한다.
SHIFT 연산자 (<< 또는 >>)
<<
또는 >>
연산자는 한칸씩 옮기는 것이라고 생각하면 된다. 위의 예시의 경우 bin(0b101010 >> 1)
는 한칸을 오른쪽으로 옮기는 것이다. 즉, 2로 나누는 경우다. bin(0b101010 << 2)
는 두칸을 왼쪽으로 옮기는 것이다. 2의 제곱을 곱하는 경우라고 생각하면 된다.
이번에는 bin()
비트연산자에 대해 알아보았다. 다른 제곱수는 모르겠지만 이를 통해 2진법의 숫자는 보다 더 편리하게 사용할 수 있다.
'Python 공부하기' 카테고리의 다른 글
staticmethod, classmethod, instancemethod 에 대하여 (0) | 2020.12.10 |
---|---|
파이썬의 f-string에 대하여 (0) | 2020.12.09 |
zip 내장 함수에 대하여 (0) | 2020.11.27 |
isdecimal(), isdigit(), isnumeric()에 대하여 (0) | 2020.11.25 |
Enumerate 함수에 대하여 (0) | 2020.11.25 |