[개념]
- 진법이란, 특정 숫자 몇개를 사용하여 수를 표시하는 방법이다.
- 윈도우 계산기에는 다음과 같이 프로그래머 전용으로 10진법 수를 입력하면 각기 다른 진법의 수로 변환해주는 기능이 있다.
- 2진수를 16진수로 바꿀 때는 위와 그림과 같이 4자리씩 끊어 10진수로 계산하고, 16진수로 표현하면 된다.
- 2진수를 8진수로 바꿀 때는 3자리씩 끊으면 된다.
[ 10진수를 X진수로 변환 ]
- 내장함수로 변환시키기
print('2진수 : {}'.format(bin(10)))
print('8진수 : {}'.format(oct(10)))
print('16진수 : {}'.format(hex(10)))
'''
2진수 : 0b1010
8진수 : 0o12
16진수 : 0xa
'''
- 변환시킨 X진수의 type은 str임을 코드로 확인해볼 수 있다.
print('2진수 : {}'.format(type(bin(10))))
print('8진수 : {}'.format(type(oct(10))))
print('16진수 : {}'.format(type(hex(10))))
'''
2진수 : <class 'str'>
8진수 : <class 'str'>
16진수 : <class 'str'>
'''
- format을 이용해 10진수를 X진수로 변환할 수 있다.
print('2진수 : {}'.format(format(30,'#b')))
print('8진수 : {}'.format(format(30,'#o')))
print('16진수 : {}'.format(format(30,'#x')))
'''
2진수 : 0b11110
8진수 : 0o36
16진수 : 0x1e
'''
- 또는 다음과 같이도 표현할 수 있다.
print('{0:#b}, {0:#o}, {0:#x}'.format(30, 30, 30))
- 바꾸고자 하는 수가 동일할 때는 한번만 써줘도 된다.
print('{0:#b}, {0:#o}, {0:#x}'.format(30))
#0b11110, 0o36, 0x1e
- #을 쓰지 않으면 어떠한 진법인지를 알려주는 표기가 빠진다.
print('{0:b}, {0:o}, {0:x}'.format(30))
#11110, 36, 1e
단, 이때도 type은 여전히 str 이다.
[ X 진수를 10진수로 변환해보자. ]
- int( 'X진수', X )를 써서 10진수로 바꿔줄 수 있다.
print('2진수(0b11110) -> 10진수 ({})'.format(int('0b11110',2)))
print('8진수(0o36) -> 10진수 ({})'.format(int('0o36',8)))
print('16진수(0x1e) -> 10진수 ({})'.format(int('0x1e',16)))
'''
2진수(0b11110) -> 10진수 (30)
8진수(0o36) -> 10진수 (30)
16진수(0x1e) -> 10진수 (30)
'''
- X진수를 적을 때 어떠한 진법인지 알려주는 표기를 빼고 적어도 괜찮다.
print('2진수(0b11110) -> 10진수 ({})'.format(int('11110',2)))
print('8진수(0o36) -> 10진수 ({})'.format(int('36',8)))
print('16진수(0x1e) -> 10진수 ({})'.format(int('1e',16)))
'''
2진수(0b11110) -> 10진수 (30)
8진수(0o36) -> 10진수 (30)
16진수(0x1e) -> 10진수 (30)
'''
[ X진수에서 X진수로 변경하여 보자 ]
print('2진수(0b11110) -> 8진수 ({})'.format(oct(0b11110)))
# 2진수(0b11110) -> 8진수 (0o36)
파이썬 내장 함수를 사용하면 된다.
'기초 수학' 카테고리의 다른 글
[기초 수학] 등비 수열 (0) | 2022.04.27 |
---|---|
[기초수학] 등차 수열 (0) | 2022.04.26 |
[기초수학] 최소공배수 (0) | 2022.04.26 |
[기초수학] 유클리드 호제법 (0) | 2022.04.26 |
[기초수학] 최대공약수 .feat ( sort와 sorted 차이 알아두기 ) (0) | 2022.04.26 |