1. 기본

 

 범위

 예시

 10진수

 0 - 9

0,  1, 2, 3, 4 .... 8, 9, 10 ...

 16진수(Hex)

 0 ~ 9, A ~ F 

0,  1, 2 .... 9, A, B ... F, 10, 11 .... 19, 1A, 1B

 8진수(Octal)

 0 ~ 7

 0, 1, 2 .... 6, 7, 10, 11 ....

 2진수(Binary)

 0, 1

 0, 1, 10, 11, 100, 101



2. Python 으로 구현해보기

 1) 내장함수로 구현해보기

  - 소스 코드

if __name__ == "__main__":
num_10 = 236

num_2 = bin(num_10) # 접두어 "0b"가 붙음
num_8 = oct(num_10)
num_16 = hex(num_10)

print("10 -> 2 : ", num_2)
print("10 -> 8 : ", num_8)
print("10 -> 16 : ", num_16)
print("=================")

# int(x, base=10)
print("2 -> 10 : ", int(num_2, 2))
print("8 -> 10 : ", int(num_8, 8))
print("16 -> 10 : ", int(num_16, 16))

  - 결과


 2) 함수 구현해보기.

  - 재귀함수를 사용하여 함수 구현

def convert(num, base):
T = "0123456789ABCDEF"
quotient, remainder = divmod(num, base)

if quotient == 0:
return T[remainder]
else:
return convert(quotient, base) + T[remainder]


if __name__ == "__main__":
num_10 = 236

print(convert(num_10, 2))
print(convert(num_10, 8))
print(convert(num_10, 16))

print("=================")
print(int(convert(num_10, 2), 2))
print(int(convert(num_10, 8), 8))
print(int(convert(num_10, 16), 16))

  - 실행결과



3. 전체 소스

def convert(num, base):
T = "0123456789ABCDEF"
quotient, remainder = divmod(num, base)

if quotient == 0:
return T[remainder]
else:
return convert(quotient, base) + T[remainder]


if __name__ == "__main__":
num_10 = 236

num_2 = bin(num_10) # 접두어 "0b"가 붙음
num_8 = oct(num_10)
num_16 = hex(num_10)

print("10 -> 2 : ", num_2)
print("10 -> 8 : ", num_8)
print("10 -> 16 : ", num_16)
print("=================")

# int(x, base=10)
print("2 -> 10 : ", int(num_2, 2))
print("8 -> 10 : ", int(num_8, 8))
print("16 -> 10 : ", int(num_16, 16))
print("=================")

print(convert(num_10, 2))
print(convert(num_10, 8))
print(convert(num_10, 16))

print("=================")
print(int(convert(num_10, 2), 2))
print(int(convert(num_10, 8), 8))
print(int(convert(num_10, 16), 16))


'프로그래밍 > Python' 카테고리의 다른 글

10진수 n진수로 변환하기.  (0) 2018.07.30
[Basic] 약수  (0) 2018.06.04

+ Recent posts