상세 컨텐츠

본문 제목

기수법(2진법, 8진법, 10진법, 16진법)과 변환

Computer Science/Basic Knowledge

by groomi 2022. 3. 4. 17:12

본문

기수법

: 수를 시각적으로 표현하는 방법, 체계

 

10진법

: 0~9까지 총 10개의 숫자를 이용해서 수를 나타내는 수 체계. 일상적으로 가장 많이 이용되는 진법.

이렇게 10개의 숫자를 이용하여 나타내는 수를 10진수라고 한다.

 

10진수는 오른쪽부터 1의 자리, 10의 자리, 100의 자리, 1000의 자리 ... 이런 식으로 이루어져 있다.

이는 10^0(10의 0승)의 자리, 10^1(10의 1승)의 자리, 10^2(10의 2승)의 자리, 10^3(10의 3승)의 자리 ... 이다.

1, 10, 100, 1000은 각각 오른쪽부터 첫 번째, 두 번째, 세 번째, 네 번째 자리의 자리값이다. 

 

0~9까지의 숫자를 사용하여 표현하다가 더이상 사용할 숫자가 없을 때 다음 자리로 넘어가서 표현한다.

예) 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 => 10^0의 자리에 10개의 숫자 모두 사용. 10^1의 자리 숫자를 1 올리고 다시 맨 오른쪽부터 차례로 채움

=> 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 => 10^0의 자리에 10개의 숫자 모두 사용. 10^1의 자리 숫자를 1올리고 다시 맨 오른쪽부터 차례로 채움

=> 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 =>

...

=> 90, 91, 92, 93, 94, 95, 96, 97, 98, 99 => 10^0의 자리에 10개의 숫자 모두 사용, 10^1의 자리에도 10개의 숫자 모두 사용. 10^2의 자리 숫자를 1올리고 다시 맨 오른쪽부터 차례로 채움

=> 100, 101, 102, 103, 104, 105, 106, 107, 108, 109 ...

이런 방식으로 수를 표현하는 것이 10진수이다.

 

10진수의 1280은 10^3의 자리 수가 1, 10^2의 자리 수가 2, 10의 자리 수가 8, 1의 자리 수가 0으로 다음과 같이 (자리값 * 각 자리의 숫자)를 더한 형태로 표현할 수 있다.

1280 = 1000*3 + 100*2 + 10*8 + 1*0

 

2진법

: 두 종류의 숫자를 이용해서 수를 나타내는 수 체계. 관습적으로 0과 1 이용. 

이렇게 두 개의 숫자를 이용하여 나타내는 수를 이진수라고 한다. 

 

2진수는 오른쪽부터 2^0의 자리, 2^1의 자리, 2^2의 자리, 2^3의 자리... 로 이루어져 있다.

1, 2, 4, 8은 각각 오른쪽부터 첫 번째, 두 번째, 세 번째, 네 번째 자리의 자리값이다.

 

0과 1의 숫자를 사용하여 표현하다가 더이상 사용할 숫자가 없을 때 다음 자리로 넘어가서 표현한다.

예) 0, 1 (00, 01과 같음) => 2^0자리에 두 개의 숫자 모두 사용. 2^1의 자리 숫자를 1 올리고 다시 오른쪽부터 채움.

=> 10, 11 => 2^0의 자리, 2^1의 자리에 두 개의 숫자 모두 사용. 2^2의 자리 숫자를 1 올리고 다시 오른쪽부터 채움.

=> 100, 101 => 2^0의 자리에 두 개의 숫자 모두 사용. 2^1의 자리 숫자를 1 올리고 오른쪽부터 채움

=> 110, 111 => 2^0의 자리, 2^1의 자리, 2^2의 자리에 두 개의 숫자 모두 사용. 2^3의 자리로 넘어가서 오른쪽부터 채움

=> 1000, 1001, 1010, 1011, 1100, 1101, 1110, 1111 ... 

이런 방식으로 수를 표현하는 것이 2진수이다. 

 

2진수의 1010은 2^3의 자리 수가 1, 2^2의 자리 수가 0, 2^1의 자리 수가 1, 2^0의 자리 수가 0이므로 다음과 같이 (자리값 * 각 자리의 숫자)를 더한 형태로 표현할 수 있다.

1010 = 8*1 + 4*0 + 2*1 + 1*0 = 10(10진수의 형태로 변환했을 때)

 

앞의 예시에서 1부터 셌을 때 1010은 10번째이다. 즉, 10진수로 변환했을 때 10이다. 

2진수에서 10은 2, 100은 4, 1000은 8이다. 각 자리의 자리값을 생각해보면 알 수 있다. 

 

8진법

: 0~7까지 8 종류의 숫자를 이용해서 수를 나타내는 수 체계.

이렇게 8 개의 숫자를 이용하여 나타내는 수를 8진수라고 한다.

 

8진수는 오른쪽부터 8^0의 자리, 8^1의 자리, 8^2의 자리 ... 로 이루어져 있다.

각 자리의 자리 값은 1, 8, 64... 이다.

 

0~8까지의 숫자를 사용하여 표현하다가 더이상 사용할 숫자가 없을 때 다음 자리로 넘어가서 표현한다.

예) 0, 1, 2, 3, 4, 5, 6, 7 => 8^0의 자리에 숫자 모두 사용. 8^1의 자리를 1 올리고 다시 채우기

