2진수를 다루는 연산자다.
10진수에서 2진수
bin(정수)
2진수에서 10진수
2진수에서 10진수로는 입력 즉시 변환된다. (코드에서 2진수를 직접 입력할 때는 맨 앞에 0b를 붙인다. binary의 b) 문자열일 때는 아래처럼 사용한다.
int('2진수문자열', 2)
>>> bin(13) # 10진수 13을 2진수로 변환
'0b1101'
>>> 0b1101 # 2진수 1101을 10진수로 변환
13
int('2진수문자열', 2)
>>> int('1101', 2) # 2진수로 된 문자열 1101을 10진수로 변환
13
10진수 13을 2진수로 표현하면 1101이다. 여기서 2진수의 자릿수는 낮은 자릿수부터 2의 거듭제곱 순서로 커진다(0부터 시작). 따라서 1101은 8, 4, 2, 1에서 1이 위치한 자릿수가 8, 4, 1이므로 8 + 4 + 1 = 13이다.
AND : a & b로 사용하고 두 값이 모두 1일 때 1이다.
OR : a | b로 사용하고 두 값 중 하나라도 1일 때 1이다.
XOR : a ^ b 로 사용하고 두 값이 서로 다를 때 1이다.
NOT : ~x로 사용하고 0은 1 1은 0이다.
>>> bin(0b1101 & 0b1001)
0b1001
>>> 13 & 9
9
시프트 연산자는 비트의 위치를 이동시킨다. << 또는 >> 다음에 비트를 이동시킬 횟수를 지정한다. <<는 비트를 왼쪽, >>는 비트를 오른쪽으로 이동시킨다.
a << b
a >> b
>>> 0b0011 << 2 # 비트를 왼쪽으로 2번 이동
12
>>> bin(12)
'0b1100'
>>> 0b1100 >> 2 # 비트를 오른쪽으로 2번 이동
3
>>> bin(3)
'0b11'
비트를 오른쪽으로 이동시켰을 때 1이 들어갈 공간이 없다면 1은 사라진다.
계속 비트를 오른쪽으로 이동시키면 1은 모두 사라지고 최종 결과는 0b0이 된다.
출처, 강의
💡 47.1