진법 변환에 대하여

박종현·2024년 1월 7일

진법

우리가 평소에 사용하는 아라비아숫자 즉 10진법과 달리 컴퓨터에서는 입력되거나 입력되지 않거나 두 가지 밖에 감지 할 수 없기 때문에 0 또는 1이라고 하는 이진법 사용하여야 한다. 그렇기 때문에 컴퓨터에 코드를 입력할 때는 우리가 사용하는 10진법을 2,8,16진법으로 바꾸어서 입력하여야 한다.

2진법

0과 1이라는 두개의 숫자만을 사용하여 수를 나타내는 방식이다.

2진법 표현

0과 1을 사용하여 수를 새며 더이상 올라가지 못할 때 높은 자릿수를 추가 하면 된다. 예를 들어 0, 1 이후 숫자는 10이 되며 11이후 숫자는 100이 되고 101이후 숫자는 110이 된다.

예시
0, 1 /// 더이상 높은 수가 없으니 높은 자릿수 추가
10, 11 /// 반복
100, 101, 110 ,111
1000, 1001, 1010, 1011...

간단하게 말하면 1010이라는 이진수가 있을 때 이것은 2^0인 1이 0개, 2^1인 2가 1개, 2^2인 4가 0개 2^3인 8이 1개 있다는 뜻이고 이것을 10진수로 나타내면 10이 된다.

10진수을 2진수으로 변환

우선 10진수를 2의 거듭제곱수로 나타낸다. 15라는 수는 8 + 4 + 2 + 1 로 나타낼 수 있고 이것을 정리하면 2^3 + 2^2 + 2^1 + 2^0 이라고 할 수 있다. 이것을 2진법으로 나타내면 2^3이 있고 2^2이 있고 2^1이 있고 2^0이 있으므로 1111이라고 할 수 있다. 9라는 수는 8 + 1 이고 2^3 + 2^0이라고 할 수 있으니 2^3이 존재하고 2^2이 존재하지 않고 2^1이 존재하지 않고 2^0이 존재하므로 1001이라고 할 수 있다. 정리하면 10진법을 2진법으로 변환하는 방법은 2의 거듭제곱들로 분리 후 해당 지수에 해당되는 것이 존재하면 1 존재하지 않으면 0으로 적으면 된다.

8진법

0부터 7까지 8개의 숫자를 사용하여 수를 나타내는 방식이다.

8진법 표현

0부터 7까지 숫자를 센 뒤 높은 자릿수를 추가하며 세면 된다.

0, 1, 2 ... , 7 // 자릿수 추가
10, 11, 12 ... 17, 20, 21 ... 77 // 자릿수 추가
100, 101 ... 777

2진법과 마찬가지로 0부터 7까지 센 후 더이상 세지 못할 경우 높은 자릿수를 추가하면 된다. 예를 들어 412라는 8진수가 있다면 이것은 8 ^ 0 1이 2개, 8 ^ 1 인 8이 1개, 8 ^ 2 인 64가 4개인 수라는 뜻이다.

10진수 8진수 변환

23 	= 16 + 7
	= 2 * 8 ^ 1 + 7 * 8 ^ 0
    //지수의 크기대로 정리하면 27이 된다.

10진수 2진수 변환처럼 해당 10진수를 8의 거듭제곱수 들로 변환하여 지수의 크기로 정리하면 된다.

8진수 10진수 변환

27 	= 2 * 8 ^ 1 + 7 * 8 ^ 0
	= 16 + 7
    // 10진수로 나타내면 23이 된다.

8진수 10진수 변환을 반대로 하면 된다.

2진수 8진수 변환

111101 라는 이진수가 있다면 이것을 3개 단위로 끊는다.
111 101 이런식으로 정리한 후
2^2 * 1 + 2^1 * 1 + 2^0 * 1  2^2 * 1 + 2^1 * 0 + 2^0 * 1  같은 식에 대입하여
75 라는 8진수로 나타낼 수 있다

2진수를 3개 단위로 나눠서 합치면 8진수가 된다.

8진수 2진수 변환

52 라는 8진수가 있다면
5와 2를 각각 2진수로 나타내면 된다.
101 010 이라고 나타낼 수 있다.

2진수 8진수 변환을 반대로 하면 된다

16진법

0부터 15까지 16개의 숫자로 수를 세는 방법

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 ... 1F

다른 진법 들과 마찬가지로 더 이상 커지지 못할 때 높은 자릿수를 추가하며 표기하지만 9이후 부터는 알파벳을 사용하여 표기한다.

16진법의 변환 방법

1101 1000 라는 2진수는
8+4+1 8 라고 정리할 수 있고
13 8 이것을 16진수로 바꾸면
D8이라고 할 수 있다.

2진수를 16진수로 바꿀 경우 8진수 변환과 비슷하게 4자리씩 끊어서 변환 하면 된다
10진수나 8진수를 16진수로 바꿀 경우 해당 진수를 2진수로 변환한 후 2진수 변환법을 사용하여 16진수로 바꾸면 된다.

0개의 댓글