알고리즘 및 개념 정리

2진, 8진, 10진, 16진법과 상호 간의 변환

킹갓왕동현 2024. 3. 4. 00:21

원래 알고 있던 내용이긴 하지만,

오늘 강의를 들어서 오랜만에 상기시킨 만큼

글로 짧게 적어보려고 합니다.

 

일반적으로 수 체계에서 쓰는 진법은 10진법입니다.

 

얼핏 알기로 손가락이 10개인 것에서

시작됐다고 본 것 같습니다.

 

아무튼, 유래는 알면 재밌지만

몰라도 아무 상관 없으니 바로 설명 시작하겠습니다.

 

진법 설명 및 표기법.

각 진법들은 표기된 숫자가 되면

자릿수가 올라갑니다.

왼쪽이 10진법,

오른쪽이 다른 진법으로 예를 들면,

 

2진법은 2가 되면 자릿수가 올라갑니다.

1 = 1

2 = 10

3 = 11

4 = 100 

 

8진법은 8이 되면 올라갑니다.

7 = 7

8 = 10

9 = 11

10 = 12

16 = 20

 

16진법은 16이 되면 자릿수가 올라가는데,

 

10진법 보다 한 자리에

표기되는 숫자가 크기 때문에,

A~F 알파벳을 이용해서 표기합니다.

9 = 9

10 = A

11 = B

15 = F

16 = 10

31 = 1F

2진법을 쓰는 이유.

2진법은 컴퓨터가 사용하는 수 체계입니다.

0 과 1로만 이루어져 있는데,

 

이는 전기 신호는 입력 되거나,

입력되지 않거나 둘 중 하나이기 때문에

전기신호를 입력받아 움직이는

컴퓨터로썬 0 과 1

두가지만 알아들을 수 있게됩니다.

 

각 진법 간의 변환법.

먼저,

2진법은 각 자릿수가

2의 0제곱부터 시작해서

자릿수가 올라갈수록

2의 1제곱,

2의 2제곱 이런식으로 올라갑니다.

(참고로 다른 진법도 똑같음.

8진법은 각 자릿수가 8의 n제곱,

16진법은 각 자릿수가 16의 n제곱)

 

예를 들어 2진법으로 1101 이면,

 

8421 = 각 자릿수에 해당하는 값

1101 = 1이 담긴 자릿수만 값을 가짐.

1끼리만 더하면 10진법이 되고,

    그 값은 13입니다.

 

다음,

2진법을 8진법과 16진법으로

변환하는 방법은 간단합니다.

 

2진법으로 111이 7이기 때문에,

1000은 8이고, 8진법으론 10입니다.

 

따라서,

2진법의 3자리가 8진법의 1자리와 같습니다.

2진법 , 8진법

    .111,       7

  1.000,     10

  1.010,     12

11.010,     32

(빨간점은 계산하기 편하시라고 찍은 겁니다.)

 

다음,

2진법을 16진법으로 바꾸는 것도 마찬가지입니다.

 

2진법으로 1111은 15이기 때문에,

10000은 16이고, 16진법으론 10 입니다.

 

따라서,

2진법의 4자리가 16진법의 1자리와 같습니다.

      2진법, 16진법

           111,         7

        .1111,         F

    11.1010,      3A

1011.1100,      BC

 

다음,

8진법과 16진법간의 변환은,

각 진법을 2진법으로 바꾼 후에

원하는 진법으로 바꾸는 방법을 쓰면 됩니다.

 

마지막으로,

10진법에서 각 진법으로 변환하는 방법입니다.

 

2진법으로 변환은 위에 설명한 방법도 있고,

(각 자릿수를 2의 n제곱으로 써서

10진법인 수랑 같아지게

2진법의 자리마다 1과 0을 채우는 것)

 

10진법의 수를 2로 나눠서

나머지가 0이면 0, 1이면 1 이런식으로

각 자릿수를 채워가는 방법도 있습니다.

 

예)

10%2 = 0

5%2   = 1

2%2   = 0

1

 

마지막 남은 1은

2로 나눠지지 않기 때문에,

구해진 값을 역순으로 써서

10의 2진법 값은 1010이 됩니다.

 

10진법을 8진법과

16진법으로 바꾸는 것도 비슷합니다.

몫과 나머지를 구하는 원리입니다.

 

예)

20/8 = 몫 2, 나머지 4

20의 8진법 표기 = 24

55/8 = 몫 6, 나머지 7

55의 8진법 표기 = 67

 

40/16 = 몫 2, 나머지 8

40의 16진법 표기 = 28