포시코딩

파이썬으로 십진수, 이진수 나타내기 본문

Python

파이썬으로 십진수, 이진수 나타내기

포시 2022. 12. 20. 16:13
728x90

내장함수는 몰라! 직접 코드로 구현해봄

def getBinary(n):
  # 얻어낼 이진수의 자릿수를 세팅해준다.
  limit = 5

  result = []
  while n > 0:
    result.insert(0, n%2)
    n = n//2
  # 마지막은 몫으로 더해줘야 하기 때문에 while문 끝난 뒤 아래처럼 몫을 result에 추가
  result.insert(0, n)

  # 십진수 2의 경우 010에서 멈추기 때문에 나머지 앞자리를 0으로 채워준다.
  while len(result) < limit:
    result.insert(0, 0)

  # 얻은 result 리스트를 하나의 문자열로 만든다. 
  # 요소들이 int이기 때문에 map(str, list))를 통해 문자열로 만든 후 join() 진행
  binary = str(''.join(map(str, result)))

  # 얻어낼 자릿수만큼 잘라준다. 
  return binary[-limit:]

print(getBinary(11))

원래 있는 파이썬 내장함수

# 십진수 -> 이진수
format(11, '#b')  # 0b1011
format(11, 'b')  # 1011  접두어 생략

# 이진수 -> 십진수
int('0b1011', 2)  # 11
728x90