The
octal numeral
system, or
oct for short, is the
base8 number system, and uses the digits 0 to 7.
Numerals can be made from
binary numerals by grouping
consecutive binary digits into groups of three (starting from the
right). For example, the binary representation for decimal 74 is
1001010, which can be grouped into (00)1 001 010 — so the octal
representation is 112.
In decimal systems each decimal place is a base of 10. For example:
 \mathbf{74}_{10} = \mathbf{7} \times 10^1 + \mathbf{4} \times
10^0
In octal numerals each place is a power with base 8. For example:
 \mathbf{112}_8 = \mathbf{1} \times 8^2 + \mathbf{1} \times 8^1
+ \mathbf{2} \times 8^0
By performing the calculation above in the familiar decimal system
we see why 112 in octal is equal to 64+8+2 = 74 in decimal.
Octal is sometimes used in
computing
instead of
hexadecimal.
Usage
By Native Americans
The
Yuki language in California and the Pamean languages in Mexico have octal
systems because the speakers count using the spaces between their
fingers rather than the fingers themselves.
In Europe
In 1716 King
Charles XII of
Sweden asked
Emanuel
Swedenborg to elaborate a number system based on 64 instead of
10. Swedenborg however argued that for people with less
intelligence than the king such a big base would be too difficult
and instead proposed 8 as base. In 1718 Swedenborg wrote a
manuscript, which has not been published: "En ny räknekonst som
omväxlas vid talet 8 istället för det vanliga vid talet 10" ("A new
arithmetic (or art of counting) which changes at the Number 8
instead of the usual at the Number 10"). The numbers 17 are there
denoted by the consonants l, s, n, m, t, f, u (v) and zero by the
vowel o. Thus 8 = "lo", 16 = "so", 24 = "no", 64 = "loo", 512 =
"looo" etc. Numbers with consecutive consonants are pronounced with
vowel sounds between in accordance with a special rule.
In fiction
 The fictional alien felinoid species Kilrathi of the Wing Commander universe
count in octal, since their paws have four toes instead of 5.
 The Octospider species of Rama
Revealed and the computer game RAMA use a colour code based on octal
system, and its comprehension is a puzzle of the game
scenario.
 The Alterans from Stargate SG1 use octal, even though they have
ten fingers. It's possible that they count the gaps between each
finger, ignore the thumb on each hand, or use the thumb as a base2
counter (as on an abacus) allowing them to
count up to 30 (24 in decimal) on their hands.
 The satirist Tom Lehrer famously
remarked in his song parodying new math
that "base 8 is just like base 10... if you're missing two
fingers."
 In the firstperson shooter
Prey, numerical codes to
open doors are entered in octal.
 The Tau race in the
Warhammer 40,000 universe use the
octal system.
 In The Beekeeper's Apprentice, Laurie R. King's first Sherlock Holmes pastiche featuring Mary Russell, base eight math played a key role
in solving the mystery.
 In the Star Wars universe, the alien
race known as the Hutts counts in
base eight, as they only have eight fingers.
 In the Niven/Pournelle novell Footfall the pachydermoid Fithp count in base
eight and tend to group things into powers of eight, such as
military divisions of 64 soldiers. Niven's Kzin species also uses
octal.
In computers
Octal is sometimes used in computing instead of
hexadecimal, perhaps most often in modern times
in conjunction with
file
permissions under
Unix systems (see
chmod). It has the advantage of not requiring
any extra symbols as digits (the hexadecimal system is base16 and
therefore needs six additional symbols beyond 0–9). It is also used
for digital displays.
At the time when octal originally became widely used in computing,
systems such as the
ICL 1900 and
IBM mainframes employed 24bit (or 36bit)
words. Octal was an ideal abbreviation of binary for these machines
because eight (or twelve) digits could concisely display an entire
machine word (each octal digit covering three binary digits). It
also cut costs by allowing
Nixie tubes,
sevensegment displays, and
calculators to be used for the operator
consoles, where binary displays were too complex to use, decimal
displays needed complex hardware to convert radixes, and
hexadecimal displays needed to display letters.
All modern computing platforms, however, use 16, 32, or 64bit
words, further divided into eightbit
bytes. On
such systems three octal digits per byte would be required, with
the most significant octal digit inelegantly representing only two
binary digits (plus one bit of the next most significant byte, if
any). Therefore, hexadecimal is more commonly used in programming
languages today, since two hexadecimal digits exactly specify a
byte. Some platforms with a poweroftwo word size still have
instruction subwords that are more easily understood if displayed
in octal; this includes the
PDP11. The
modernday ubiquitous
x86
architecture belongs to this category as well, but octal is
almost never used on this platform.
In programming languages, octal
literals are typically identified
with a variety of prefixes, including the digit
0, the
letters
o or
q, or the digit–letter combination
0o. For example, the literal 73 (base 8) might be
represented as
073,
o73,
q73, or
0o73 in various languages. Newer languages have been
abandoning the prefix
0, as decimal numbers are often
represented with leading zeroes. The prefix
q was
introduced to avoid the prefix
o being mistaken for a
zero, while the prefix
0o was introduced to avoid starting
a numerical literal with an alphabetic character (like
o
or
q), since these might cause the literal to be confused
with a variable name. The prefix
0o also follows the model
set by the prefix
0x used for hexadecimal literals in the
C language.
Conversion between bases
For more information and other bases, see Conversion among
bases.
Decimal to Octal conversion
Method of successive division by 8
To convert integer decimals to octal, divide the original number by
the largest possible power of 8 and successively divide the
remainders by successively smaller powers of 8 until the power is
1. The octal representation is formed by the quotients, written in
the order generated by the algorithm.
For example, to convert 125
_{10} to octal:
 125 / 8^2 = 1
 125 − ((8^2)*1) = 61
 61 / 8^1 = 7
 61 − ((8^1)*7) = 5
 Thus: 125_{10} = 175_{8}
