8진법

진법
2진법8진법10진법
12진법16진법60진법

1 개요

Octal

컴퓨터 분야에서 숫자를 표현하기 위해 사용하는 진법 방식. 외국에서는 줄여서 Oct 라고도 부른다. 사실 컴퓨터 분야의 종사자들도 잘 안쓰는 표현방식이다. 다만 50년대~60년대의 초창기 컴퓨터 전문가들은 많이 썼는데 점차 안쓰게 되었다. 현재는 컴퓨터공학과 1학년 과정에서 필수교양으로 배우는 정도. 그 이유는 아래 표현법에서 기술한다.

2 표현법

자릿수 하나가 0부터 7까지 표현할 수 있다. 따라서 별도로 표기하지 않으면 10진수와 잘 구분이 안된다. 컴퓨터 초창기에 많이 썼는데 점차 안 쓰게 된 이유가 이것이다. 그레이스 호퍼 제독에겐 젊은 시절 자꾸 세금 계산이 틀려서 왜 그런가 봤더니 10진법 대신 자기도 모르게 익숙한 8진법을 사용했기 때문이었다는 일화도 있다. 알파벳 기호가 들어가서 직관적으로 알 수 있는 16진법에 비해 사용에 불리한 부분이다.

보통은 숫자 뒤에 (8) 또는 알파벳 o를 붙여서 표시한다. 혼란을 막기 위해 1=l, 2=s, 3=n, 4=m, 5=t, 6=f, 7=u, 0=o 하는 식으로 알파벳으로 표기하는 방법도 있다. 허나 보면 알겠지만 숫자보다 더 불편하니 쓰는 사람이 없다.

8진법을 컴퓨터분야에서 사용하는 이유는 8진수 자릿수 하나가 23을 표현할 수 있어서 2진수를 직관적으로 빠르게 변환 가능하고, 16진수에 비해 사람이 계산하기 간편하기 때문이다. 이는 프로그래밍 할 때 사람이 비트까지 고려해야 했던 초창기 컴퓨터에선 긴요한 부분이었다. 다만 자릿수 하나가 1바이트에 정확히 대응하지 않기 때문에 이후 주된 숫자 표현법을 16진법에 물려주게 된다.

  • 8진법을 2진법으로 바로 변환하려면 각 자릿수를 2진법으로 변환하면 된다.
예를 들면 7148은 111(7) 001(1) 100(4)처럼 끊어서 변환한 다음 전부 붙여주고 앞의 0을 떼준 뒤 1110011002로 적으면 된다.
  • 반대로 2진법을 8진법으로 바로 변환하려면 1의 자리에서부터 3개씩 끊어서 8진법으로 변환해주면된다.
101111010112를 (0)10 111 101 011로 끊어주고 각각 변환하면 27538이 된다.

3 사용처

요즘은 컴퓨터공학과 교육과정 외엔 거의 쓰이지 않는다. 간혹가다 코어한 개발자들이 에디터 프로그램에 변환기능을 넣는 경우도 있다.

윈도우즈 기본제공 계산기에도 8진수 변환기능이 있다. XP 이전의 옛 계산기에는 공학용 기능에 통합되어 있지만 비스타 이후 계산기부터는 프로그래머용 계산기로 따로 분화되어 나왔다.