1. 진법에 대해
진법은 수를 셀 때 자릿수가 변경되는 단위를 특정하여 두는 셈법이다.
예를 들어 평소에 사용하는 수는 0부터 9까지의 10개를 사용하는 10진법이 된다. 하루의 낮과 밤으로 구분하여 12개의 간격을 둔 시간은 12진법이 되고 1시간은 60분, 1분은 60초의 주기를 가지므로 60진법이라 할 수 있다.
사람과 달리 컴퓨터의 경우 전자제품으로써 인식하는 것은 전기가 흐른다(1)와 흐르지 않는다(0)뿐이며 이에 따라 2진법으로 모든 동작을 한다. 다만, 숫자가 커질수록 사람이 읽기 어려울 정도로 길어지는 탓에 2진법의 수를 네 자리마다 하나의 숫자로 변환되는 16진법으로 표기하는 것이 일반적이다. 이에 따라 10진법, 2진법, 16진법 세 가지에 대해 수 체계를 알고 서로 간의 진법변환을 할 수 있어야 한다.
10진법 - 010, 110, 210, 310, 410, 510, 610, 710, 810, 910 (10 개, 이후 1010-1110-1210 순으로 계속.)
2진수, 16진수와의 구분을 위해 뒤의 10을 추가했으나 평소에 쓰는 숫자와 동일하다.
2진법 - 02, 12 (2 개, 이후 102-112-1002 순으로 계속.)
2진수의 구분을 위해 뒤의 2 대신에 0b100처럼 앞에 ‘0b’를 쓰기도 한다.
16진법 - 016, 116, 216, 316, 416, 516, 616, 716, 816, 916, A16, B16, C16, D16, E16, F16 (16 개, 이후 1016-1116-1216 순으로 계속.)
16진수의 구분을 위해 뒤의 16대신에 0x12처럼 앞에 ‘0x’를 쓰기도 한다.
표로 비교하면 아래와 같다.
2. 진법의 변환 - 10진수를 2진수로
변환에 앞서 각 진법에서의 수는 자릿수가 올라갈 때 진법의 거듭제곱으로 구성된다는 점을 알아야 한다.
예를 들어 10진수 12310이라는 수가 있다면 (110×102)+(210×101)+(310×100)으로 표현된다. 동일한 방법으로 2진수 101002이라는 수를 (12×24)+(02×23)+(12×22)+(02×22)+(02×20)으로 표현할 수 있으며 이를 계산하면 16+4=2010으로 위의 표와 같다는 것을 알 수 있다.
10진수를 2진수로 변환할 때 보통 2를 반복적으로 나눗셈하는 방식을 사용하는데 12310을 2진수로 변환하려면 다음과 같이 한다.
2 )123
2 ) 61······1
2 ) 30······1
2 ) 15······0
2 ) 7······1
2 ) 3······1
2 ) 1······1
0······1
2로 나눈 후 우측에 나머지를 기입하는 것을 몫이 0이 될 때까지 한 후, 기록된 나머지들을 가장 아래부터 순서대로 쓰면 2진수로 변환한 결과로 11110112가 된다.
10진수를 2진수로 변환하는 다른 방법으로 2의 거듭제곱을 빼는 방식이 있는데, 감산 가능한 가장 큰 수부터 빼는 방법이다. 12310으로 하면, 이 보다 작으면서 가장 큰 거듭제곱인 6410부터 뺄셈을 반복하고 뺄 수 있으면 1, 뺄 수 없으면 0으로 기록하고 0이 되도록 반복한다.
12810 : 감산 불가
6410 : 12310-6410=5910
3210 : 5910-3210=2710
1610 : 2710-1610=1110
810 : 1110-810=310
410 : 감산 불가
210 : 310-210=110
110 : 110-110=010
12810 | 6410 | 3210 | 1610 | 810 | 410 | 210 | 110 |
0 | 1 | 1 | 1 | 1 | 0 | 1 | 1 |
계산 결과 동일하게 11110112가 된다.
두 방법 중 어느 쪽이라도 편한 방법으로 익숙해지도록 한다.
3. 진법의 변환 - 2진수를 10진수로
수의 거듭제곱에 대한 표기법을 이해하고 있다면 간단히 진행된다. 2진수 110001102라는 수가 있다면 (12×27)+(12×26)+(02×25)+(02×24)+(02×23)+(12×22)+(12×22)+(02×20)으로 표현되고, 0이 아닌 자릿수인 27+26+22+21만 더하는 것으로 끝난다. 즉, 12810+6410+410+210=19810이 된다.
4. 진법의 변환 - 10진수와 16진수의 사이
10진수를 2진수와 변환할 때의 방법을 10진수를 16진수로 변환할 때도 같은 방법을 사용할 수 있으나 두 자릿수 나눗셈보다 2진수로 변환한 후 16진수로 재차 변환하는 것이 편하므로 생략한다.
16진수를 10진수로 변환할 때도 거듭제곱에 대한 표기법으로 쓸 수 있으나 두 자릿수 곱셈이 자주 나와 불편한 반면에 2진수를 거쳐 계산하는 쪽이 편하므로 생략한다.
결론적으로 할 수는 있지만 잘 안 하는 변환이다.
5. 진법의 변환 - 2진수와 16진수의 사이
2진수와 16진수사이에는 ‘2진수 4자리=16진수 1자리’라는 공식이 있다. 사실, 24=16이라 당연히 그렇게 되는데 11110112라는 수를 변환하는 과정은 아래와 같다.
처음으로, 1의 자리부터 4자리씩 끊어 놓는다. 즉, 111, 1011로 1112과 10112이 된다.
그 네 자릿수의 숫자를 각각 16진수로 비교표에 따라 변환하여 이어서 쓴다. 즉, 7B16가 된다.
1 | 1 | 1 | 1 | 0 | 1 | 1 | |
7 | B |
16진수를 2진수로 변환하는 것 또한 위의 내용을 역순으로 한다. 16진수 C616을 변환한다 할 때, C16와 616을 각각 네 자리의 2진수로 변환하여 그대로 이어서 쓴다. 즉, 110001102가 된다.
C | 6 | ||||||
1 | 1 | 0 | 0 | 0 | 1 | 1 | 0 |
이렇게 과정이 간단하므로 16개의 대응되는 수만 기억해두면 2진수에서 16진수로, 16진수를 2진수로 즉시 변환이 가능하다.
6. 결론
이렇게 직접 계산하는 방법을 알아만 두고, 평소에는 컴퓨터의 계산기나 인터넷상의 변환기를 사용하도록 한다.
'정보-통신-연산 > 입문1.수체계' 카테고리의 다른 글
부호 2 (Code 2) (2) | 2022.09.10 |
---|---|
부호 1 (Code 1) (0) | 2022.09.10 |
사칙연산 (Elementary arithmetic) (0) | 2022.09.10 |
보수와 음수 (Complement and negative number) (0) | 2022.09.10 |