<청춘> 격정적으로 사는 것

밤을 새고 공부한 다음 날 새벽에 느꼈던 생생한 환희와 야생적인 즐거움을 잊을 수 없다

파이썬 Python

[진수 / 진법] 10진수(decimal) / 2진수(binary) / 8진수(octal) / 16진수(hexadecimal) / 변환 / 파이썬

수학도 2021. 7. 29. 01:42

10진법(decimal)이란?

우리는 일상생활에서 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 10개의 숫자를 사용하여 수를 나타내고 자리가 하나씩 올라감에 따라 자리의 값이 10배씩 커지도록 수를 나타내는 방법을 십진법이라고 한다.

 

십진법으로 나타낸 수 4321

4321
= 4 x 1000 + 3 x 100 + 2 x 10 + 1
= 4 x 10^3 + 3 x 10^2 + 2 x 10 + 1

과 같이 나타낼 수 있다.

 

 

2진법(binary)이란?

0, 1 2개의 숫자를 사용하여 수를 나타내고, 자리가 하나씩 올라감에 따라 자리의 값이 2배씩 커지도록 수를 나타내는 방법을 이진법이라고 한다.

 

십진수를 이진수로 변환하기

십진수를 이진수로 변환하기 위해서는 우선 십진수를 2의 거듭제곱의 합으로 쪼개주어야 한다. 예를 들어 십진수 132의 거듭제곱의 합으로 쪼개면, 다음과 같다.

13
= 8 + 4 + 0 + 1
= 1 x 8 + 1 x 4 + 0 x 2 + 1 x 1
= 1 x 2^3 + 1 x 2^2 + 0 x 2 + 1 x 1

이렇게 쪼개진 식에서 2의 거듭제곱 수를 제외하고 앞의 수인 01만 모아서 나열하면, 2진수로 표현된 숫자 13을 얻을 수 있다.

, 십진수 13은 이진수 1101(2)과 같다.

 

파이썬에는 2진수로 변환해주는 bin() 함수가 존재한다.

 

코드

n = bin(13)
print(n)

 

실행 결과

0b1101

0b2진수를 의미한다.

 

 

8진법(octal)이란?

0, 1, 2, 3, 4, 5, 6, 7 8개의 숫자를 사용하여 수를 나타내고, 자리가 하나씩 올라감에 따라 자리의 값이 8배씩 커지도록 수를 나타내는 방법을 팔진법이라고 한다.

 

십진수를 팔진수로 변환하기

십진수를 팔진수로 변환하기 위해서는 우선 십진수를 8의 거듭제곱의 합으로 쪼개주어야 한다. 예를 들어 십진수 858의 거듭제곱의 합으로 쪼개면, 다음과 같다.

85
= 1 x 64 + 2 x 8 + 5
= 1 x 8^2 + 2 x 8 + 5

이렇게 쪼개진 식에서 8의 거듭제곱 수를 제외하고 앞의 수인 0 ~ 7만 모아서 나열하면, 8진수로 표현된 숫자 85을 얻을 수 있다.

, 십진수 85은 팔진수 125와 같다.

 

파이썬에는 8진수로 변환해주는 oct() 함수가 존재한다.

 

코드

n = oct(85)
print(n)

 

실행 결과

0o125

0o8진수를 의미한다.

 

 

16진법(hexadecimal)이란?

0, 1, 2, 3, 4, 5, 6, 7, 8, 910개의 숫자와 A, B, C, D, E, F 6개의 알파벳을 사용하여 수를 나타내고, 자리가 하나씩 올라감에 따라 자리의 값이 16배씩 커지도록 수를 나타내는 방법을 십육진법이라고 한다.

 

십진수를 십육진수로 변환하기

십진수를 십육진수로 변환하기 위해서는 우선 십진수를 16의 거듭제곱의 합으로 쪼개주어야 한다. 예를 들어 십진수 100016의 거듭제곱의 합으로 쪼개면, 다음과 같다.

100
= 3 x 256 + 14 x 16 + 8
= 3 x 16^2 + 14 x 16 + 8

이렇게 쪼개진 식에서 16의 거듭제곱 수를 제외하고 앞의 수인 0 ~ 7A ~ F만 모아서 나열하면, 16진수로 표현된 숫자 3E8을 얻을 수 있다.

, 십진수 1000은 십육진수 3E8과 같다.

 

파이썬에는 16진수로 변환해주는 hex() 함수가 존재한다.

 

코드

n = hex(1000)
print(n)

 

실행 결과

0x3e8

0x16진수를 의미한다.

 


10진수 변환표

10진수 2진수 8진수 16진수
0 0 0 0
1 1 1 1
2 10 2 2
3 11 3 3
4 100 4 4
5 101 5 5
6 110 6 6
7 111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 A
11 1011 13 B
12 1100 14 C
13 1101 15 D
14 1110 16 E
15 1111 17 F
16 10000 20 10