진법
1. 수학 용어
Base ''N''
'''진법'''(進法)은 수를 셀 때, 자릿수가 올라가는 단위를 기준으로 하는 셈법의 총칭이다. '위치적 기수법'이라고도 한다.
일반적으로는 10진법을 주로 사용하며, 시계는 12진법과 60진법의 조합, 컴퓨터에서는 2진법과 16진법[1] 또는 '''3진법''' 등이 이용된다. 또한 암호학에서는 26진수가 사용되기도 한다.
고대 메소포타미아가 60진법을 사용하였다고 하는데, 이는 천문학에 뛰어나서 일찍부터 1년이 360일이라는 것을 발견하고 이를 효과적으로 나타낼 수 있는 진법이 60진법이므로 60진법을 사용했다는 설이 유력하다. 12진법은 약수로 2, 3, 4, 6을 가져 매우 다양하게 나눌 수 있지만 5가 없어서, 5를 추가하여 60진법을 만들면 큰 숫자를 2, 3, 4, 5, 6으로 다양하게 나눌 수 있기 때문이다. 즉, 하루나 1년을 원하는 갯수로 분할해서 정수로 표기하는 게 가능하다. 또 마야 문명에서는 20진법이 사용되었다고 한다.
유럽권에서는 20진법이 흔하게 사용되었다. 영어와 독일어 등에서 11~19까지의 단어가 20이상의 숫자처럼 10+1의자리 숫자로 구성되지 않고 별도의 이름이 있는 것도 그 잔재이다. 프랑스어에서는 40이나 60은 그대로 40과 60으로 읽는 것에 반해 80만큼은 특이하게도 4x20으로 읽는 관습이 남아 있다. 덴마크어에서는 50이상의 십의 자리 숫자는 모두 20진법으로 표기한다. 예를 들어 90은 halvfems라고 표기하는데, halv는 반, fem은 5이고 s는 곱한다는 것을 줄인 말이다. 따라서 (-1/2+5)x20이라고 읽는 것이다. 그냥 반이라고 읽어도 빼기가 되는 것은 과거 유럽어에서 낮은 단위의 숫자를 높은 단위의 숫자 앞에서 쓰면 그만큼을 빼는 관습이 있었기 때문이다.[2] 라틴어에서도 29는 20+9로 읽을 수 있었지만 (-1)+30으로도 읽을 수 있었고, 독일어에서 시간을 읽은 때 반 4시라고 읽으면 3시 30분이 되는 것 등에서 알 수 있다.
야구에서는 투수의 소화 이닝 수를 표기할 때 10진법과 3진법의 조합을 쓴다. 투수의 소화 이닝 수는 그 투수가 잡은 아웃카운트에서 3을 나눈 값으로 구하는데 예를 들어 8개의 아웃카운트를 잡았을 경우 대분수를 써서 2⅔이닝(2와 3분의 2이닝) 식으로 표현하는 게 정석이지만 표기의 편의를 위해 나머지 부분을 소수점으로, 예를 들어 2.2이닝처럼 표기하기도 한다. 여기서 소수점 아래 부분이 바로 3진법으로 쓰이는 부분이다.
흔히 생각하는 자연수 진법에서는 밑(base)으로 2 이상의 모든 정수를 사용할 수 있다.
프로그래밍에서는 2진법과 10진법, 16진법 이외에 다음 진법도 가끔 사용한다. 이들 진법은 프로그래밍 언어나 환경에 따라 각각 다르기 때문에 정식이라기보다는 임의로 사용되는 쪽에 가깝다. 일반적인 범위에서 쉽게 찾아볼 수 있는 곳이 단축 URL 표기.
- Unary(1진법/단항 기수법): 0 이상의 정수에 대해 같은 기호(주로 숫자 1)를 그 수만큼 반복해서 표기하는 진법. 예를 들어 5라면 11111이 되는 식이다. 어디다 쓸까 싶지만 초등학교 저학년 때 쓰는 산가지를 이용한 셈법이나 1~5까지를 '正'의 획순대로 쓰는 것 또한 1진법에 포함된다. 한자의 경우 1~3까지 1진법으로 표현된다.(一二三)
- Ternary(3진법): 0, 1, 2를 사용하는 진법. 칸토어 집합을 다루다 보면 자주 접하게 된다.
- Base32(32진법): 숫자 0~9, 알파벳 일부를 사용하는 진법으로 5비트를 한 자리로 표기하기 위한 기법이다. 프로그래밍 언어에 따라 많이 다르다.
- Base36(36진법): 숫자 0~9, 알파벳 A~Z를 모두 사용하는 진법이다.
- Base58(58진법): 숫자 0~9, 알파벳 대문자 A~Z, 소문자 a~z의 대부분을 사용한다. 이때 혼동을 일으킬 수 있는 숫자 0과 대문자 O, 대문자 I와 소문자 l은 사용하지 않는다. 비트코인 주소 표기에 사용한다.
- BASE64(64진법): 숫자 0~9, 알파벳 대문자 A~Z, 소문자 a~z까지 사용한 뒤, 나머지 2자리에 특수문자 +, /를 집어넣어 6비트를 한 자리로 표기하는 기법이다. 가장 널리 쓰이는 기법으로, 이메일 인코딩에 많이 사용된다. 이메일 원본 헤더를 열어보면 알 수 없는 숫자와 알파벳, 특수문자가 마구 섞인 부분을 볼 수 있는데 이것이 Base64로 표기된 것이다.
- Ascii85(85진법): 숫자 0~9, 알파벳 대문자 A~Z, 소문자 a~z[3] 를 모두 사용하다 못해 특수문자도 대거 사용한다. 아스키 코드의 대부분을 사용한다고 해서 Ascii85라는 명칭이 되었다. PC통신 시절에 많이 사용했던 ZMODEM 프로토콜이 이걸 사용했다. 왜 하필 85냐면 256의 1/3의 근사치면서 232의 5제곱근이 84와 85의 사이에 있기 때문. 즉, 32비트를 5자리의 문자로 나타낼 수 있는 가장 작은 진법이다.
1.1. 진법 변환
[image]어떤 수를 n진법으로 변환하려면 그 수를 0이 될 때까지 n으로 나누고, 그 나머지를 거꾸로 읽어 올라가면 된다.[출처] 예를 들어 다음 그림과 같이 10진수 13을 2진법으로 변환하면 1101이 된다.
[clearfix]
1.1.1. 소숫점 아래 자리 변환
어떤 숫자의 진법을 변환할 때 정수 부분은 쉬운데, 소숫점 아래 부분은 좀 어렵다. 이때는 나눗셈 방법을 역이용해서, 1 미만의 소수(decimal)를 n진법으로 변환하려면 그 수의 소수 부분을 0이 될 때까지(혹은 원하는 자릿수만큼) n으로 곱하고 정수 부분만 순서대로 읽으면 된다.[출처]
예를 들어, 13/16은 0.8125(10)이고 다른 진법으로 변환하면 0.1101(2), 0.
1.2. 실수 진법으로의 확장
밑의 범위를 실수로 확장시키면 아래와 같이 음수, 유리수, 무리수 등에도 사용이 가능하다. 밑(base)으로는 b<-1 또는 b>1을 만족시키는 모든 실수 b를 사용할 수 있다.[4] 밑이 양의 정수가 아닌 경우, 둘 이상의 서로 다른 표기로 나타낼 수 있다.
1.2.1. 음수 진법
밑이 음수인 경우, 양수를 음수처럼, 반대로 음수를 양수처럼 부호를 붙여 표기할 수도 있다. 두 자리마다 부호가 바뀌기 때문에, 음의 부호(-)가 붙지 않은 경우 홀수 자리 수는 양수, 짝수 자리 수는 음수가 된다. 반대로 음의 부호가 붙은 경우, 홀수 자리 수는 음수, 짝수 자리 수는 양수가 된다.
예를 들어, 377은 -10진법으로 다음과 같이 나타낼 수 있다.
음수인 -15는 -2진법으로 다음과 같이 나타낼 수 있다.
1.2.2. 유리수 및 무리수 진법
정수가 아닌 유리수 및 무리수의 경우, 가장 큰 자릿수를 더 작은 단위로 쪼개서 표기할 수 있다. 이 때문에 동일한 하나의 수에도 무수히 많은 표기가 존재한다.
임의의 수 377은 5.5진법과 7.5진법, 4/3진법으로 각각 다음과 같이 나타낼 수 있다.
무리수 진법도 가능하다. 예를 들어 [math(\varphi)]$$+1$$[11] 은 $$\varphi$$진법으로 다음과 같이 나타낼 수 있다.
- $$\varphi+1=100_{\varphi}=11_{\varphi}=10.11_{\varphi}=10.1011_{\varphi}= ...$$[12]
1.3. 복소수 진법
더 나아가서, 밑이 복소수인 진법도 만들 수 있다.
가장 간단하게 10i진법을 떠올릴 수 있다.
- $$377=\left(607+1030i\right)_{10i}$$[13]
- $$377=\left(100010001+10101000i\right)_{2i}$$[14]
2. 陣法
군대 등에서 전투력 증강을 위해 사용했던 특수한 병력 배치법. 부대의 병력을 배치하고 부대의 진형을 짜는 방법을 진법이라고 부른다. 화기가 등장하기 전까지만 해도 전투는 대부분 근접전투 위주의 전법이 사용되었으며, 그에 따라 병력을 효율적으로 배치하여 최대한의 효과를 보기 위한 병력 배치법이 여럿 등장했다.
춘추전국시대의 병법가 손빈의 저서에서도 진법에 대한 개념이 나온다.(여담으로 삼국지5의 진법 이름중 대다수는 이 책에서 나오는 이름이다.)
서양에서도 고대부터 진법이 사용되었는데, 고대 그리스의 팔랑크스가 사용했던 밀집방진이나 로마 군단의 3개 대열이 그 예라 할 수 있으며 이후 근세에 사용된 전열보병의 선형진도 진법의 예라 할 수 있다.
<삼국지연의>를 보면 중반 즈음에 조인의 '팔문금쇄진'이라는 진법이 등장하는데 이문열 평역에서는 황건란으로 시작된 후한말의 혼란기가 어느 정도 안정되어 오합지졸이 아닌 제대로 훈련된 병사로 진법을 사용한 첫 사례라고 주장하지만 실제로 그랬던 것은 아니다.
사실 현대에도 이 개념은 여전히 유효하다. 제식훈련을 현재까지도 강조하는 이유 중 하나. 현대전의 소부대 전술에서 사용되는 진법의 종류에 대해서는 진형 문서에서 상세히 설명되고 있으니 관심이 있다면 해당 문서를 참조할 것.
진법붕괴와 함께 전 병력이 궤멸될정도로 중요하지만 사극에서는 진법이고 뭐고 없이 냅다 돌격만하다 난전으로 끝난다. 실제로 사극처럼 무작정 돌진한다면 전멸을 면치 못할 것이다.
2.1. 조선시대의 병서
진법(병서) 문서 참조.
2.2. 무협소설에 등장하는 용어
크게 두 가지의 뜻으로 쓰인다. 사실 현실에 존재하는 물리법칙과 기술력, 병력, 작전 등을 이용해 밑에 써있는 두가지[15] 를 조합해서 써먹으면 위 항목의 진법이 된다.
- 자연물 내지는 인공물을 특정한 방식에 따라 배치하여 특수한 효과를 일으키는 방법의 총칭.
- 무공의 일종. 정확히는 무공의 조합을 통한 협동 공격의 방법론이라고 할 수 있다. 일반적으로 웬만한 대문파면 하나씩은 가지고 있는 듯하다.
소림사의 백팔나한진/십팔나한진 등이 유명하며, 흔히 개나소나 다 쓴다는 '삼재진'등이 있다.
[1] 하지만 16진법은 인간이 읽기 쉽도록 2진법의 4자리를 묶어 1자리로 쓰는 것이기 때문에 때문에 컴퓨터는 실질적으로 2진법만 처리한다고 보면 된다.[2] 로마 숫자 4(IV)는 5(V) 앞에 표기한 1(I)만큼 뺀 기호로, 9(IX)는 10(X) 앞에 표기한 1(I)만큼 뺀 기호로 표기하는 것으로도 이를 알 수 있다.[3] 다만, v, w, x, y는 사용되지 않는데 u가 84에 해당하는 값이기 때문. z는 00000 = !!!!!를 나타내는 데 쓴다.[출처] A B https://terms.naver.com/entry.nhn?docId=3572374&cid=58944&categoryId=58970[4] -1≤b≤1인 경우, 0을 제외한 어떤 자릿수(digit)도 밑의 절댓값보다 크거나 같아지기 때문에 사용할 수 없다. 예를 들어, 377을 0.2진법으로 나타내고자 해도 가장 작은 자연수인 1조차도 0.2보다 크기 때문에 사용할 수 없다.[5] 377 = 4×(-10)2 + 3×(-10)1 + 7 = 400-30+7[6] 377 = -{1×(-10)3 + 7×(-10)2 + 8×(-10) + 3 = 1000-700+80-3[7] -15 = (-2)5 + (-2)4 + 1 = -32+16+1[8] -15 = -{(-2)4 + (-2) +1} = -16+2-1[9] 377 = 6×(7.5)2 + 5×7.5 + 2[10] $$377=\left(\frac{4}{3}\right)^{20}+\left(\frac{4}{3}\right)^{14}+\left(\frac{4}{3}\right)^{5}+\left(\frac{4}{3}\right)^{0}+\left(\frac{4}{3}\right)^{-5}+\left(\frac{4}{3}\right)^{-9}+...$$[11] $$\varphi=\displaystyle\frac{1+\sqrt{5}}{2}=1.618033...$$ 따라서 $$\varphi+1=2.618033...$$이다.[12] φ의 정의인 '1:φ=φ-1:φ를 만족하는 양수'에 의해, φ+1 = φ2가 성립하기 때문에 이런 현상이 일어난다. 이 때문에 정수가 아닌 진법에는 동일한 하나의 수에도 무수히 많은 표기가 존재한다.[13] $$377=6\times\left(10i\right)^{2}+7\times\left(10i\right)^{0}+\left[1\times\left(10i\right)^{3}+3\times\left(10i\right)^{1}\right]i$$[14] $$377=\left(2i\right)^{8}+\left(2i\right)^{4}+\left(2i\right)^{0}+\left[\left(2i\right)^{7}+\left(2i\right)^{5}+\left(2i\right)^{3}\right]i$$[15] 적재적소(장소가 마땅치 않으면 인공적으로 만들거나 특정 장소에 적을 끌어들여서라도)에 알맞는 수의 병력을 배치해 알맞는 작전을 통해 적을 친다.