비트 연산자

Yeonu·2020년 11월 28일
0

Python 이론

목록 보기
30/30
post-thumbnail

👩‍💻 비트 연산자 사용하기

2진수를 다루는 연산자다.


👉 10진수와 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



👉 2진수 표현 방법

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

0개의 댓글