Another example:
 900 / 8^3 = 1
 900 − ((8^3)*1) = 388
 388 / 8^2 = 6
 388 − ((8^2)*6) = 4
 4 / 8^1 = 0
 4 − ((8^1)*0) = 4
 4 / 8^0 = 4
 Thus: 900_{10} = 1604_{8}
Method of successive multiplication by 8
To convert a decimal fraction to octal, multiply by 8; the integer
part of the result is the first digit of the octal fraction. Repeat
the process with the fractional part of the result, until it is
null or within acceptable error bounds.
Example: Convert 0.1640625 to octal:
 0.1640625 x 8 = 1.3125 = 1 + 0.3125
 0.3125 x 8 = 2.5 = 2 + 0.5
 0.5 x 8 = 4.0 = 4 + 0
 Thus: 0.1640625_{10} = 0.124_{8}
These two methods can be combined to handle decimal numbers with
both integer and fractional parts, using the first on the integer
part and the second on the fractional part.
Octal to Decimal conversion
To convert a number
k to decimal, use the formula that
defines its base8 representation:
 k = \sum_{i=0}^n \left( a_i\times 8^i \right).
Example: Convert 764
_{8} to decimal:
 764_{8} = 7 x 8² + 6 x 8¹ + 4 x 8° = 448 + 48 + 4 =
500_{10}
For doubledigit octal numbers this method amounts to multiplying
the lead digit by 8 and adding the second digit to get the
total.
Example: 65
_{8} = 6x8 + 5 = 53
_{10}
Octal to Binary Conversion
To convert octal to binary, replace each octal digit by its binary
representation.
Example: Convert 51
_{8} to binary:
 5_{8} = 101_{2}
 1_{8} = 001_{2}
 Thus: 51_{8} = 101 001_{2}
Binary to Octal conversion
The process is the reverse of the previous algorithm. The binary
digits are grouped by threes, starting from the decimal point and
proceeding to the left and to the right. Add leading 0s (or
trailing zeros to the right of decimal point) to fill out the last
group of three if necessary. Then replace each trio with the
equivalent octal digit.
For instance, convert binary 1010111100 to octal:
 { border="1" cellspacing="0" cellpadding="4"
Thus 1010111100
_{2}= 1274
_{8}
Convert binary 11100.01001 to octal:
 { border="1" cellspacing="0" cellpadding="4"
Thus 11100.01001
_{2}= 34.22
_{8}
Octal to Hexadecimal conversion
The conversion is made in two steps using binary as an intermediate
base. Octal is converted to binary and then binary to hexadecimal,
grouping digits by fours, which correspond each to a hexadecimal
digit.
For instance, convert octal 1057 to hexadecimal:
 To binary:
 { border="1" cellspacing="0" cellpadding="4"
 then to hexadecimal:
 { border="1" cellspacing="0" cellpadding="4"
Thus 1057
_{8}= 22F
_{16}
Hexadecimal to Octal conversion
Reverse the previous algorithm.
See also
References
External links

001 
010 
111 
100 

1 
2 
7 
4 

011 
100 
. 
010 
010 

3 
4 
. 
2 
2 

1 
0 
5 
7 

001 
000 
101 
111 

0010 
0010 
1111 

2 
2 
F 