본문 바로가기
Study/Python

[Python] 비트 연산

by ngool 2024. 8. 31.

이번 포스트에서는 사람이 사용하는 사칙연산(+, *, /, -)이 아닌, 컴퓨터가 사용하는 연산인 "비트 연산"을 이해해볼 것입니다.

 

컴퓨터의 CPU는 0과 1로 다루어 동작되며, 내부적으로는 비트 연산을 사용하여 덧셈, 뺄셈, 곱셈 등을 계산합니다.

이러한 비트 연산을 파이썬에서 사용하기 위해 비트 연산자그 기능에 대해 알아보도록 해요!


비트 연산자의 종류

  1. AND (&)
  2. OR (|)
  3. XOR (^) 
  4. NOT (~) 
  5. Shift (<<, >>)

AND 연산자 (&)

AND 연산자는 두 비트가 모두 1일 때만 결과가 1이 되며, 그 외의 경우에는 0이 됩니다.

a = 0b1101  # 13
b = 0b1011  # 11
result = a & b  # 0b1001 (9)

OR 연산자 (|)

OR 연산자는 두 비트 중 하나라도 1이면 결과가 1이 되며, 둘 다 0일 때만 결과가 0이 됩니다.

a = 0b1101  # 13
b = 0b1011  # 11
result = a | b  # 0b1111 (15)

XOR 연산자 (^)

XOR 연산자는 두 비트가 서로 다를 때 1이 됩니다.

즉, 하나는 0이고 다른 하나는 1일 때 결과가 1이 됩니다.

a = 0b1101  # 13
b = 0b1011  # 11
result = a ^ b  # 0b0110 (6)

NOT 연산자 (~)

NOT 연산자는 단항 연산자로, 해당 비트를 반전(1을 0으로, 0을 1로)시킵니다.

a = 0b0100  # 4
result = ~a  # 0b1101 (-5)

 

여기서 ~a의 결과는 반전된 비트를 이진수로 표현한 것이며, 이는 2의 보수법을 사용하여 -5로 해석됩니다.

 

이 부분은 2의 보수에 대한 이해가 필요하므로, 자세한 내용은 아래 포스트를 참고하세요!

[Python] 컴퓨터가 음수를 관리하는 방법 (2의 보수)

 

[Python] 컴퓨터가 음수를 관리하는 방법 (2의 보수)

본 포스트에서는 컴퓨터가 음수를 관리하는 방법에 대해 이야기해 볼 것입니다.컴퓨터는 음수를 "2의 보수"로 관리합니다.2의 보수라니.. 굉장히 생소하죠? 2의 보수가 무엇이고, 컴퓨터는 이것

joungnx123.tistory.com


Shift 연산자 (<<, >>)

쉬프트 연산자는 비트들을 좌우로 이동시키는 연산자입니다.

  • 왼쪽 시프트 (<<): 비트를 왼쪽으로 이동시키며, 오른쪽에 빈자리는 0으로 채워집니다.
  • 오른쪽 시프트 (>>): 비트를 오른쪽으로 이동시키며, 왼쪽에 빈자리는 부호 비트로 채워집니다.
a = 0b1101  # 13
result_left = a << 2  # 결과는 0b110100 (52)
result_right = a >> 2  # 결과는 0b0011 (3)

비트 연산의 응용

1. 1 << n

  • 2^n의 값을 갖는다.
  • 임베디드 분야에서 계산을 빠르게 하기 위해 사용된다.

 

2. i & (1 << n)

  • i의 n번째 비트가 1인지 아닌지 확인