Octal Number System

Understanding Base-8

Learn About Octal

Octal (base-8) bridges binary and human readability. While hexadecimal has largely replaced it in modern computing, octal remains important in Unix file permissions and some programming contexts. Understanding octal provides insight into number system design and computer history.

How Octal Works

Positional Values

Each position is a power of 8:

  • ...512, 64, 8, 1 (8³, 8², 8¹, 8⁰)

Example: 752 (octal)

  • 7 × 64 = 448
  • 5 × 8 = 40
  • 2 × 1 = 2
  • Total = 490 (decimal)

Why Only 0-7?

When you reach 8, you carry to the next position:

  • Decimal 7 = 7 octal
  • Decimal 8 = 10 octal
  • Decimal 9 = 11 octal

Octal-Decimal Comparison

DecimalOctalBinary
00000
55101
77111
8101000
10121010
162010000
641001000000
1001441100100
25537711111111
51210001000000000

Octal and Binary

The key relationship: each octal digit equals exactly 3 binary digits.

Octal to Binary

Convert each digit to 3 bits:

  • 0 = 000, 1 = 001, 2 = 010, 3 = 011
  • 4 = 100, 5 = 101, 6 = 110, 7 = 111

Example: 752 (octal) to binary

  • 7 = 111
  • 5 = 101
  • 2 = 010
  • Result: 111101010

Binary to Octal

Group bits in threes from the right:

  • 111101010 → 111 | 101 | 010 → 7 5 2

Octal in Unix File Permissions

The most common modern use of octal is Unix/Linux file permissions.

Permission Bits

  • r (read): 4
  • w (write): 2
  • x (execute): 1

Three Categories

  • Owner: First digit
  • Group: Second digit
  • Others: Third digit

Common Permissions

OctalMeaningSymbol
755Owner: all, Others: read+executerwxr-xr-x
644Owner: read+write, Others: readrw-r--r--
777Everyone: all permissionsrwxrwxrwx
600Owner: read+write onlyrw-------

History: Why Octal?

Early Computing

  • Some early computers used 12, 24, or 36-bit words
  • These divide evenly by 3
  • Octal provided clean representation
  • PDP-8 (12-bit) and PDP-10 (36-bit) used octal extensively

The Shift to Hexadecimal

  • 8-bit bytes became standard (IBM 360)
  • 8 bits = 2 hex digits (perfect fit)
  • 8 bits = 2.67 octal digits (awkward)
  • Hex won for most purposes

Octal in Programming

Notation

  • C/C++/JavaScript: Leading 0 (dangerous!)
  • Python 3: 0o prefix (clear)
  • Some languages: 0o or @

The Danger of Leading Zeros

In C and JavaScript:

  • 010 = 8 (octal!), not 10
  • 0777 = 511 (often for permissions)

This causes bugs when people accidentally write 010 expecting decimal 10.

Modern Practice

  • Python 3 requires explicit 0o prefix
  • Many style guides discourage implicit octal
  • Octal literals mainly used for file permissions

Converting Decimal to Octal

Method: Repeated Division by 8

  1. Divide by 8, record remainder
  2. Divide quotient by 8, record remainder
  3. Repeat until quotient is 0
  4. Read remainders bottom-to-top

Example: 500 (decimal) to octal

DivisionQuotientRemainder
500 ÷ 8624
62 ÷ 876
7 ÷ 807

Result: 764 (octal)

Conclusion

Octal (base-8) was historically important in computing when word sizes were multiples of 3 bits. While hexadecimal has largely replaced it for general use, octal remains essential for Unix file permissions and occasionally appears in legacy systems. The key insight is that each octal digit represents exactly 3 binary bits, making conversion straightforward. Understanding octal helps when working with Unix systems, reading legacy code, or studying computer history.

Related Articles

Octal Number System: Understanding Base-8 | YounitConverter