Programming/python

파이썬 이진수(2진수) 계산하는 방법 - 문자열로 되어있는 이진수를 만났을 때!

방황하는 데이터불도저 2023. 3. 7. 22:30

파이썬의 기본 자료형인 int, float 등의 숫자는 보통 10진법으로 표기된다.
 
2진법 숫자를 사용하고 싶을 때는 문자열로 표기할 수 있다.

 

2진수 문자열 다루는 법

  • 2진법 숫자 표기 앞에 0b라는 표현을 붙여 '0b101'이라고 하면 5를 이진법으로 표현한 것과 동일하다.
  • 문자열은 int(문자열, n진수)로 변환하여 연산할 수 있다.
bin1 = "101"

int(bin1)   # 101

int(bin1, 2)   # 5
  • 2진수 더하는 법
bin1 = "10"
bin2 = "11"

addition = int(bin1,2)+int(bin2, 2)    # 5
type(addition)     # <class 'int'>

bin(addition)   # '0b101'
bin(addition)[2:]   # '101'
type(bin(addition))   # <class 'str'>
  • 일치관계를 확인할 땐, 문자열이 아닌 이진수 표현법으로 확인 가능하다.
5 == "0b101"    # False
5 == 0b101      # True

 

이진수끼리 비교 계산하는 방법

  • 이진수에 대한 비교 operation은 십진 정수에서도 가능하다.
  • 따라서, 이진 형식 문자열을 int() 함수를 이용하여 변환한 다음 아래와 같이 계산해주면 된다.
# 예시
bin1 = "10"
bin2 = "11"

a = int(bin1,2)
b = int(bin2, 2)
a|b           # 3

bin(a|b)      # '0b11'

  *  | (OR) : 1과 1의 비교, 1과 0의 비교에서 1이 나오고, 0과 0의 비교에서는 0이 나온다.

  *  & (AND) : 1과 1의 비교에서만 1이 나오고, 1과 0의 비교, 0과 0의 비교에서는 0이 나온다.