Octal (base 8) is a
numeral system with
eight as the
base.
In the decimal system, each place is a
power of ten. For example:
:
In the octal system, each place is a power of eight. For example:
:
By performing the calculation above in the familiar decimal system, we see why 112 in octal is equal to
in decimal.
Octal numerals can be easily converted from
binary representations (similar to a
quaternary numeral system) by grouping consecutive binary digits into groups of three (starting from the right, for integers). For example, the binary representation for decimal 74 is 1001010. Two zeroes can be added at the left: , corresponding to the octal digits , yielding the octal representation 112.
Usage
In China

The eight
bagua or trigrams of the
I Ching correspond to octal digits:
* 0 = ☷, 1 = ☳, 2 = ☵, 3 = ☱,
* 4 = ☶, 5 = ☲, 6 = ☴, 7 = ☰.
Gottfried Wilhelm Leibniz
Gottfried Wilhelm Leibniz (or Leibnitz; – 14 November 1716) was a German polymath active as a mathematician, philosopher, scientist and diplomat who is credited, alongside Sir Isaac Newton, with the creation of calculus in addition to ...
made the connection between trigrams, hexagrams and binary numbers in 1703.
By Native Americans
* The
Yuki language in
California
California () is a U.S. state, state in the Western United States that lies on the West Coast of the United States, Pacific Coast. It borders Oregon to the north, Nevada and Arizona to the east, and shares Mexico–United States border, an ...
has an octal system because the speakers count using the spaces between their fingers rather than the fingers themselves.
* The
Pamean languages in
Mexico
Mexico, officially the United Mexican States, is a country in North America. It is the northernmost country in Latin America, and borders the United States to the north, and Guatemala and Belize to the southeast; while having maritime boundar ...
also have an octal system, because their speakers count on the knuckles of a closed fist.
By Europeans
* It has been suggested that the reconstructed
Proto-Indo-European (PIE) word for "nine" might be related to the PIE word for "new". Based on this, some have speculated that proto-Indo-Europeans used an octal number system, though the evidence supporting this is slim.
* In 1668,
John Wilkins in ''
An Essay towards a Real Character, and a Philosophical Language'' proposed use of base 8 instead of 10 "because the way of Dichotomy or Bipartition being the most natural and easie kind of Division, that Number is capable of this down to an Unite".
* In 1716, King
Charles XII of Sweden asked
Emanuel Swedenborg
Emanuel Swedenborg (; ; born Emanuel Swedberg; (29 January 168829 March 1772) was a Swedish polymath; scientist, engineer, astronomer, anatomist, Christian theologian, philosopher, and mysticism, mystic. He became best known for his book on the ...
to elaborate a number system based on 64 instead of 10. Swedenborg argued, however, that for people with less intelligence than the king such a big base would be too difficult and instead proposed 8 as the base. In 1718 Swedenborg wrote (but did not publish) a manuscript: "''En ny rekenkonst som om vexlas wid Thalet 8 i stelle then wanliga wid Thalet 10''" ("A new arithmetic (or art of counting) which changes at the Number 8 instead of the usual at the Number 10"). The numbers 1–7 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.
*Writing under the pseudonym "Hirossa Ap-Iccim" in ''
The Gentleman's Magazine'', (London) July 1745,
Hugh Jones proposed an octal system for British coins, weights and measures. "Whereas reason and convenience indicate to us an uniform standard for all quantities; which I shall call the ''Georgian standard''; and that is only to divide every integer in each ''species'' into eight equal parts, and every part again into 8 real or imaginary particles, as far as is necessary. For tho' all nations count universally by ''tens'' (originally occasioned by the number of digits on both hands) yet 8 is a far more complete and commodious number; since it is divisible into halves, quarters, and half quarters (or units) without a fraction, of which subdivision ''ten'' is uncapable...." In a later treatise on
Octave computation (1753) Jones concluded: "Arithmetic by ''Octaves'' seems most agreeable to the Nature of Things, and therefore may be called Natural Arithmetic in Opposition to that now in Use, by Decades; which may be esteemed Artificial Arithmetic."
* In 1801,
James Anderson criticized the French for basing the
metric system
The metric system is a system of measurement that standardization, standardizes a set of base units and a nomenclature for describing relatively large and small quantities via decimal-based multiplicative unit prefixes. Though the rules gover ...
on decimal arithmetic. He suggested base 8, for which he coined the term ''octal''. His work was intended as recreational mathematics, but he suggested a purely octal system of weights and measures and observed that the existing system of
English units
English units were the units of measurement used in England up to 1826 (when they were replaced by Imperial units), which evolved as a combination of the Anglo-Saxons, Anglo-Saxon and Ancient Roman units of measurement, Roman systems of units. V ...
was already, to a remarkable extent, an octal system.
* In the mid-19th century, Alfred B. Taylor concluded that "Our octonary
ase 8 radix is, therefore, beyond all comparison the "''best possible one''" for an arithmetical system." The proposal included a graphical notation for the digits and new names for the numbers, suggesting that we should count "''un'', ''du'', ''the'', ''fo'', ''pa'', ''se'', ''ki'', ''unty'', ''unty-un'', ''unty-du''" and so on, with successive multiples of eight named "''unty'', ''duty'', ''thety'', ''foty'', ''paty'', ''sety'', ''kity'' and ''under''." So, for example, the number 65 (101 in octal) would be spoken in octonary as ''under-un''. Taylor also republished some of Swedenborg's work on octal as an appendix to the above-cited publications.
In computers
Octal became widely used in computing when systems such as the
UNIVAC 1050,
PDP-8,
ICL 1900 and
IBM mainframes employed
6-bit,
12-bit
Before the widespread adoption of ASCII in the late 1960s, six-bit character codes were common and a 12-bit word, which could hold two characters, was a convenient size. This also made it useful for storing a single decimal digit along with a si ...
,
24-bit or
36-bit words. Octal was an ideal abbreviation of binary for these machines because their word size is divisible by three (each octal digit represents three binary digits). So two, four, eight or twelve digits could concisely display an entire
machine word. It also cut costs by allowing
Nixie tubes,
seven-segment 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 radices, and
hexadecimal
Hexadecimal (also known as base-16 or simply hex) is a Numeral system#Positional systems in detail, positional numeral system that represents numbers using a radix (base) of sixteen. Unlike the decimal system representing numbers using ten symbo ...
displays needed to display more numerals.
All modern computing platforms, however, use 16-, 32-, or 64-bit words, further divided into
eight-bit bytes. On such systems three octal digits per byte would be required, with the most significant octal digit representing two binary digits (plus one bit of the next significant byte, if any). Octal representation of a 16-bit word requires 6 digits, but the most significant octal digit represents (quite inelegantly) only one bit (0 or 1). This representation offers no way to easily read the most significant byte, because it's smeared over four octal digits. Therefore, hexadecimal is more commonly used in programming languages today, since two hexadecimal digits exactly specify one byte. Some platforms with a power-of-two word size still have instruction subwords that are more easily understood if displayed in octal; this includes the
PDP-11 and
Motorola 68000 family. The modern-day ubiquitous
x86 architecture belongs to this category as well, but octal is rarely used on this platform, although certain properties of the binary encoding of opcodes become more readily apparent when displayed in octal, e.g. the ModRM byte, which is divided into fields of 2, 3, and 3 bits, so octal can be useful in describing these encodings. Before the availability of
assemblers, some programmers would handcode programs in octal; for instance, Dick Whipple and John Arnold wrote
Tiny BASIC Extended directly in machine code, using octal.
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 base-16 and therefore needs six additional symbols beyond 0–9).
In programming languages, octal
literals are typically identified with a variety of
prefixes, including the digit
0
, the letters
o
or
q
, the digit–letter combination
0o
, or the symbol
&
or
$
. In ''Motorola convention'', octal numbers are prefixed with
@
, whereas a small (or capital
) letter
o
or
q
is added as a
postfix following the ''Intel convention''.
In
Concurrent DOS,
Multiuser DOS and
REAL/32 as well as in
DOS Plus
DOS Plus (erroneously also known as DOS+) was the first operating system developed by Digital Research's OEM Support Group in Newbury, Berkshire, UK, first released in 1985. DOS Plus 1.0 was based on CP/M-86 Plus combined with the PCM ...
and
DR-DOS various
environment variable
An environment variable is a user-definable value that can affect the way running processes will behave on a computer. Environment variables are part of the environment in which a process runs. For example, a running process can query the va ...
s like
$CLS,
$ON,
$OFF,
$HEADER or
$FOOTER support an
\nnn
octal number notation,
and DR-DOS
DEBUG utilizes
\
to prefix octal numbers as well.
For example, the literal 73 (base 8) might be represented as
073
,
o73
,
q73
,
0o73
,
\73
,
@73
,
&73
,
$73
or
73o
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; it is supported by
Haskell,
OCaml,
Python as of version 3.0,
Raku,
Ruby,
Tcl as of version 9,
PHP as of version 8.1,
Rust and
ECMAScript
ECMAScript (; ES) is a standard for scripting languages, including JavaScript, JScript, and ActionScript. It is best known as a JavaScript standard intended to ensure the interoperability of web pages across different web browsers. It is stan ...
as of ECMAScript 6 (the prefix
0
originally stood for base 8 in
JavaScript
JavaScript (), often abbreviated as JS, is a programming language and core technology of the World Wide Web, alongside HTML and CSS. Ninety-nine percent of websites use JavaScript on the client side for webpage behavior.
Web browsers have ...
but could cause confusion, therefore it has been discouraged in ECMAScript 3 and dropped in ECMAScript 5
).
Octal numbers that are used in some programming languages (C,
Perl,
PostScript...) for textual/graphical representations of byte strings when some byte values (unrepresented in a code page, non-graphical, having special meaning in current context or otherwise undesired) have to be to
escaped as
\nnn
. Octal representation may be particularly handy with non-ASCII bytes of
UTF-8, which encodes groups of 6 bits, and where any start byte has octal value
\3nn
and any continuation byte has octal value
\2nn
.
Octal was also used for
floating point in the
Ferranti Atlas (1962),
Burroughs B5500 (1964),
Burroughs B5700 (1971),
Burroughs B6700 (1971) and
Burroughs B7700 (1972) computers.
In aviation
Transponders in aircraft transmit a "squawk"
code
In communications and information processing, code is a system of rules to convert information—such as a letter, word, sound, image, or gesture—into another form, sometimes shortened or secret, for communication through a communicati ...
, expressed as a four-octal-digit number, when interrogated by ground radar. This code is used to distinguish different aircraft on the radar screen.
Conversion between bases
Decimal to octal conversion
Method of successive Euclidean division by 8
To convert integer decimals to octal,
divide the original number by the largest possible power of 8 and 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 + 61
:61 = 8
1 × 7 + 5
:5 = 8
0 × 5 + 0
Therefore, 125
10 = 175
8.
Another example:
:900 = 8
3 × 1 + 388
:388 = 8
2 × 6 + 4
:4 = 8
1 × 0 + 4
:4 = 8
0 × 4 + 0
Therefore, 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 × 8 = 1.3125 = 1 + 0.3125
:0.3125 × 8 = 2.5 = 2 + 0.5
:0.5 × 8 = 4.0 = 4 + 0
Therefore, 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.
Method of successive duplication
To convert integer decimals to octal, prefix the number with "0.". Perform the following steps for as long as digits remain on the right side of the radix:
Double the value to the left side of the radix, using ''octal'' rules, move the radix point one digit rightward, and then place the doubled value underneath the current value so that the radix points align. If the moved radix point crosses over a digit that is 8 or 9, convert it to 0 or 1 and add the carry to the next leftward digit of the current value. ''Add'' ''octally'' those digits to the left of the radix and simply drop down those digits to the right, without modification.
Example:
0.4 9 1 8 decimal value
+0
---------
4.9 1 8
+1 0
--------
6 1.1 8
+1 4 2
--------
7 5 3.8
+1 7 2 6
--------
1 1 4 6 6. octal value
Octal to decimal conversion
To convert a number to decimal, use the formula that defines its base-8 representation:
:
In this formula, is an individual octal digit being converted, where is the position of the digit (counting from 0 for the right-most digit).
Example: Convert 764
8 to decimal:
:764
8 = 7 × 8
2 + 6 × 8
1 + 4 × 8
0 = 448 + 48 + 4 = 500
10
For double-digit octal numbers this method amounts to multiplying the lead digit by 8 and adding the second digit to get the total.
Example: 65
8 = 6 × 8 + 5 = 53
10
Method of successive duplication
To convert octals to decimals, prefix the number with "0.". Perform the following steps for as long as digits remain on the right side of the radix: Double the value to the left side of the radix, using ''decimal'' rules, move the radix point one digit rightward, and then place the doubled value underneath the current value so that the radix points align. ''Subtract'' ''decimally'' those digits to the left of the radix and simply drop down those digits to the right, without modification.
Example:
0.1 1 4 6 6 octal value
-0
-----------
1.1 4 6 6
- 2
----------
9.4 6 6
- 1 8
----------
7 6.6 6
- 1 5 2
----------
6 1 4.6
- 1 2 2 8
----------
4 9 1 8. decimal value
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
Therefore, 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 least significant bit and proceeding to the left and to the right. Add leading zeroes (or trailing zeroes 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:
:
Therefore, 1010111100
2 = 1274
8.
Convert binary 11100.01001 to octal:
:
Therefore, 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:
:
:then to hexadecimal:
:
Therefore, 1057
8 = 22F
16.
Hexadecimal to octal conversion
Hexadecimal to octal conversion proceeds by first converting the hexadecimal digits to 4-bit binary values, then regrouping the binary bits into 3-bit octal digits.
For example, to convert 3FA5
16:
:To binary:
:
:then to octal:
:
Therefore, 3FA5
16 = 37645
8.
Real numbers
Fractions
Due to having only factors of two, many octal fractions have repeating digits, although these tend to be fairly simple:
Irrational numbers
The table below gives the expansions of some common
irrational numbers in decimal and octal.
See also
*
*
Octal games, a game numbering system used in
combinatorial game theory
*
Split octal, a 16-bit octal notation used by the Heath Company, DEC and others
*
Squawk code, a 12-bit octal representation of
Gillham code
*
Syllabic octal, an octal representation of 8-bit syllables used by English Electric
References
{{reflist, refs=
[{{cite book , contribution=NWDOS-TIPs — Tips & Tricks rund um Novell DOS 7, mit Blick auf undokumentierte Details, Bugs und Workarounds , title=MPDOSTIP , author-first=Matthias R. , author-last=Paul , date=1997-07-30 , edition=3 , version=Release 157 , language=de , contribution-url=http://www.antonis.de/dos/dos-tuts/mpdostip/html/nwdostip.htm , access-date=2014-08-06 , url-status=live , archive-url=https://web.archive.org/web/20161104235829/http://www.antonis.de/dos/dos-tuts/mpdostip/html/nwdostip.htm , archive-date=2016-11-04 (NB. NWDOSTIP.TXT is a comprehensive work on Novell DOS 7 and OpenDOS 7.01, including the description of many undocumented features and internals. It is part of the author's yet larger ]MPDOSTIP.ZIP
collection maintained up to 2001 and distributed on many sites at the time. The provided link points to a HTML-converted older version of the NWDOSTIP.TXT
file.)
[{{cite web , title=Updated CLS posted , author-first=Matthias R. , author-last=Paul , date=2002-03-26 , url=http://marc.info/?l=freedos-dev&m=101717593306186&w=2 , publisher=freedos-dev mailing list , access-date=2014-08-06 , url-status=live , archive-url=https://archive.today/20190427173821/https://marc.info/?l=freedos-dev&m=101717593306186&w=2 , archive-date=27 April 2019 ]
[{{cite book , title=CCI Multiuser DOS 7.22 GOLD Online Documentation , id=HELP.HLP , date=1997-02-10 , publisher= Concurrent Controls, Inc. (CCI)]
[{{cite book , title=CP/M-86 - Operating System - Programmer's Guide , chapter=2.4.1 Numeric Constants , date=January 1983 , orig-year=1981 , edition=3 , publisher=]Digital Research
Digital Research, Inc. (DR or DRI) was a privately held American software company created by Gary Kildall to market and develop his CP/M operating system and related 8-bit, 16-bit and 32-bit systems like MP/M, Concurrent DOS, FlexOS, Multiuser ...
, location=Pacific Grove, California, USA , page=9 , url=http://www.bitsavers.org/pdf/digitalResearch/cpm-86/CPM-86_Programmers_Guide_Jan83.pdf , access-date=2020-02-27 , url-status=live , archive-url=https://web.archive.org/web/20200227225328/http://www.bitsavers.org/pdf/digitalResearch/cpm-86/CPM-86_Programmers_Guide_Jan83.pdf , archive-date=2020-02-27}
(1+viii+122+2 pages)
External links
Octomaticsis a
numeral system enabling simple visual calculation in octal.
Octal converterperforms bidirectional conversions between the octal and decimal system.
Binary arithmetic
Power-of-two numeral systems