Octal Number System
Understanding Base-8
Learn About OctalOctal (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
| Decimal | Octal | Binary |
|---|---|---|
| 0 | 0 | 000 |
| 5 | 5 | 101 |
| 7 | 7 | 111 |
| 8 | 10 | 1000 |
| 10 | 12 | 1010 |
| 16 | 20 | 10000 |
| 64 | 100 | 1000000 |
| 100 | 144 | 1100100 |
| 255 | 377 | 11111111 |
| 512 | 1000 | 1000000000 |
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
| Octal | Meaning | Symbol |
|---|---|---|
| 755 | Owner: all, Others: read+execute | rwxr-xr-x |
| 644 | Owner: read+write, Others: read | rw-r--r-- |
| 777 | Everyone: all permissions | rwxrwxrwx |
| 600 | Owner: read+write only | rw------- |
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 100777= 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
- Divide by 8, record remainder
- Divide quotient by 8, record remainder
- Repeat until quotient is 0
- Read remainders bottom-to-top
Example: 500 (decimal) to octal
| Division | Quotient | Remainder |
|---|---|---|
| 500 ÷ 8 | 62 | 4 |
| 62 ÷ 8 | 7 | 6 |
| 7 ÷ 8 | 0 | 7 |
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.