본문 바로가기

교육/수알못시리즈

정수의 n진법 체계 n-ary numeration system of integer

흔히, 십진법이니, 이진법이니 하는 얘기를 들어본 적이 있을 것이다.

십진법은 0에서 십 이전의 자연수까지 고유의 기호를 쓰다가

십이 되면 기존 기호의 조합으로 수를 넣을 칸을 한 칸 더 만드는 식이고,

이진법은 0에서 이 이전의 자연수까지 고유의 기호를 쓰다가

이가 되면 십진법과 같은 시스템으로 돌아가는 방식이다.

 

십진법

 

0 1 2 3 4 5 6 7 8 9

 

이렇게 고유의 기호를 만들고

9 다음의 수를 한 칸에서 한 칸 더한 두 칸을 넣어서

1과 0의 조합으로 10을 만들어 주는 식이다.

 

이진법

 

0 1

 

1 다음의 수는 10이 되는 식이다.

 

이런 식으로 진법을 따졌을 때 일진법은 말 할 수 없을 것이다.

( 일진법에 해당하는 단항 기수법이 있긴하다.

그런건 기호의 조합이 아니라 작대기만 긋는 행위라

앞의 표기 체계와는 좀 다른 걸로 봐야 한다. )

1 이전의 수가 0인데, 0으로 무슨 수를 만들겠는가?

0말고 만들 수 있는게 없다.

그러므로 n진법을 정할 때, 최소가 될 수 n은 2가 될 것이다.

 

그러면 n진법에 대해서 생각해보자.

n이전의 수를 m이라고 했을 때,

 

0 1 ... m

 

이런 기호를 만들 수 있을 것이다.

m 다음에 n이 되는데, n진법에서는 n = 10 이 된다.

2*n을 하면, n이 2보다 크면, 20으로 표기할 수 있다.

이런 식으로 두 자리 수를 표기하다가

n진법에서 두 칸에서의 조합의 마지막 수인 mm 의 다음 수를 정해야 하는데,

 한 자리 더해서 100으로 정할 수 있을 것이다.

또, m*n = m*10 =m0 인데,

m*n + 1*n=  m*10 + 1*10 = (m+1)*10

10 = n = m+1이므로,

10*10 = 10^2 = 100  

이런 식으로 될 것이다.

100 = 10^2 이 됨을 알 수 있다.

여기서 10이면, 10^1, 100 = 10^2

1000 = 10*10^2 =10^3 이렇게 되는데,

자릿수는 10에 붙은 승수에서 하나를 더하지만,

1 뒤의 0이 몇 개 붙은 수와 10에 붙는 승수가 같음을 알 수 있다.

그러면, 10^k 가 1 뒤에 붙은 0의 수가 k 개, k+1 자리수라고 하자.

 

10...0 <- 0 이 k개 있음

 

10^(k+1) = 10 * 10^k 이다.

10 * 10^k = (m+1) * 10...0

= m0...0 + 10...0 = 100...0 <- 0이 k+1 개 있음.

 

즉, 10^n ( n이 0을 포함한 임의의 자연수 )이면,

1 뒤에 0이 n개가 붙게 된다. 

 

여기서 임의의 0을 포함한 자연수 N을 생각하면,

 

N = a(l) * n^l + ... + a(1) * n^1 + a(0) * n^0

 

a(0) , a(1), ... , a(l) 은 0에서 n-1까지의 임의의 정수

 

이런 식으로 표현할 수 있을 것이다.

N을 P=aQ+r ( 0=< r < a) ( 각 기호는 0을 포함한 자연수 ) 

이런 형식으로 나타내는 걸 반복을 해보자.

 

N = a(l) * n^l + ... + a(1) * n^1 + a(0) * n^0

 

을 n으로 묶어보면,

 

N = ( a(l) * n^l + ... + a(1) * n^1 ) + a(0) * n^0

= p * n + a(0)

 

이렇게 나타낼 수 있다.

N을 n으로 나눴을 때, 몫은 p이고 나머지는 a(0) 가 된다.

 

괄호의 값은 p*n 이므로

 

p = a(l) * n^( l-1)  + ... + a(1) 

 

이렇게 나타낼 수 있다.

p도 n으로 나눠보자.

 

p = ( a(l) * n^( l-1)  + ... )+ a(1) 

= q*n + a(1)

 

이렇게 나타낼 수 있으면,

나머지가 a(1)이 나타난다.

 

여기까지 과정을 간단히 나타내보자.

 

 

이런 식으로 나타낼 수 있을 것이다.

이런 과정을 계속 반복하여 밑의 수가 n보다 작은 수가 나올 때 까지 가보자.

 

 

이런 식으로 가능 할 것이다.

 

N = a(l) * n^l + ... + a(1) * n^1 + a(0) * n^0

 

 

화살표 방향으로의 순서를 보면,

일치한다는 것을 알 수 있다.

 

즉, 자연수 N을 n진법으로 나타내고자 하면,

저런 방법으로 나타낼 수 있다.

 

기호로 얘기하니 와닿지 않으니

십진법을 이진법으로 나태냄으로써 파악해보자.

 

35를 2진법으로 나타내보면,

35 = 1*2^5 + 0*2^4 + 0*2^3 + 0*2^2 + 1*2 + 1*1

 

이렇게 나타낼 수 있고,

100011 ( 이진법 ) 이렇게 나타낼 수 있다.

 

어떤 수를 n진법으로 나타내고 싶으면,

계속 n으로 나눠서 나타내면 된다.

 

음수는 여기다 -를 붙이면 되니 정수에 대하여 n진법으로 나누는 일은 해결 되었다.

 

유리수의 n진법은 다음 시간에 올리겠다.