[Python] 비트 연산자
10진수와 2진수 변환하기
# 13(10진수)을 2진수로 변환
print(bin(13)) # 0b1101
# 1101(2진수)를 10진수로 변환
print(0b1101) # 13
# 2진수로 된 문자열 1101을 10진수로 변환
print(int('1101', 2)) # 13
비트 논리 연산자 사용하기
2진수의 각 자릿수를 AND, OR, XOR, NOT 연산을 하는 비트 논리 연산자를 사용해보자.
&
(AND): 두 비트가 모두 1 일때만 1|
(OR): 두 비트 중 하나 이상 1 이면 1^
(XOR): 두 비트가 같으면 0, 다르면 1~
(NOT): 0 이면 1, 1 이면 0
# 비트 AND
print(bin(0b1101 & 0b1001)) # 0b1001
print(13 & 9) # 9 # 10진수 13과 9를 2진수로 바꾸어 AND 계산 후 다시 10진수로 변환
# 비트 OR
print(bin(0b1101 | 0b1001)) # 0b1101
print(13 | 9) # 13
# 비트 XOR
print(bin(0b1101 ^ 0b1001)) # 0b100
print(13 ^ 9) # 4
# 비트 NOT
print(bin(~0b1101)) # -0b1110
print(~13) # 14
비트 연산자 진리표
시프트 연산자 사용하기
시프트 연산자를 사용해 비트의 위치를 이동시킬 수 있다.
시프트 연산자는 <<
또는 >>
다음에 비트를 이동시킬 횟수를 지정한다.
<<
는 비트를 왼쪽으로 이동시키고, >>
는 비트를 오른쪽으로 이동시킨다.
# 비트를 왼쪽으로 2번 이동
print(bin(0b0011 << 2)) # 0b1100
print(0b0011 << 2) # 12
# 비트를 오른쪽으로 2번 이동
print(bin(0b1100 >> 2)) # 0b0011
print(0b1100 >> 2) # 3
비트를 오른쪽으로 이동시켰을 때 1이 들어갈 공간이 없다면 1은 사라진다.
즉, 계속 비트를 오른쪽으로 이동시키면 1은 모두 사라지고 최종 결과는 0b0
이 된다.
ref.
💛 개인 공부 기록용 블로그입니다. 👻