Appia의 IT세상

파이썬 [Python] 015 진법 변환 (10진수, 2진수, 8진수, 16진수 변환) 본문

Python/Python 응용

파이썬 [Python] 015 진법 변환 (10진수, 2진수, 8진수, 16진수 변환)

Appia 2019. 12. 28. 21:23
반응형

오늘은 진법 변환에 대한 방법에 대해서 살펴보고자 합니다. Python 실제 진법에 관한 방법들을 지원하고 있습니다. 실제 작업을 하다 보면 다양하게 표현된 숫자들을 마주한 일들이 종종 있습니다. 표현하기 위해서 특정상황에서는 16진수를 많이용합니다. 저도 다음과 같은 상황들문에 진법에 대해서 조 심하게악하게었습니다.

 

예전에 특정 데이터들을 16진수로셀에입되어 있었습니다. 하지, 파이[python]용하여 특정 툴에 엑셀 저장된 값을 입력하는분들을 만들고 있었는데, 툴에서 10진수만 지원하 것이었습니다. 따라서, 관련해서 16진수를 10진수로 변환하여 사용해야 했습니다. 때의 기억을 생각하면서 조금 보충하여 살펴보도겠습니다.

 

예전 기억을 더듬어서 다음과 같은 그림을 본적이 있을 것입니다.  421를 2진수로 변환하는 방법입니다.  421를 2로 나누면 몫은 210이 되고 나머지는 1이 됩니다. 그 몫 210을 다시 2로 나누면 몫은 105가 되고 나머지는 0이 됩니다. 이러식으로 계속적으로 반복하고, 몫과 나머지를 화살표 방향으로 조합하면 바로 110100101이 됩니다. 이 수가 바로 421의 2진수 입니다. 

 

제가 간단하게 2진수 구하는 방법을 나타냈으나, 나머지 수 또한 같은 방법으로 구할 수 있습니다. 

 

 

Python에서 진법을 교환하기 위해서 다음과 같은 방식으로 표현하고 있습니다.

2진수 0b

8진수 0o

16진수 0x

 

 

음과 같은 원리를 가지고있따고 하더라도, 파이[Python]에서장함수로환을 지원하고 있습니다.

 

bin( num ) - 2진수로 변환하여 반환

Oct( num ) - 8진수로 변환하여 반환

hex( num ) - 16진수로 변환하여 반환

int( num ) - 10진수 정수로 변환하여 반환

 

다음 예를 살펴보겠습니다.

 

num=421
print(bin(num))
print(oct(num))
print(hex(num))
print(int(0b110100101))

 

다음과 같은 결과 값이 나온 것을 확인할 있습니다.

 

0b110100101
0o645
0x1a5
421

 

그럼 다음 형태를 한번 살펴 보도록 하겠습니다. 물론 앞에 진수를 의미하는 prefix 없게 생성할 있습니다. 다음 형태를 한번 살펴 보도록 하겠습니다.

 

"{0:x}".format(number)

 

위의 부분을 바탕으로 다음 예시를 한번 작성해 보았습니다. 

 

num = 421
print("{0:o}".format(num))	#8진수교환
print("{0:b}".format(num))	#2진수교환
print("{0:x}".format(num))	#16진수교환

 

실행해보면 다음과 같은 결과을 얻을 수 있습니다. 

 

645

110100101

1a5

 

오늘은 간단히 진법에 대해서 살펴 보았습니다. 물론 잘 알고 계신 분들도 있고, 또 잘 모르실 분들도 있었을 것이라고 생각합니다. 하지만, 저의 포스팅이 잘 모르시는 분에게는 지식으로 잘 알고 계셨던 분들에게는 또다른 자극제가 되었으면 좋겠습니다. 

 

 

반응형
Comments