팔진법
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
팔진법은 8을 기수로 하는 기수법이다. 0부터 7까지의 숫자를 사용하며, 8은 10, 9는 11로 표기하는 방식이다. 이진법의 세 자리를 팔진법의 한 자리로 표현할 수 있어, 초창기 컴퓨터에서 널리 사용되었으나, 십육진법의 등장으로 사용 빈도가 줄었다. 팔진법은 10진법, 2진법, 16진법 등 다른 진법으로 변환이 가능하며, 유닉스 시스템의 파일 권한 표현에도 활용된다. 자연어에서는 멕시코의 파메어와 캘리포니아의 유키어에서 사용되었다.
더 읽어볼만한 페이지
- 8 - 바이트
바이트는 디지털 정보의 기본 단위로, 일반적으로 8비트로 구성되지만, 역사적으로는 다양한 비트 수를 가질 수 있었으며, 컴퓨터 메모리 용량이나 데이터 크기를 나타내는 데 널리 사용된다. - 8 - 팔각형
팔각형은 8개의 변과 꼭짓점을 가진 다각형으로, 내각의 합은 1080°이며, 건축 디자인에 활용되고 문화적 상징으로도 나타난다. - 기수법 - 이진법
이진법은 0과 1 두 개의 숫자를 사용하는 밑이 2인 위치 기수법으로, 컴퓨터 과학의 기초가 되었으며 현대 컴퓨터에서 데이터를 저장하고 처리하는 데 사용된다. - 기수법 - 구진법
구진법은 9를 밑으로 하는 위치 기수법으로 0부터 8까지의 숫자를 사용하여 수를 나타내며, 3의 배수 표현이 간결하고 3의 역수는 유한소수로 표현되는 특징이 있다.
팔진법 | |
---|---|
팔진법 정보 | |
정의 | 밑이 8인 기수법 |
숫자 | 0, 1, 2, 3, 4, 5, 6, 7 |
명칭 | 8진법 (八進法) |
표현 | |
예시 | 십진법 10은 팔진법으로 12임. (12₈ = 1×8¹ + 2×8⁰ = 10₁₀) 이진법 001 001 010은 팔진법으로 112임. |
용도 | |
컴퓨터 과학 | 과거 컴퓨터 시스템에서 사용됨. 현재는 십육진법에 밀려 거의 사용되지 않음. |
장점 | |
이진수 변환 용이성 | 3비트씩 묶어 변환 가능 |
단점 | |
십진수 변환 불편함 | 인간에게 직관적이지 않음 |
2. 기수법
'''팔진법'''은 8을 밑으로 하는 기수법이다. 0부터 7까지 여덟 종류의 숫자를 사용하여 수를 나타낸다. 십진법의 8은 팔진법에서 108, 9는 118, 10은 128 등으로 표기한다. 마찬가지로 십진법 16은 208, 24는 308, 32는 408이 된다. 팔진법으로 표현된 수를 '''팔진수'''라고 부르며, 필요에 따라 괄호와 아래 첨자 8을 사용하여 십진법 표기(아래 첨자 10)와 구분한다. 예를 들어, (13)10 = 158와 같이 나타낼 수 있다.
십진수 정수를 팔진수로 변환하는 방법 중 하나는 유클리드 나눗셈을 이용하는 것이다. 변환하려는 십진수를 8의 가장 큰 거듭제곱부터 시작하여 차례대로 나누고, 그 몫을 기록한다. 나머지에 대해 8의 더 작은 거듭제곱으로 나누는 과정을 80 (즉, 1)까지 반복한다. 이렇게 얻어진 몫들을 순서대로 나열하면 팔진수 표현이 된다.
예를 들어, 십진수 125를 팔진수로 변환하면 다음과 같다.
- 125 = 82 × '''1''' + 61
- 61 = 81 × '''7''' + 5
- 5 = 80 × '''5''' + 0
따라서, 12510 = 1758이다.
다른 예로 십진수 900을 변환하면 다음과 같다.
- 900 = 83 × '''1''' + 388
- 388 = 82 × '''6''' + 4
- 4 = 81 × '''0''' + 4
- 4 = 80 × '''4''' + 0
따라서, 90010 = 16048이다.
과거 컴퓨터 분야에서는 팔진법이 널리 사용되었다. 8은 2의 3승(23)이므로, 이진법 3자리를 팔진법 1자리로 간결하게 표현할 수 있었기 때문이다. 초창기 컴퓨터 중에는 워드 길이가 6비트의 배수인 경우가 많았는데(예: IBM 7090의 36비트, PDP-8의 12비트 등), 이런 시스템에서는 팔진법 표현이 편리했다.[26] C나 Perl과 같은 일부 프로그래밍 언어에서는 숫자 앞에 0을 붙이면 팔진수로 인식한다 (예: 011은 십진수 11이 아니라 팔진수 11, 즉 십진수 9를 의미한다). 그러나 컴퓨터 시스템이 8비트 바이트를 기본 단위로 사용하는 옥테트 구조로 표준화되면서, 이진수 4자리를 한 자리로 묶어 표현하는 십육진법이 더 효율적이고 널리 쓰이게 되어 팔진법의 사용 빈도는 줄어들었다.
2. 1. 정수 표기 예시
wikitext십진수 | 팔진수 | 계산 과정 |
---|---|---|
1310 | 158 | 1×8 + 5 |
1610 | 208 | 2×8 |
2710 | 338 | 3×8 + 3 |
3210 | 408 | 4×8 |
4910 | 618 | 6×8 + 1 |
6410 | 1008 | 1×82 |
8110 | 1218 | 1×82 + 2×81 + 1 = (100)9 |
10010 | 1448 | 1×82 + 4×81 + 4 |
21610 | 3308 | 3×82 + 3×81 = (1000)6 |
32010 | 5008 | 5×82 |
51210 | 10008 | 1×83 |
72910 | 13318 | 1×83 + 3×82 + 3×81 + 1 = (1000)9 |
100010 | 17508 | 1×83 + 7×82 + 5×81 |
194410 | 36308 | 3×83 + 6×82 + 3×81 = (13000)6 |
200010 | 37208 | 3×83 + 7×82 + 2×81 |
204810 | 40008 | 4×83 |
218710 | 42138 | 4×83 + 2×82 + 1×81 + 3 = (3000)9 |
256010 | 50008 | 5×83 |
409610 | 100008 | 1×84 = (5551)9 |
777610 | 171408 | 1×84 + 7×83 + 1×82 + 4×81 = (100000)6 |
2. 2. 소수 표기
팔진법은 밑 8의 소인수가 2뿐이므로, 분수를 팔진법 소수로 나타낼 때 분모가 2의 거듭제곱 형태인 경우에만 유한소수가 된다. 분모가 2 이외의 소인수를 가지는 분수는 모두 순환소수가 된다. 이는 십진법과 비교했을 때 차이가 있다.다음 표는 몇 가지 분수를 십진법과 팔진법으로 나타낸 것을 비교한 것이다.
십진법 밑의 소인수: 2, 5 밑-1의 소인수: 3 밑+1의 소인수: 11 기타 소인수: 7 13 17 19 23 29 31 | 팔진법 밑의 소인수: 2 밑-1의 소인수: 7 밑+1의 소인수: 3 기타 소인수: 5 13 15 21 23 27 35 37 | ||||
분수 | 분모의 소인수 | 위치 표현 | 위치 표현 | 분모의 소인수 | 분수 (팔진법) |
---|---|---|---|---|---|
1/2 | 2 | 0.5 | 0.4 | 2 | 1/2 |
1/3 | 3 | 0.3333... | 0.2525... | 3 | 1/3 |
1/4 | 2 | 0.25 | 0.2 | 2 | 1/4 |
1/5 | 5 | 0.2 | 0.1463... | 5 | 1/5 |
1/6 | 2, 3 | 0.1666... | 0.12525... | 2, 3 | 1/6 |
1/7 | 7 | 0.142857... | 0.1111... | 7 | 1/7 |
1/8 | 2 | 0.125 | 0.1 | 2 | 1/10 |
1/9 | 3 | 0.1111... | 0.0707... | 3 | 1/11 |
1/10 | 2, 5 | 0.1 | 0.06314... | 2, 5 | 1/12 |
1/11 | 11 | 0.0909... | 0.0564272135... | 13 | 1/13 |
1/12 | 2, 3 | 0.08333... | 0.05252... | 2, 3 | 1/14 |
1/13 | 13 | 0.076923... | 0.0473... | 15 | 1/15 |
1/14 | 2, 7 | 0.0714285... | 0.0444... | 2, 7 | 1/16 |
1/15 | 3, 5 | 0.0666... | 0.0421... | 3, 5 | 1/17 |
1/16 | 2 | 0.0625 | 0.04 | 2 | 1/20 |
2. 2. 1. 단위 분수의 소수 변환 값
팔진법에서 10(8)은 십진법의 8에 해당하며, 소인수분해하면 23이므로 2로만 나누어 떨어진다. 이는 분수를 팔진법 소수로 나타낼 때, 분모의 소인수가 2만으로 이루어진 경우에만 유한소수가 된다는 의미이다. 따라서 1/3이나 1/5처럼 분모가 2 이외의 소인수를 가지는 단위 분수는 팔진법에서 모두 순환소수가 된다. 이는 분모의 소인수로 2와 3을 허용하는 육진법이나 2와 5를 허용하는 십진법과 비교했을 때 팔진법의 특징이다.소인수분해 | 팔진 분수 | 팔진 소수 | 육진 소수 | 십진 소수 | 십진 분수 |
---|---|---|---|---|---|
2 | 1/2 | 0.4 | 0.3 | 0.5 | 1/2 |
3 | 1/3 | 0.2525… | 0.2 | 0.3333… | 1/3 |
22 | 1/4 | 0.2 | 0.13 | 0.25 | 1/4 |
5 | 1/5 | 0.1463… | 0.1111… | 0.2 | 1/5 |
2×3 | 1/6 | 0.12525… | 0.1 | 0.1666… | 1/6 |
7 | 1/7 | 0.1111… | 0.0505… | 0.142857… | 1/7 |
23 | 1/10(8) | 0.1 | 0.043 | 0.125 | 1/8 |
32 | 1/11(8) | 0.0707… | 0.04 | 0.1111… | 1/9 |
2×5 | 1/12(8) | 0.06314… | 0.0333… | 0.1 | 1/10 |
2. 2. 2. 무리수
다음 표는 일부 일반적인 무리수를 10진법과 8진법으로 전개한 값을 나타낸다.숫자 | 기수 표현 | |
---|---|---|
10진법 | 8진법 | |
√2 (단위 정사각형의 대각선) | 1.414213562373095048... | 1.3240 4746 3177 1674... |
√3 (단위 정육면체의 대각선) | 1.732050807568877293... | 1.5666 3656 4130 2312... |
√5 (1×2 직사각형의 대각선) | 2.236067977499789696... | 2.1706 7363 3457 7224... |
φ (phi, 황금비 = (1+√5)/2) | 1.618033988749894848... | 1.4743 3571 5627 7512... |
π (파이, 원의 둘레와 지름의 비율) | 3.141592653589793238... | 3.1103 7552 4210 2643... |
e (자연 로그의 밑) | 2.718281828459045235... | 2.5576 0521 3050 5355... |
2. 3. 계산표
+ | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|---|
0 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
1 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 10 |
2 | 2 | 3 | 4 | 5 | 6 | 7 | 10 | 11 |
3 | 3 | 4 | 5 | 6 | 7 | 10 | 11 | 12 |
4 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | 13 |
5 | 5 | 6 | 7 | 10 | 11 | 12 | 13 | 14 |
6 | 6 | 7 | 10 | 11 | 12 | 13 | 14 | 15 |
7 | 7 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
× | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
2 | 0 | 2 | 4 | 6 | 10 | 12 | 14 | 16 |
3 | 0 | 3 | 6 | 11 | 14 | 17 | 22 | 25 |
4 | 0 | 4 | 10 | 14 | 20 | 24 | 30 | 34 |
5 | 0 | 5 | 12 | 17 | 24 | 31 | 36 | 43 |
6 | 0 | 6 | 14 | 22 | 30 | 36 | 44 | 52 |
7 | 0 | 7 | 16 | 25 | 34 | 43 | 52 | 61 |
팔진법의 숫자를 다른 기호로 나타내는 방법도 있다. 예를 들어 다음과 같이 각 숫자를 알파벳으로 대응시킬 수 있다.
십진수 정수를 팔진수로 변환하는 기본적인 방법은 다음과 같다. 주어진 십진수를 8의 가장 큰 거듭제곱으로 나누고, 그 나머지를 다시 8의 그 다음으로 작은 거듭제곱으로 나누는 과정을 80 (즉, 1)이 될 때까지 반복한다. 이렇게 각 단계에서 얻어진 몫들을 순서대로 나열하면 팔진수 표현이 된다.
3. 다른 기호
팔진법 숫자 대응 기호 0 0 1 l 2 s 3 n 4 m 5 t 6 f 7 u
4. 사용 예
예를 들어, 십진수 125를 팔진수로 변환하는 과정은 다음과 같다.
:125 = 82 × 1 + 61
:61 = 81 × 7 + 5
:5 = 80 × 5 + 0
따라서, 12510 = 1758이다.
다른 예시로 십진수 900을 변환해 보자.
:900 = 83 × 1 + 388
:388 = 82 × 6 + 4
:4 = 81 × 0 + 4
:4 = 80 × 4 + 0
따라서, 90010 = 16048이다.
4. 1. 중국
주역의 팔괘는 팔진법 숫자와 다음과 같이 대응된다.
팔진법 숫자 | 팔괘 |
---|---|
0 | ☷ |
1 | ☳ |
2 | ☵ |
3 | ☱ |
4 | ☶ |
5 | ☲ |
6 | ☴ |
7 | ☰ |
독일의 철학자이자 수학자인 고트프리트 빌헬름 라이프니츠는 1703년에 주역의 팔괘 및 64괘와 이진법 사이의 연관성을 제시하였다.[1]
4. 2. 아메리카 원주민
미국 캘리포니아주의 유키어는 화자들이 손가락 자체가 아닌 손가락 사이의 공간을 세는 방식으로 팔진법을 사용했다.[2][31] 유키어는 현재 사어이다.[30]멕시코의 파메어 중 북부 파메어(pmn)는 팔진법을 사용하는데,[27][28] 이는 주먹을 쥔 채로 손가락 관절을 세는 방식에 기반한다.[3] 반면, 근연어인 중앙 파메어(pbs)는 팔진법과 십진법이 혼합된 복잡한 이십진법 체계를 가지고 있다.[29]
4. 3. 유럽
원시 인도유럽어에서 숫자 '9'를 뜻하는 단어가 '새롭다'는 의미의 단어와 연관되었을 수 있다는 주장이 제기되었다. 이를 근거로 일부 학자들은 원시 인도유럽인들이 팔진법을 사용했을 가능성을 제기하기도 했지만, 명확한 증거는 부족하다.[4]1668년, 존 윌킨스는 자신의 저서 ''실제 문자와 철학적 언어에 대한 에세이''(An Essay towards a Real Character, and a Philosophical Languageeng)에서 10진법 대신 8진법 사용을 제안했다. 그는 "나누거나 둘로 쪼개는 것은 가장 자연스럽고 쉬운 방식이며, 8이라는 숫자는 단위를 기준으로 계속해서 둘로 나눌 수 있다"고 설명하며 8진법의 장점을 강조했다.[5]
1716년 스웨덴의 찰스 12세는 에마누엘 스베덴보리에게 10진법을 대체할 새로운 숫자 체계를 만들도록 지시했는데, 이때 왕은 64를 밑으로 하는 진법을 원했다. 하지만 스베덴보리는 밑이 너무 크면 일반 사람들이 사용하기 어렵다고 생각하여 대신 8을 밑으로 하는 8진법을 제안했다. 1718년 스베덴보리는 "새로운 산술(또는 셈법)은 10진법 대신 8에서 변경된다"(En ny rekenkonst som om vexlas wid Thalet 8 i stelle then wanliga wid Thalet 10swe)라는 제목의 원고를 작성했지만 출판하지는 않았다. 이 원고에서 그는 숫자 1부터 7까지를 각각 l, s, n, m, t, f, u(v)라는 자음으로, 0은 모음 o로 표기하는 방식을 고안했다. 예를 들어, 8은 "lo", 16은 "so", 64는 "loo", 512는 "looo"와 같이 표기했다.[6]
1745년 7월, 휴 존스는 "Hirossa Ap-Iccim"이라는 필명으로 더 제너럴맨즈 매거진에 글을 기고하여 영국의 화폐, 무게, 측정 단위에 8진법 체계를 도입하자고 주장했다. 그는 이 체계를 '조지아 표준'(Georgian Standardeng)이라고 부르며, "모든 종류의 정수를 8개의 동일한 부분으로 나누고, 각 부분을 다시 필요에 따라 8개의 실제 또는 가상 입자로 나누는 방식"이라고 설명했다. 그는 "모든 나라가 양손의 손가락 수에서 유래한 10진법을 보편적으로 사용하지만, 8은 분수 없이 절반, 4분의 1, 8분의 1로 나눌 수 있어 훨씬 더 완벽하고 편리한 숫자"라고 강조하며 10진법보다 8진법이 더 자연스럽다고 주장했다. 이후 1753년에 발표한 8진법 계산 관련 논문에서는 "8진법 산술은 사물의 본질에 가장 잘 부합하므로, 현재 사용되는 인공적인 10진법과 대비하여 자연 산술이라고 부를 수 있다"고 결론지었다.[7]
1801년, 제임스 앤더슨은 프랑스가 미터법을 10진법 기반으로 만든 것을 비판하며, 8진법을 뜻하는 '옥탈'(octaleng)이라는 용어를 처음 만들어 사용하며 8진법을 제안했다. 그의 연구는 주로 오락적인 수학에 관한 것이었지만, 순수한 8진법 기반의 도량형 체계를 제안하기도 했으며, 기존의 영국 단위 체계가 이미 상당 부분 8진법적 요소를 가지고 있다는 점을 지적했다.[8]
19세기 중반, 앨프레드 B. 테일러는 8진법이 산술 체계로서 "비교할 수 없을 정도로 가장 좋은 것"이라고 주장했다. 그는 새로운 숫자 표기법과 함께 "un, du, the, fo, pa, se, ki, unty, unty-un, unty-du" 와 같이 숫자를 세는 새로운 이름들을 제안했다. 또한 8의 거듭제곱은 "unty, duty, thety, foty, paty, sety, kity, under" 등으로 부르자고 제안했다. 예를 들어, 10진수 65는 8진수로 101인데, 테일러의 방식으로는 "under-un"이라고 읽는다.[9][10] 테일러는 스베덴보리의 8진법 연구 일부를 자신의 출판물 부록으로 다시 출판하기도 했다.
4. 4. 컴퓨터
팔진법은 UNIVAC 1050, PDP-8, ICL 1900 및 IBM 메인프레임과 같은 초기 컴퓨터 시스템에서 6비트, 12비트, 24비트 또는 36비트 워드를 사용할 때 널리 사용되었다. 워드 크기가 3으로 나누어지기 때문에 팔진법은 이러한 시스템에 이상적인 바이너리 약어였는데, 각 팔진수 자릿수는 3개의 이진 자릿수를 나타내기 때문이다. 따라서 두 자리, 네 자리, 여덟 자리 또는 열두 자리의 팔진수는 전체 머신 워드를 간결하게 표시할 수 있었다. 또한, 이진 디스플레이는 사용하기 복잡하고 십진 디스플레이는 변환을 위한 하드웨어가 필요하며 16진법 디스플레이는 더 많은 숫자를 표시해야 했던 반면, 팔진법은 Nixie 튜브, 세븐 세그먼트 디스플레이, 계산기 등을 연산자 콘솔에 사용할 수 있게 하여 비용을 절감하는 효과도 있었다. 어셈블러가 등장하기 전에는 일부 프로그래머가 팔진법으로 프로그램을 직접 코딩하기도 했다. 예를 들어 Dick Whipple과 John Arnold는 Tiny BASIC Extended를 팔진법을 사용하여 직접 머신 코드로 작성했다.[11]그러나 모든 최신 컴퓨팅 플랫폼은 8비트 바이트로 구성된 16, 32 또는 64비트 워드를 사용한다. 이러한 시스템에서는 바이트당 3개의 팔진수가 필요하며, 가장 중요한 팔진수는 두 개의 이진 자릿수만을 나타낸다. 예를 들어 16비트 워드를 팔진법으로 표현하려면 6자리가 필요하지만, 가장 중요한 첫 번째 팔진수는 1비트(0 또는 1)만 나타내게 되어 다소 부자연스럽다. 이 방식은 가장 중요한 바이트가 4개의 팔진 자릿수에 걸쳐 있어 읽기 어렵다는 단점이 있다. 따라서 오늘날 프로그래밍에서는 두 자리의 16진수가 정확히 1바이트를 나타내므로 16진법이 더 일반적으로 사용된다. 하지만 2의 거듭제곱 워드 크기를 가진 일부 플랫폼, 예를 들어 PDP-11 및 모토로라 68000 패밀리 등에서는 명령 하위 워드를 팔진법으로 표시할 때 더 이해하기 쉬운 경우가 여전히 있다. 현대의 x86 아키텍처도 이 범주에 속하지만, 이 플랫폼에서는 팔진법이 거의 사용되지 않는다. 다만, ModRM 바이트와 같이 2, 3, 3비트 필드로 나뉘는 opcode의 특정 속성은 팔진법으로 표시할 때 더 명확해질 수 있어 인코딩 설명에 유용할 수 있다.
팔진법은 컴퓨팅에서 16진법 대신 사용되기도 하는데, 현대에는 유닉스 시스템에서 파일 권한을 설정할 때(chmod 참조) 가장 자주 사용될 것이다. 이는 16진법과 달리 숫자(0-9) 외에 추가적인 기호가 필요 없다는 장점이 있다.
프로그래밍 언어에서 팔진 리터럴은 다양한 접두사로 식별된다. 숫자 `0`(C, Perl 등), 문자 `o` 또는 `q`, 숫자-문자 조합 `0o`(하스켈, 파이썬 3+, 루비 등), 기호 `&`[12] 또는 `$` 등이 사용된다. 모토로라 방식에서는 `@`를 접두사로 사용하고, 인텔 방식에서는 작은(또는 대문자) `o` 또는 `q`를 접미사로 추가한다.[13][14] Concurrent DOS, Multiuser DOS, REAL/32, DOS Plus, DR-DOS 등에서는 환경 변수 $CLS, $ON, $OFF, $HEADER, $FOOTER 등이 `\nnn` 팔진수 표기법을 지원하며, DR-DOS DEBUG는 팔진수 앞에 `\`를 사용한다. 예를 들어, 리터럴 73(8진법)은 언어에 따라 `073`, `o73`, `q73`, `0o73`, `\73`, `@73`, `&73`, `$73`, `73o` 등으로 표현될 수 있다.
최신 언어들은 십진수와의 혼동을 피하기 위해 접두사 `0` 사용을 줄이고 있다. 접두사 `q`는 `o`가 숫자 `0`으로 오인되는 것을 막기 위해, `0o`는 숫자 리터럴이 변수명으로 오인될 수 있는 문자(`o` 또는 `q`)로 시작하는 것을 방지하기 위해 도입되었다. `0o` 접두사는 C 언어의 16진수 리터럴 접두사 `0x`의 형식을 따른다. Haskell,[15] OCaml,[16] 파이썬 (3.0부터),[17] Raku,[18] 루비,[19] Tcl (9부터),[20] PHP (8.1부터),[21] Rust,[22] ECMAScript (ECMAScript 6부터)[23] 등에서 `0o` 접두사를 지원한다. (원래 자바스크립트에서는 접두사 `0`이 8진법을 나타냈으나 혼란을 유발할 수 있어[24] ECMAScript 3에서 권장되지 않았고 ECMAScript 5에서 삭제되었다[25]).
일부 프로그래밍 언어(C, Perl, PostScript 등)에서는 특정 바이트 값(코드 페이지에 없거나, 비그래픽 문자거나, 특수 의미를 갖거나, 원치 않는 값)을 바이트 문자열의 텍스트/그래픽 표현에서 `\nnn` 형태의 이스케이프 문자로 나타낼 때 팔진수를 사용한다. 특히 UTF-8 인코딩에서 비-ASCII 바이트를 표현할 때 유용할 수 있는데, 시작 바이트는 `\3nn`, 연속 바이트는 `\2nn` 형태의 팔진수 값을 갖기 때문이다.
팔진법은 또한 Ferranti Atlas (1962), Burroughs B5500 (1964), Burroughs B5700 (1971), Burroughs B6700 (1971), Burroughs B7700 (1972) 컴퓨터의 부동 소수점 연산에도 사용되었다.
4. 5. 항공
항공기 내 트랜스폰더는 지상 레이더의 신호를 받으면 네 자리 팔진수 숫자로 표현되는 "스쿼크" 코드를 전송한다. 이 코드는 레이더 화면에서 서로 다른 항공기를 구별하는 데 사용된다.5. 진법 간 변환
팔진법은 다른 기수법, 특히 이진법, 십진법, 십육진법과 상호 변환될 수 있다.
8은 2의 세제곱(23)이므로, 이진법 3자리는 팔진법 1자리와 정확히 대응된다. 이 관계 덕분에 이진법과 팔진법 사이의 변환은 매우 간단하다. 이진법 수를 오른쪽부터 세 자리씩 묶으면 각 묶음이 해당하는 팔진법 숫자로 바로 변환될 수 있으며, 반대로 팔진법 각 자리를 이진법 세 자리로 풀어쓰면 이진법으로 변환된다. 이러한 편리성 때문에 6비트를 기본 단위로 사용하거나 워드 길이가 6의 배수였던 초기 컴퓨터 시스템에서는 팔진법이 이진법 데이터를 간결하게 표현하는 데 유용하게 사용되었다.[26]
십진법과의 변환은 팔진법 각 자릿수에 해당하는 8의 거듭제곱 값을 곱하여 더하는 방식으로 이루어진다. 반대로 십진법을 팔진법으로 변환하려면 십진수를 8로 반복해서 나누고 나머지를 역순으로 취하는 방법을 사용한다.
팔진법과 십육진법 간의 직접 변환은 복잡하지만, 이진법을 중간 단계로 활용하면 쉽게 변환할 수 있다. 팔진법을 이진법으로 변환한 뒤, 그 이진법 수를 네 자리씩 묶어 십육진법으로 변환하거나, 반대로 십육진법을 이진법으로 변환한 뒤 세 자리씩 묶어 팔진법으로 변환하는 방식이다. 컴퓨터 시스템이 바이트(8비트)를 기본 단위로 사용하게 되면서, 이진법 네 자리를 한 자리로 묶는 십육진법이 팔진법보다 더 널리 쓰이게 되었다.
5. 1. 10진수에서 8진수로 변환
십진 소수를 팔진법으로 변환하려면 8을 곱한다. 결과의 정수 부분이 팔진 소수의 첫 번째 숫자가 된다. 결과의 소수 부분을 사용하여 이 과정을 반복하며, 소수 부분이 0이 되거나 허용 가능한 오차 범위 내에 들어올 때까지 반복한다.예시: 0.1640625를 팔진법으로 변환하기:
: 0.1640625 × 8 = 1.3125 = '''1''' + 0.3125
: 0.3125 × 8 = 2.5 = '''2''' + 0.5
: 0.5 × 8 = 4.0 = '''4''' + 0
따라서, 0.164062510 = 0.1248이다.
이 방법(8 곱하기)은 정수 부분과 소수 부분을 모두 가진 십진수를 처리할 때 정수 부분을 변환하는 방법과 결합하여 사용할 수 있다. 이때 소수 부분 변환에는 8을 곱하는 방법을 사용한다.
5. 2. 8진수에서 10진수로 변환
8진수 ''k''를 십진수로 변환하려면, 각 자릿수에 해당하는 8의 거듭제곱 값을 곱한 뒤 모두 더하는 방식을 사용한다. 이를 공식으로 나타내면 다음과 같다.:''k'' = Σ (''a''''i'' × 8''i'') (''i''는 0부터 ''n''까지)
여기서 ''a''''i''는 변환하려는 8진수의 각 자릿수를 의미하고, ''i''는 해당 자릿수의 위치(가장 오른쪽 자릿수를 0으로 시작하여 왼쪽으로 1씩 증가)를 나타낸다.
예를 들어, 8진수 7648를 십진수로 변환하는 과정은 다음과 같다.
:7648 = (7 × 82) + (6 × 81) + (4 × 80) = (7 × 64) + (6 × 8) + (4 × 1) = 448 + 48 + 4 = 50010
두 자리 8진수의 경우에는 첫 번째 자릿수에 8을 곱하고 두 번째 자릿수를 더하여 간단히 계산할 수도 있다.
:예: 658 = (6 × 8) + 5 = 48 + 5 = 5310
5. 3. 8진수에서 2진수로 변환
팔진수를 이진수로 변환하려면 각 팔진수 숫자를 해당하는 3비트 이진수 표현으로 바꾸면 된다.예시: 팔진수 518을 이진수로 변환하는 과정은 다음과 같다.
- 58 = 1012
- 18 = 0012
따라서, 518 = 1010012이다.
5. 4. 2진수에서 8진수로 변환
8은 2의 3제곱(23)이므로, 이진법으로 표현된 수를 오른쪽 끝에서부터 세 자리씩 묶으면 각 묶음이 팔진법의 한 자리 숫자에 정확히 대응된다. 이를 이용하면 이진수를 팔진수로 쉽게 변환할 수 있다.예를 들어, 이진수 101101112을 팔진수로 변환하는 과정은 다음과 같다.
# 이진수를 오른쪽 끝에서부터 세 자리씩 묶는다: (10)(110)(111)2
# 가장 왼쪽 묶음의 자릿수가 부족하면 앞에 0을 채워 세 자리로 만든다: (010)(110)(111)2
# 각 묶음을 해당하는 팔진수 숫자로 변환한다:
#* 0102 = 28
#* 1102 = 68
#* 1112 = 78
# 변환된 팔진수 숫자들을 순서대로 이어 붙인다: 2678
따라서, 101101112 = 2678이다.
이러한 변환의 편리성 때문에 초기의 컴퓨터 환경에서는 팔진법이 유용하게 사용되었다. 당시 컴퓨터는 6비트를 하나의 문자로 사용하거나 워드 길이가 6의 배수인 경우가 많았는데 (예: PDP-8의 12비트, IBM 7090의 36비트), 이는 이진수 세 자리(즉, 팔진수 한 자리)의 묶음과 잘 맞아떨어졌기 때문이다.[26]
5. 5. 8진수에서 16진수로 변환
8진수를 16진수로 변환할 때는 이진수를 중간 단계로 활용한다. 먼저 8진수를 각 자리별로 3자리의 이진수로 변환한 다음, 이 이진수를 오른쪽부터 4자리씩 묶어 각 묶음을 해당하는 16진수 숫자로 변환한다.예를 들어, 8진수 10578을 16진수로 변환하는 과정은 다음과 같다.
먼저, 8진수 각 자리를 3자리 이진수로 변환한다.
8진수 자릿수 | 1 | 0 | 5 | 7 |
---|---|---|---|---|
3자리 2진수 | 001 | 000 | 101 | 111 |
이렇게 얻은 이진수 001000101111을 오른쪽부터 4자리씩 묶는다.
4자리 2진수 묶음 | 0010 | 0010 | 1111 |
---|---|---|---|
16진수 자릿수 | 2 | 2 | F |
따라서, 10578 = 22F16이다.
5. 6. 16진수에서 8진수로 변환
16진수를 8진수로 바꾸려면 먼저 각 16진수 자리를 4자리 2진수로 바꾼다. 그 다음, 얻어진 2진수를 뒤에서부터 3자리씩 묶어 각 묶음을 8진수 숫자로 변환하면 된다.예를 들어, 16진수 3FA516을 8진수로 변환하는 과정은 다음과 같다.
;1. 16진수를 2진수로 변환:
16진수 | 3 | F | A | 5 |
---|---|---|---|---|
2진수 (4비트) | 0011 | 1111 | 1010 | 0101 |
;2. 2진수를 3비트씩 묶어 8진수로 변환:
2진수 (3비트씩) | 0 | 011 | 111 | 110 | 100 | 101 |
---|---|---|---|---|---|---|
8진수 | 0 | 3 | 7 | 6 | 4 | 5 |
따라서 3FA516 = 376458이다.
6. 명수법
멕시코의 북 파메어[27](Northern Pame)는 자연어 중 팔진법을 사용하는 드문 예이다.[28] 이들은 주먹을 쥔 채로 손가락 관절을 세는 방식으로 수를 센다.[3] 반면, 가까운 관계인 중앙 파메어[29](Central Pame)는 팔진법과 십진법이 혼합된 복잡한 이십진법 체계를 사용한다.
미국 캘리포니아주의 Yuki|유키어yuk[30] 역시 팔진법을 사용했는데, 이는 손가락 자체가 아닌 손가락 사이의 공간을 세는 독특한 방식 때문이었다.[2][31] 그러나 유키어는 현재 사어가 되었다.
참조
[1]
웹사이트
Explanation of binary arithmetic
http://www.leibniz-t[...]
1703
[2]
간행물
Ethnomathematics: A Multicultural View of Mathematical Ideas
[3]
간행물
The typology of Pame number systems and the limits of Mesoamerica as a linguistic area
http://linguistics.b[...]
[4]
서적
Indo-European numerals
Mouton de Gruyter
1991
[5]
서적
An Essay Towards a Real Character and a Philosophical Language
https://books.google[...]
1668
[6]
문서
Donald Knuth, The Art of Computer Programming
[7]
문서
See H. R. Phalen, "Hugh Jones and Octave Computation," The American Mathematical Monthly 56 (August–September 1949): 461-465.
[8]
서적
James Anderson, On Octal Arithmetic
https://books.google[...]
T. Bensley
1801-02
[9]
문서
Alfred B. Taylor, Report on Weights and Measures
https://archive.org/[...]
Pharmaceutical Association
1859-09-15
[10]
간행물
Alfred B. Taylor, Octonary numeration and its application to a system of weights and measures
https://books.google[...]
Philadelphia
1887
[11]
간행물
TB Code Sheet
1975-12
[12]
서적
GW-BASIC User's Manual
http://www.antonis.d[...]
1987
[13]
서적
Arbeitsbuch Informatik - eine praxisorientierte Einführung in die Datenverarbeitung mit Projektaufgabe
https://books.google[...]
Vieweg-Verlag, reprint: Springer-Verlag
2013
[14]
서적
Informatik für Ingenieure und Naturwissenschaftler: PC- und Mikrocomputertechnik, Rechnernetze
https://books.google[...]
Vieweg, reprint: Springer-Verlag
2007-10-04
[15]
웹사이트
Haskell 98 Lexical Structure
https://www.haskell.[...]
2019-11-01
[16]
웹사이트
OCaml: 7.1 Lexical conventions
http://caml.inria.fr[...]
2013-07-01
[17]
웹사이트
Python 3
https://docs.python.[...]
2014-03-20
[18]
웹사이트
Perl 6
http://perlcabal.org[...]
2014-10-31
[19]
웹사이트
RubySpec
https://github.com/r[...]
2022-05-29
[20]
웹사이트
Tcl
http://wiki.tcl.tk/4[...]
2014-01-04
[21]
웹사이트
PHP.Watch - PHP 8.1: Explicit Octal numeral notation
https://php.watch/ve[...]
2021-01-08
[22]
웹사이트
Rust literals and operators
https://doc.rust-lan[...]
2022-05-28
[23]
웹사이트
ECMAScript 6th Edition draft
https://people.mozil[...]
2013-12-16
[24]
웹사이트
Why does the radix for JavaScript's parseInt default to 8?
https://stackoverflo[...]
2011-04-08
[25]
웹사이트
parseInt()
https://developer.mo[...]
2014-01-03
[26]
서적
黒後家蜘蛛の会3
創元推理文庫
[27]
웹사이트
Ethnologue: Languages of the World
http://www.ethnologu[...]
2008-03-28
[28]
간행물
The typology of Pame number systems and the limits of Mesoamerica as a linguistic area
http://linguistics.b[...]
[29]
웹사이트
Ethnologue: Languages of the World
http://www.ethnologu[...]
2008-03-28
[30]
웹사이트
Ethnologue: Languages of the World
http://www.ethnologu[...]
2008-03-28
[31]
서적
Ethnomathematics: A Multicultural View of Mathematical Ideas
Chapman & Hall/CRC
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com