이번에는 비트연산자 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진법의 숫자는 보다 더 편리하게 사용할 수 있다.