일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 파워포인트
- 파이썬3
- 윈도우10
- matlab
- python3
- 윈도우11
- git
- 아웃룩
- 파이썬
- pandas
- win32com
- VBA
- 파이썬GUI
- 문자열
- Android
- 엑셀
- 오피스
- 비주얼베이직
- 안드로이드
- Windows11
- Windows10
- 깃
- office
- windows
- Excel
- Outlook
- python
- pyqt5
- pythongui
- html
Appia의 IT세상
파이썬 [Python] 015 진법 변환 (10진수, 2진수, 8진수, 16진수 변환) 본문
오늘은 진법 변환에 대한 방법에 대해서 살펴보고자 합니다. 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
오늘은 간단히 진법에 대해서 살펴 보았습니다. 물론 잘 알고 계신 분들도 있고, 또 잘 모르실 분들도 있었을 것이라고 생각합니다. 하지만, 저의 포스팅이 잘 모르시는 분에게는 지식으로 잘 알고 계셨던 분들에게는 또다른 자극제가 되었으면 좋겠습니다.
'Python > Python 응용' 카테고리의 다른 글
파이썬 [Python] 018 win32com 이용 Excel파일 CSV파일로 저장하기 (0) | 2019.12.29 |
---|---|
파이썬 [Python] 017 win32com 이용하여 Excel 제어하기 (2) | 2019.12.29 |
파이썬 [Python] 016 최대 공약수 최소 공배수 구하기, 유클리드 호제법 (0) | 2019.12.29 |
파이썬[Python] 014 Pywin32 설치 (0) | 2019.12.28 |
파이썬[Python] 013 로또(lotto) 번호 생성기 만들기와 random 모듈 (0) | 2019.12.28 |