본문 바로가기
programming/Python

파이썬 비트 연산자 bitwise operator

by 개코 - 개발과 코딩 2021. 8. 7.

비트 연산자는 어떤 수를 비트연산하는 것을 말한다. 이진법을 먼저 알면 편하다. 2진수에 대한 계산을 하여 참 거짓을 판단하고 그에 대한 결과수를 반환한다. 비트연산의 사용은 좀 고급진 부분들에 사용되는데 평소에는 잘 사용하지 않는다.

파이썬 비트연산자
파이썬 비트연산자

비트연산자

이진수의 표현을 참과 거짓으로 판별하여 계산하고 결과를 반환한다.

이진법에 대한 이해가 있으면 편하지만 그렇지 않다면 어려울 수 있다.

비트연산은 거의 모든 프로그래밍할 때 사용하지 않아 익숙하지 않을 수 있는데, 이미지 분석, 파일전송, 해시, 암호화, 메모리, 데이터 전송, 파일 검증 등에 사용되며, 이것들이 아니라면 거의 사용하지 않는다.

위에 언급된 것 말고도 문자의 위치나 특정 문자의 추출과 반복과 같은 작업에도 사용된다.

 

종류

기본적으로 6개가 있다.

AND, OR, XOR, NOT, Shift 연산이 있다. shift 연산은 오른쪽 왼쪽 이 있다.

참과 거짓을 판별해 결과로 나온 수를 반환하는데 서로 다른 수의 이진수의 같은 위치에 있는 0 과 1이 같냐 틀리냐에 따라 결과를 반환한다.

이것 때문에 난해할 수 있다.

  • AND
    서로 다른 두 수의 이진법 수를 비교하여 같은 위치에 있는 숫자가 같으면 1 틀리면 0이다.
    숫자가 같더라도 0 이면 0 이다.
  • OR
    서로 다른 두 수의 이진법 수를 비교하여 같은 위치에 있는 숫자가 하나라도 1 이면 1이다.
  • XOR
    서로 다른 두 수의 이진법 수를 비교하여 같은 위치에 있는 숫자가 같으면 0 틀리면 1이다.
  • NOT
    어떤 수의 이진법을 반대로 뒤집는다. 0을 1로 1을 0이다.
  • Left Shift
    이진법으로 변환한 수의 비트를 왼쪽으로 이동시킨다.
  • Right Shift
    이진법으로 변환한 수의 비트를 오른쪽으로 이동시킨다.

 

코드샘플

이진법에 대한 코드샘플은 익숙하지 않아 난해할 수도 있지만 사용법은 어렵지 않다.

이진법으로 변환하여 값을 비교하는 거이 어려운 것이지 코드를 익히는 것은 비교연산자를 사용하는 것과 비슷하다.

vVar_1 = 10
vVar_2 = 15

vBit_1 = bin(vVar_1)
vBit_2 = bin(vVar_2)

print("vVar_1 이진수 변환 - ", vVar_1, vBit_1, type(vBit_1))
print("vVar_2 이진수 변환 - ", vVar_2, vBit_2, type(vBit_2))

vAnd = vVar_1 & vVar_2
vBit = bin(vAnd)
print("AND & : ", vAnd, vBit, type(vAnd))

vOr = vVar_1 | vVar_2
vBit = bin(vOr)
print("OR | : ", vOr, vBit, type(vOr))

vXor = vVar_1 ^ vVar_2
vBit = bin(vXor)
print("XOR ^ : ", vXor, vBit, type(vXor))

vNot = ~vVar_1
vBit = bin(vNot)
print("NOT ~ : ", vNot, vBit, type(vNot))

vLShift = vVar_1 << 2
vBit = bin(vLShift)
print("Left Shift << : ", vLShift, vBit, type(vLShift))

vRShift = vVar_1 >> 2
vBit = bin(vRShift)
print("Right Shift >> : ", vRShift, vBit, type(vRShift))

결과를 보도록 하자.

정수를 이진수로 변환하여 비트연산자를 사용하였다.

이진수변환 부분의 두 수만 판단하면 그만이다.

반응형

댓글