역사속의 숫자 체계
우리는 현재 0,1,2,3,4,5,6,7,8,9 총 열 개의 문자를 이용해서 숫자를 표기하는 "아라비아 숫자"를 사용한다. 사실 아라비아 숫자는 본래 인도에서 발명되었지만, 아라비아 상인들에 의해서 개량되고 유럽에 널리 퍼져 "아라비아 숫자"라는 이름을 얻게 되었다. 오늘날 우리는 아라비아 숫자 체계를 마치 숨쉬듯이 사용하기 때문에 아라비아 숫자가 얼마나 획기적인 발상이었는지에 대해서 간과한다.
원시인들은 숫자를 어떻게 표현했을까? 가장 간편한 방식은 땅바닥에 작대기를 그어서 숫자를 나타내는 것이다. /은 1, //는 2, ///은 3 ... 뭔가 익숙하다. 우리가 현재까지도 사용하는 방법이다. 다들 학교에서 반장선거를 할 때 칠판에 작대기, 혹은 바를 정자를 그어서 득표수를 나타냈던 것 기억날것이다. 오직 하나의 기호만 사용하기 때문에 매우 간편한 방식이다. 그러나 이 방식에는 매우 큰 문제가 있다. 132이라는 숫자를 작대기로 나타내려면 어떻게 해야 할까? 작대기를 132번 그어야 한다. 쓰기도, 읽기도 쉽지 않은 정말 불편하기 짝이 없는 방식이다.
물론 인간은 늘 해결책을 찾아낸다. 바로 큰 숫자를 약속하는 기호를 사용하기 시작한 것이다. 위의 작대기 예시에서 작대기 열개를 나타내는 문자 *를 추가하고, 작대기 백개를 나타내는 문자 &를 사용해보자. 그렇다면 132는 &***//로 쉽게 나타낼 수 있다. 큰 수를 보다 쉽게 나타낼 수 있는 것이다. 이 방식을 사용한 대표적인 현실속 숫자체계는 로마숫자이다. 로 숫자에서 1은 I, 10은 X, 100은 C이다. 132는 숫자 CXXXII로 표현할 수 있다. 다만, 실제 로마숫자에서는 표기수를 줄이기 위해 감산 표기법이라는 것을 도입했다. 그 예시로 로마숫자에서 숫자 4는 IIII가 아니라, IV이다. 작은 단위의 문자가 나오면, 그 문자 만큼 빼준다는 의미이다.
동아시아에서 전통적으로 사용되어온 숫자 체계인 한자숫자를 살펴보자. 한자숫자도 로마숫자와 동일하게 큰 숫자를 약속하는 기호를 사용한다. 바로 十(십),百(백),千(천)이다. 그러나 한자숫자는 로마숫자와는 조금 다른 방법을 사용한다. 우선 한자숫자에서는 132라는 숫자를 一百三十二(일백삼십이)라고 나타낸다. 로마숫자와 가장 큰 차이점은 로마숫자와 다르게 각 단위를 나타내는 문자는 중복해서 사용하지 않는다는 점이다. (XXX vs 三十)
아라비아 숫자와 위치 기수법
로마 숫자, 한자숫자의 문제점은 매우 큰 수를 표기하기 쉽지 않다는 것이다. 만, 억, 조 ... 등의 문자를 계속 만들어낼 수는 없는 노릇이다. 이제 아라비아 숫자를 보자. 아라비아 숫자의 가장 큰 특징은, 큰 숫자를 나타내는 문자가 따로 없다는 것이다. 잘 알다시피 아라비아 숫자는 0,1,2,3,4,5,6,7,8,9 총 열개의 문자로 큰 수를 자유롭게 표현한다. 아라비아 숫자는 큰 단위의 숫자를 나타낼 때 "위치 기수법"이라는 것을 사용한다. 쉽게 말하면, 큰 숫자를 숫자의 위치에 따라서 나타낸다는 것이다. 132라는 숫자를 보자. 우리가 무엇때문에 이 숫자에서 1이 백을 뜻하고, 3이 삼십을 뜻하는지 알 수 있을까? 바로 위치 때문이다. 132라는 숫자에서 3은 두번째 자리에 있기 때문에 십의 자리 수라는 것을 구별할 수 있다. 반면에 1은 세번째 자리에 있기 때문에 백의 자리 수라는 것을 구별할 수 있다.
그런데 한자 숫자에서도 위치 기수법을 사용할 수 있지 않을까? 가령 132를 一三二로 표현하듯이 말이다. 그러나 한자숫자에서는 위치 기수법을 사용하기가 난감한 경우가 생긴다. 102라는 숫자를 한자 숫자를 이용한 위치 기수법을 사용할 수 있을까? 문제는 가운데의 0을 한자로 사용할 수 없다는 것이다. 102에서는 십의 자리가 빈 것을 0이라는 숫자로 나타낸다. 이처럼 0은 비어있는 자릿수를 표현하는데도 요긴하게 사용된다. 아라비아 숫자는 로마숫자, 한자숫자와는 다르게 0을 적극적으로 도입해 위치 기수법이라는 획기적인 체계를 개발했다. 한편 아라비아 숫자가 보편화된 근대에 이르러서는, 한자 숫자 또한 아라비아 숫자의 0의 개념을 차용해 위치 기수법을 나타내는 경우도 있다. (2003을 二〇〇三으로 나타내는 것 처럼)
진법
우리가 사용하는 숫자는 10진법이다. 10진법이란, 각 자릿수가 10의 제곱이라는 뜻이다. 9도 아니고 11도 아니고 10진법이 널리 사용된 이유는 사람의 손가락이 10개이기 때문이다. 물론 10진법 뿐만 아니라 60진법, 20진법 등 역사속에는 꽤 다양한 진법이 사용되어왔다. 특히 한시간을 60분으로 하고, 한시간을 60초로, 원의 각도를 360도로 나눈 것 등은 60진법의 영향이라고 한다. 컴퓨터는 0과 1 두 숫자만 사용하는 2진법을 사용하고 있으며, 컴퓨터의 영향으로 16진법 또한 많이 사용된다.
사진법과 팔진법, 십진법을 비교한 표이다. 보다시피 4진법은 각 자리가 4이 될 때 마다 자리올림이 일어나고, 팔진법은 각 자리가 팔이 될 때 마다 자리올림이 일어난다.
이번에는 십진법의 각 자리를 분해해보자. 1234 라는 숫자는 다음과 같이 전개할 수 있다.
$$1234 = 1×10^3 + 2×10^2 + 3×10^1 + 4×10^0$$
이를 일반화하면 숫자열 $a_{n}a_{n-1}...a_{1}a_{0}$는 다음과 같다고 할 수 있다.
$$ a_{n}a_{n-1} \cdots a_{1}a_{0} = a_{n}×10^n + a_{n-1}×10^{n-1} + \cdots + a_{1}×10^1 + a_{0}×10^0 $$
이제 이걸 임의의 r진법인 수로 일반화해보자. 어떤 r진법의 숫자는 각 자리수가 r의 제곱이다. 그렇다면 r진법의 숫자 $b_{n}b_{n-1} \cdots b_{0}b_{1}$는 아래와 같이 나타낼 수 있다.
$$b_{n}b_{n-1} \cdots b_{0}b_{1} = b_{n}×r^n + b_{n-1}×10^{n-1} + \cdots + b_{1}×r^1 + b_{0}×r^0$$
로마숫자의 경우에는 완전한 10진수는 아니다. V(5) L(50) D(500)등 10의 제곱이 아닌, 10의 제곱의 절반인 숫자들이 있기 때문이다. 이처럼 10진수의 각 자리의 절반씩 쪼개서 표현하는 것을 Bi-quinary coded decimal이라고 한다. 주판이나 10진법 기계식 계산기에도 이런 방식이 사용된다.
'수학 > 이산수학' 카테고리의 다른 글
집합의 크기(카디널리티) (0) | 2020.08.03 |
---|---|
조건문(함축)에 대한 궁금증 (0) | 2020.08.02 |
이산수학이란 무엇인가? (0) | 2020.08.01 |