10, 11, 12, 13, 14, 15, 16, 17 => (8진수의 10은 10진수의 8이다) 8^0의 자리에 숫자 모두 사용. 8^1의 자리를 1 올리고 다시 채움

=> 20, 21, 22, 23, 24, 25, 26, 27 (8진수의 20은 10진수의 16이다) =>

....

=> 70, 71, 72, 73, 74, 75, 76, 77 => 8^0의 자리, 8^1의 자리에 숫자 모두 사용. 8^2의 자리를 1 올리고 다시 채움

=> 100, 101, 102, 103, 104, 105, 106, 107 ... (8진수의 100은 10진수의 64이다)

이런 방식으로 수를 표현하는 것이 8진수이다.

 

8진수의 77은 8^1의 자리 숫자가 7, 8^0의 자리 숫자가 7이므로 다음과 같이 (자리값 * 각 자리의 숫자)를 더한 형태로 표현할 수 있다.

77 = 8*7 + 1*7 = 63(10진수 형태로 변환했을 때)

 

16진법

: 0~9까지의 숫자 10 종류와 A,B,C,D,E,F 알파벳 6 종류를 이용해서 수를 나타내는 수 체계. 

16진수에서 A, B, C, D, E, F는 각각 10, 11, 12, 13, 14, 15로 생각하면 된다.

이렇게 16개의 기호로 나타내는 수를 16진수라고 한다.

 

16진수의 자리값도 다른 n진수들과 마찬가지이다.

오른쪽부터 첫 번째 자리의 자리값은 16^0, 두 번째 자리의 자리값은 16^1, 세 번째 자리의 자리값은 16^2 ... 이다.

 

16개의 기호를 모두 사용하여 표현하다가 더이상 사용할 기호가 없을 때 다음 자리로 넘어가서 표현한다.

예) 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F 

=> 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 1A, 1B, 1C, 1D, 1E, 1F

=> 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 2A, 2B, 2C, 2D, 2E, 2F =>

...

=> F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, FA, FB, FC, FD, FE, FF

=> 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 10A, 10B, 10C, 10D, 10E, 10F ...

이런 식으로 수를 표현하는 것이 16진수이다.

 

16진수의 10F는 16^2의 자리 숫자가 1, 16^1의 자리 숫자가 0, 16^0의 자리 숫자(기호)가 F이므로 자리값 * 각 자리의 숫자를 더한 형태로 다음과 같이 표현할 수 있다.

10F = 256*1 + 16*0 + 1*F(15) = 271(10진수로 변환했을 때)

 

변환하기(2진수, 8진수, 16진수 => 10진수)

각 진법의 원리를 알면 10진수로 쉽게 변환할 수 있다. 

각 진법의 원리 설명에 변환 방법도 자연스럽게 녹아들어 있다. 

좀 더 시각화해서 표현하면 다음과 같다. 

 

1) 2진수 1011 을 10진수로 변환

2진수 1 0 1 1
자리값(가중치) 2^3 2^2 2^1 2^0
환산값(자리값*자리의 숫자) 8 0 2 1

=> 8 + 0 + 2 + 1 = 11(10진수로 변환한 값)

*2진수는 0이 아닌 1인 수의 자리값만 모두 더해주면 된다.

 

2) 2진수 101.01 을 10진수로 변환

2진수 1 0 1 . 0 1
자리값(가중치) 2^2 2^1 2^0 . 2^-1 2^-2
환산값 4 0 1   0 1/4(=0.25)

=> 4+0+1+0+0.25 = 5.25(10진수로 변환한 값)

*위와 같이 소수점까지 표현 가능하다.

 

3) 8진수 1730 을 10진수로 변환

8진수 1 7 3 0
자리값(가중치) 8^3 8^2 8^1 8^0
환산값 512 64*7=448 24 0

=> 512 + 448 + 24 + 0 = 984(10진수로 변환한 값)

 

4) 16진수 102A 를 10진수로 변환

16진수 1 0 2 A
자리값(가중치) 16^3 16^2 16^1 16^0
환산값 4096 0 32 10

=> 4096 + 0 + 32 + 10 = 4138(10진수로 변환한 값)

 

변환하기(10진수 => 2진수, 8진수, 16진수)

10진수를 n진수의 n으로 더이상 나누어지지 않을 때까지(몫이 n 미만이 될 때까지) 나눈 후 마지막으로 남은 몫과 나머지를 읽어준다. 자리수 체계가 다르니 이를 맞춰준다고 생각하면 된다.

 

1) 10진수 11을 2진수로 변환

2) 10진수 215를 8진수로 변환

3) 10진수 215를 16진수로 변환

16진수에서 10 이상의 숫자값은 알파벳으로 변환해주어야 하는 점만 주의하면 된다.

 

<참고 : 진수 변환 계산기>

http://www.hipenpal.com/tool/binary-octal-decimal-hexadecimal-number-converter-in-korean.php

 

진수 변환기 - Hi!Penpal!

2진수,8진수,10진수,16진수,32진수를 상호 변환 가능합니다.

www.hipenpal.com

 

진수법의 원리, 변환 방법 공부 끝!


<내가 만든 앱 광고>

속마음을 털어놓을 곳이 필요할 때 : "편지로 5길"

편지로 5길 미리보기 화면

 

댓글 영역