글 개요
파이썬에서 진법 변환하는 방법을 정리를 해볼 생각입니다.
글 본문
일단 진법변환을 이해하기 위해서는 진법이 무엇인지 알아야합니다. 진법은 특정 숫자 몇개를 사용하여 수를 표현하는 방법입니다.
진법
- 2진법 0 과 1 사용
- 8진법 0 1 2 3 4 5 6 7 8 사용
- 10진법 0 1 2 3 4 5 6 7 8 9 10개 사용
- 16진법 0 1 2 3 4 5 6 7 8 9 a b c d e f 16개 사용
이러한 진법들이 존재합니다.
10 진수를 2진수로 변환
10진수 8 를 2진수로 변환하는 법
2로 나누어 떨어질 때 까지 나누어 봅니다. 2로 나누면 4 4를 2로 2 2를 1로 나누면 1000이 나옵니다.
10진수를 8진수로 변환
10진수를 8진수로 변환하는건 어렵지 않습니다. 위 그림 1에서 8로 나누어 떨어질 때 까지 나누면됩니다.
10진수를 16진수로 변환
10진수를 16진수로 변환하는 것도 16으로 나누어 떨어질 때 까지 나누면됩니다.
2진수를 10진수로 변환
2진수를 10진수로 변환하는 방법은 1 에 해당하는 자리끼리 덧셈을 해주시면 됩니다. 예를들어 2의 3승 자리의 1이 있으니 8입니다. 8 나머지는 다 0 이라서 필요없습니다.
8진수를 10진수로 변환
8진수도 2진수처럼 1이 있는 자리에 8의 제곱승으로 표현해주시고 더해주면 됩니다. 예를들어
| 1 | 0 |
8^1 8^0 8^0 *0 =8 10진수
다른 예
| 2 | 1 |
2 * 8^1 1 * 8^0 16 +1 = 17 10진수
| 3 | 1 |
3 * 8^1 1 *8^0 = 24 + 1 = 25 10진수
2진수를 8진수로 변환
2진수를 8진수를 변환하는 방법은 두가지 정도가 있습니다. 2진수를 10진수로 바꿨다가 8진수로 바꾸는 방법
2진수에서 8진수로 바로 변환하는 방법이 존재합니다. 바로 변환하는 방법은 2진수에서 3자리씩 구분하고 빈자리는 0으로 채우는 방법입니다.
| 1 | 0 | 1 | 0 | 1 | 0 | 0 |
위에서 3자리 씩 잘라봅니다.
| 0 | 0 | 1 | / | 0 | 1 | 0 | / | 1 | 0 | 0 | 맨 앞에는 2자리가 비워져있어 0으로 채웠습니다. 1이 있는 자리에 2의 제곱승으로 표현해봅니다.
| 2^2*0 | 2^1*0 | 2^0*1| | 2 ^2*1| 2^1*0|2^0*1| |2^2*1|2^1*0|2^0*1| 각 결과값을 더하지말고 이어주면 됩니다.
1 2 4 = 124 8진수
2진수를 16진수로 변환
2진수를 16진수로 변환하는 방법은 위 처럼 4칸씩 끊어서 해주시면 됩니다.
파이썬 진법 변환
#### 10.진법
#10진수를 2진, 8진, 16진수
#binary: bin(10진수 데이터) 2진 # 0b로 시작하면 2진수다
#octal:oct(10진수 데이터) 8진 # 0o로 시작하면 8진수
#Hexadecimal:hex(10진수 데이터) 16진 # 0x로 시작하면 16진수
# 변환결과는 문자열
# 10진수
nNum = 30
# #2진수
print('2진수: ',bin(nNum), type(bin(nNum)))
# #8진수
print('8진수: ',oct(nNum))
# #16진수
print('16진수: ',hex(nNum))
#
# #format함수 방법
print('2진수: {}'.format(format(nNum, '#b')))
print('8진수: {}'.format(format(nNum, '#o')))
print('16진수: {}'.format(format((nNum, '#x'))))
#format방식
print('{0:#b}, {0:#o}, {0:#x}'.format(nNum))
# 앞에 있는 영어숫자방식이 싫다면
print('2진수: {}'.format(format(nNum, 'b')))
print('8진수: {}'.format(format(nNum, 'o')))
print('16진수: {}'.format(format((nNum, 'x'))))
#
# # x진수를 10진수로 바꾸는 법
print('2진수를 10진수로 표현하는 방법: ', int('0b11110', 2))
print('8진수를 10진수로 표현하는 방법: ', int('0o36', 8))
print('16진수를 10진수로 표현하는 방법: ', int('0x1e', 16))
#
#
#
# # x진수를 x진수로 바꾸는 방법
print('2진수(0b111110) -> 8진수: ', oct(0b111110))
print('2진수(0b111110) -> 10진수: ', int(0b111110))
print('2진수(0b111110) -> 16진수: ', hex(0b111110))
#
#
# # 8진수를 2진수
print('8진수(0o36) - 2진수: ', bin(0o36))
print('8진수(0o36) - 10진수: ', int(0o36))
print('8진수(0o36) - 16진수: ', hex(0o36))
#
#
# # 16진수를 2진수
print('16진수(0x1e) - 2진수: ', bin(0x1e))
print('16진수(0x1e) - 8진수: ', oct(0x1e))
print('16진수(0x1e) - 10진수: ', int(0x1e))
'Python' 카테고리의 다른 글
파이썬 - folium 시각화 2 (0) | 2021.09.29 |
---|---|
파이썬 -folium 지도시각화 (0) | 2021.09.29 |
파이썬 seaborn - 기초문법 (0) | 2021.09.24 |
pandas 기초정리-3 (0) | 2021.09.23 |
파이썬 matplotlib 기초-2 (0) | 2021.09.19 |
댓글