이번에는 N진수의 숫자체계는 어떻게 나타내는지를 10진수로 예시를 보이고 난 뒤에 N진수로 일반화하는 것을 보여주고, 10진수를 N진수로 변환하는 과정을 정수부분과 실수 부분으로 나누어서 설명하고, 특히나 논리회로에서 주로 쓰이는 2진수를 16진수로 변환하는 방법을 알아보도록 하겠습니다.
N진수 체계
N진수는 숫자(+문자)를 N개를 사용하여 수를 나타내는 체계를 말합니다. 우리가 주로 사용하는 10진수는 0부터 9까지의 숫자 10개를 사용하여 수를 나타내는 체계입니다. N진수 체계는 모두 일정한 규칙을 따라서 숫자를 작성합니다. 쉬운 예로 십진수 숫자인 $987.65_{(10)}$를 어떤 식으로 표현하여 $987.65$가 되었는지 설명하도록 하겠습니다.
$987.65_{(10)} = 9 \, \times 10^2 \, + 8 \, \times 10^1 \, + 7 \, \times 10^0 \, + 6 \, \times 10^{-1} + 5 \, \times 10^{-2}$
위와 같은 등식처럼 각 자릿수는 10의 거듭제곱과 관련이 있습니다. 10의 거듭제곱과 10개의 숫자(0~9)의 곱들의 합으로 십진수체계를 나타낼 수 있습니다. 또 다른 예로 이진수와 3진수 숫자가 어떤 체계로 숫자를 나타내는지 설명해 드리겠습니다.
$1011.11_{2} = 1 \, \times \, 2^3 \, + 0 \,\times \, 2^2 \, + 1 \, \times 2^1 \, + 1 \, \times 2^0 \, + 1 \, \times \, 2^{-1} \,+ 1 \, \times 2^{-2} \, = \, 11.75_{10}$
이진수 $1101.11$은 2개의 숫자(0,1)와 2의 거듭제곱으로 십진수 $11.75$로 나타낼 수 있습니다.
또 다른 예시로 3진수는 3개의 숫자(0,1,2)와 3의 거듭제곱의 합으로 수체계를 만들 수 있습니다.
$210.12_{3} = 2 \, \times \, 3^2 \, + 1 \,\times \, 3^1 \, + 0 \, \times 3^0 \, + 1 \, \times \, 3^{-1} \,+ 2 \, \times 3^{-2} \, = \, 21 \, + \frac{5}{9}$
위와 같은 내용들을 N진수로 일반화도 할 수 있습니다.
$R \,= \, (a_3a_2a_1a_0.a_{-1}a_{-2})_N$
$= a_3 \, \times N^3 + a_2 \, \times N^2 + a_1 \, \times N^1 + a_0 \, \times N^0 + a_{-1} \, \times N^{-1} + a_{-2} \, \times N^{-2}$
위의 식처럼 숫자 R을 N진수로 나타내는 방법은 N개의 숫자(또는 문자)를 이용해서 N의 거듭제곱의 합으로 수체계를 나타냅니다.
10진수 숫자 R을 N진수로 변환하는 방법 (1) - 정수 부분
10진수 숫자 R을 N진수로 변환하는 방식은 정수부분과 소수 부분이 다른 점이 있어서 정수 부분부터 하겠습니다. 아까 전 숫자 R을 N진수로 나타내는 방식 중에서 정수부분만을 가져옵니다.
$R \,= \, (a_{n}a_{n-1}{\dots}a_2a_1a_0)_N$
$= a_{n} \, \times N^{n} + a_{n-1} \, \times N^{n-1} +{\dots} + a_2 \, \times N^2 + a_1 \, \times N^1 + a_0 \, \times N^0$
이 식에서 양변을 N으로 나누면 다음과 같은 몫과 나머지가 나옵니다.
몫 :$\frac{R}{N} = a_{n} \, \times N^{n-1} + a_{n-1} \, \times N^{n-2} +{\dots} + a_2 \, \times N^1 + a_1 = Q_1$, 나머지 : $a_0$
이 나머지$a_0$는 N진수의 첫 번째 자릿수입니다.
이때 몫을 또 N으로 나누면
몫은 $\frac{Q_1}{N} = a_{n} \, \times N^{n-2} + a_{n-1} \, \times N^{n-3} + {\dots} + a_2 = Q_2$, 나머지는 $a_1$가 나옵니다. 이번의 나머지 $a_1$은 두 번째 자릿수입니다. 이런 식으로 계속해서 N을 k번 나눌 때 나오는 나머지를 N진수의 k번째 자릿수입니다.
10진수 숫자 R을 N진수로 변환하는 방법 (2) - 소수 부분
10진수 숫자 R의 소수 부분을 N진수로 나타내는 방법도 정수 부분과 일정 부분 비슷합니다. 먼저 숫자 R의 소수 부분을 가져옵니다. 그리고 N진수 소수로 이미 변환했다고 가정한 식을 나타 내면 아래와 같은 식이 나타납니다.
$F = (.a_{-1}a_{-2}a_{-3}{\dots}a_{-m})_{N} \, = \, a_{-1}N^{-1} \, + \, a_{-2}N^{-2} \, + \, a_{-3}N^{-3} + {\dots} + a_{-m}N^{-m}$
이 식을 N으로 곱하게 되면
$FN = \, a_{-1} \, + \, a_{-2}N^{-1} \, + \, a_{-3}N^{-2} + {\dots} + a_{-m}N^{-m+1} = a_{-1} \, + F_1$ 소수점 첫 번째 자리인 $a_{-1}$이 나오게 됩니다.
똑같이 $F_{1}$을 또 N으로 곱하면
$F_{1}N = \, a_{-2} \, + \, a_{-3}N^{-1} + {\dots} + a_{-m}N^{-m+2} \, = a_{-2} + F_{2}$ 소수점 두 번째 자리인 $a_{-2}$이 나옵니다.
이런 방식대로 N을 k번 곱해서 나오는 정수 부분이 N진수의 소수 k번째 자릿수입니다.
예시 (1) 십진수 45.125를 4진수로 변환하기
- 십진수의 정수 부분 45를 4진수 정수로 변환하기
- 45를 4로 나누어서 나온 몫 : 11 나머지 : 1(첫 번째 자리 정수)
- 11을 4로 나누어서 나온 몫 : 2 나머지 : 3(두 번째 자리 정수)
- 2를 4로 나누어서 나온 몫 : 0 나머지 : 2(세 번째 자리 정수)
- 십진수 45의 4진수 $231_{4}$
- 십진수의 소수 부분. 125를 4진수 소수로 변환하기
- 0.125에 4를 곱하여 나온 정수 부분 : 0(소수점 첫 번째 자리) 소수 부분 : 0.5
- 0.5에 4를 곱하여 나온 정수 부분 : 2(소수점 두 번째 자리) 소수 부분 : 0.0
- 십진수 45.125를 4진수로 변환한 값 $231.02_{4}$
예시 (2) 4진수 231.3을 7진수로 변환하기
- $231.3_{4} \, = \, 2 \, \times 16 + \, 3 \times 4 + 1 + \frac{3}{4} = 45.75_{10}$ 4진수를 10진수로 변환하기
- 45를 7로 나누어서 나온 몫 : 6 나머지 : 3(첫 번째 자리 정수)
- 6을 7로 나누어서 나온 몫 : 0 나머지 6(두 번째 자리 정수)
- 4진수 231의 7진수 $63_{7}$
- 4진수 소수 부분 .3을 7진수 소수로 변환하기
- 0.75에 7을 곱하여 나온 정수 부분 : 5(소수점 첫 번째 자리) 소수 부분 : 0.25
- 0.25에 7을 곱하여 나온 정수 부분 : 1(소수점 두 번째 자리) 소수 부분 : 0.75
- 계속 반복....
- $231.3_{4} = 63.5151{\dots}_{7}$
2진수를 16진수로 변환하기
2진수를 16진수로 변환하는 방법을 알아보도록 하겠습니다. 2진수로 16진수로 변환하는 이유는 뭘까요? 2진수는 0,1로 나타내는 수로 컴퓨터나 이런 전자제품들은 2진수 체계를 이용합니다. 그리고 2진수 4자리 숫자로 나타낼 수 있는 수는 0~15까지입니다. 16진수는 0~F까지 나타내며 16진수 한자리 숫자로 나타낼 수 있는 수는 0~15까지입니다. 이처럼 2진수 4자리와 16진수 한자리가 나타내는 수는 0~15로 똑같습니다. 하지만 2진수는 4자리 숫자로 나타내야 하므로 16진수로 나타내면 한자리 수로 간결하게 나타낼 수 있기 때문에 2진수를 16진수로 변환하는 것을 자주 합니다. 2진수를 16진수로 변환하는 방법은 간단합니다.
- 2진수 숫자를 소수점을 기준으로 앞으로 4칸씩 뒤로 4칸씩 자른다.
- 4칸으로 자른 2진수를 16진수로 변환한다.
이렇게 간단하게 2진수를 16진수로 변환할 수 있기에 논리회로, 컴퓨터에서는 2진수와 16진수를 자주 이용합니다.
예시 (3) $1001101.010111_{2}를 16진수로 변환하기
- 2진수 숫자를 소수점 기준으로 앞으로 4칸씩 뒤로 4칸씩 자른다.
- 0100 | 1101 | . | 0101 | 1100 |
- 4칸으로 자른 2진수를 16진수로 변환한다.
- 4 | D | . | 5 | C |
- $4D.5C_{16}$
결론
- N진수체계는 N 개의 숫자(또는 문자)를 이용해서 N의 거듭제곱의 합으로 나타낸다.
- 10진수를 N진수로 변환하는 방법 중 정수 부분은 숫자 K를 N으로 나누어서 나온 나머지들로 구성이 된다.
- 10진수를 N진수로 변환하는 방법 중 소수 부분은 숫자 K를 N으로 곱해서 나온 정수 부분들로 구성이 된다.
- 2진수를 16진수로 변환하는 방법은 소수점 기준으로 4칸을 나누어서 16진수로 변환하면 된다.
이번 글에서는 논리회로에서 사용하는 2진수와 16진수를 배우기 위해 N진수 체계를 배워보았고, 10진수를 N진수로 변환하는 방법도 배웠습니다. 다음 글에서는 이진수에 대한 계산방법을 배워보도록 하겠습니다.
댓글