티스토리 뷰

반응형

라즈베리파이 같은 하드웨어가 인기를 끌면서 (C언어 만큼은 아니지만) 파이썬으로 하드웨어를 제어하는 경우가 늘어나고 있습니다. 하드웨어 쉽게 제어하기 위해서는 비트연산자를 잘 사용할 수 있어야 합니다.


파이썬(Python) 비트 연산

파이썬 비트연산자 사용법 정리 Python 비트연산

비트연산자 종류 - AND(&), OR(|), XOR(^), NOT(~), Shift(<<, >>) 

기본적으로 비트 연산은 1, 0으로 이루어진 2진수를 연산하는 방식이다.

파이썬에서는 0b을 사용하여 2진수를 입력한다. (0o 8진수, 0x 16진수)

bin() 함수는 숫자(정수)를 이진수 문자열로 변환한다. 

(2진수를 눈으로 확인하기 위해 사용, 연산을 하려면 다시 형변환을 해야함)


AND연산(&)

0b10101010 & 0b11000011

AND연산은 각 자릿수를 비교하여 둘다 1이면 1, 아니면 0


OR연산(|)

0b10101010 | 0b11000011

OR연산은 각 자릿수를 비교하여 둘 중 하나만 1이면 1


XOR연산(^)

0b10101010 ^ 0b11000011

XOR연산은 각 자릿수를 비교하여 다르면 1, 같으면 0


NOT연산(~)

~0b10101010

NOT연산은 1은 0으로 0은 1로 변환

0b10101010(170)에 ~ 연산을 하니 -0b10101011(-171)을 리턴했음

고로 ~ 연산 결과는 -(입력값 + 1)이다. (1을 더하고 음수로 변환)

결과풀이과정 

10101010 (170)

01010101 (1의 보수)

10101010 (다시 1의 보수)

10101011 (1을 더하여 2의 보수를 만듬)

-10101011 (음수 기호 추가, -171)

(파이썬은 순수 비트연산이 아닌 정수로 비트연산을 하면서 이렇게 복잡해졌음)


쉬프트연산(<<, >>)

0b10101010 << 2

각 비트를 왼쪽으로 옮긴다.

왼쪽 쉬프트 연산은 2를 곱하는 효과가 있다.

(곱하기, 나누기 보다 쉬프트 연산이 빠르기 때문에 종종 사용됨)


0b10101010 >> 2

각 비트를 오른쪽으로 옮긴다. (오른쪽 부터 값이 버려짐)

오른쪽 쉬프트 연산은 2로 나누는 효과가 있다.



반응형
댓글