HOME

TheInfoList



OR:

Hexadecimal (also known as base-16 or simply hex) is a
positional numeral system Positional notation, also known as place-value notation, positional numeral system, or simply place value, usually denotes the extension to any base of the Hindu–Arabic numeral system (or decimal system). More generally, a positional system ...
that represents numbers using a
radix In a positional numeral system, the radix (radices) or base is the number of unique digits, including the digit zero, used to represent numbers. For example, for the decimal system (the most common system in use today) the radix is ten, becaus ...
(base) of sixteen. Unlike the
decimal The decimal numeral system (also called the base-ten positional numeral system and denary or decanary) is the standard system for denoting integer and non-integer numbers. It is the extension to non-integer numbers (''decimal fractions'') of th ...
system representing numbers using ten symbols, hexadecimal uses sixteen distinct symbols, most often the symbols "0"–"9" to represent values 0 to 9 and "A"–"F" to represent values from ten to fifteen. Software developers and system designers widely use hexadecimal numbers because they provide a convenient representation of binary-coded values. Each hexadecimal digit represents four bits (binary digits), also known as a
nibble In computing, a nibble, or spelled nybble to match byte, is a unit of information that is an aggregation of four- bits; half of a byte/ octet. The unit is alternatively called nyble, nybl, half-byte or tetrade. In networking or telecommuni ...
(or nybble). For example, an 8-bit
byte The byte is a unit of digital information that most commonly consists of eight bits. Historically, the byte was the number of bits used to encode a single character of text in a computer and for this reason it is the smallest addressable un ...
is two hexadecimal digits and its value can be written as to in hexadecimal. In mathematics, a subscript is typically used to specify the base. For example, the decimal value would be expressed in hexadecimal as . In programming, several notations denote hexadecimal numbers, usually involving a prefix. The prefix 0x is used in C, which would denote this value as 0x. Hexadecimal is used in the transfer encoding Base 16, in which each byte of the
plain text In computing, plain text is a loose term for data (e.g. file contents) that represent only characters of readable material but not its graphical representation nor other objects ( floating-point numbers, images, etc.). It may also include a lim ...
is broken into two 4-bit values and represented by two hexadecimal digits.


Representation


Written representation

In most current use cases, the letters A–F or a–f represent the values 10–15, while the
numerals A numeral is a figure (symbol), word, or group of figures (symbols) or words denoting a number. It may refer to: * Numeral system used in mathematics * Numeral (linguistics), a part of speech denoting numbers (e.g. ''one'' and ''first'' in English ...
0–9 are used to represent their decimal values. There is no universal convention to use lowercase or uppercase, so each is prevalent or preferred in particular environments by community standards or convention; even mixed case is used. Some
seven-segment display A seven-segment display is a display device for Arabic numerals, less complex than a device that can show more characters such as dot matrix displays. Seven-segment displays are widely used in digital clocks, electronic meters, basic calculators, ...
s use mixed-case 'A b C d E F' to distinguish the digits A–F from one another and from 0–9. There is some standardization of using spaces (rather than commas or another punctuation mark) to separate hex values in a long list. For instance, in the following hex dump, each 8-bit
byte The byte is a unit of digital information that most commonly consists of eight bits. Historically, the byte was the number of bits used to encode a single character of text in a computer and for this reason it is the smallest addressable un ...
is a 2-digit hex number, with spaces between them, while the 32-bit offset at the start is an 8-digit hex number.
00000000 57 69 6B 69 70 65 64 69 61 2C 20 74 68 65 20 66 00000010 72 65 65 20 65 6E 63 79 63 6C 6F 70 65 64 69 61 00000020 20 74 68 61 74 20 61 6E 79 6F 6E 65 20 63 61 6E 00000030 20 65 64 69 74 2C 20 69 6E 63 6C 75 64 69 6E 67 00000040 20 79 6F 75 20 28 61 6E 64 20 6D 65 29 21


Distinguishing from decimal

In contexts where the base is not clear, hexadecimal numbers can be ambiguous and confused with numbers expressed in other bases. There are several conventions for expressing values unambiguously. A numerical subscript (itself written in decimal) can give the base explicitly: 15910 is decimal 159; 15916 is hexadecimal 159, which equals 34510. Some authors prefer a text subscript, such as 159decimal and 159hex, or 159d and 159h.
Donald Knuth Donald Ervin Knuth ( ; born January 10, 1938) is an American computer scientist and mathematician. He is a professor emeritus at Stanford University. He is the 1974 recipient of the ACM Turing Award, informally considered the Nobel Prize of comp ...
introduced the use of a particular typeface to represent a particular radix in his book ''The TeXbook''. Hexadecimal representations are written there in a typewriter typeface: , In linear text systems, such as those used in most computer programming environments, a variety of methods have arisen: * Although best known from the
C programming language C (''pronounced'' '' – like the letter c'') is a general-purpose programming language. It was created in the 1970s by Dennis Ritchie and remains very widely used and influential. By design, C's features cleanly reflect the capabilities of ...
(and the many languages influenced by C), the prefix 0x to indicate a hex constant may have had origins in the IBM Stretch systems. It is derived from the 0 prefix already in use for
octal 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: : \mathbf_ = \mathbf \times 10^1 + \mathbf \times 10^0 In the octal system, each place is a power of eight. For ex ...
constants. Byte values can be expressed in hexadecimal with the prefix \x followed by two hex digits: '\x1B' represents the Esc control character; "\x1B is a string containing 11 characters with two embedded Esc characters. To output an integer as hexadecimal with the printf">m\x1B[25;1H" is a string containing 11 characters with two embedded Esc characters. To output an integer as hexadecimal with the printf function family, the format conversion code %X or %x is used. * In XML and XHTML, characters can be expressed as hexadecimal numeric character references using the notation &#x''code'';, for instance T represents the character U+0054 (the uppercase letter "T"). If there is no the number is decimal (thus T is the same character). * In Intel-derived
assembly language In computing, assembly language (alternatively assembler language or symbolic machine code), often referred to simply as assembly and commonly abbreviated as ASM or asm, is any low-level programming language with a very strong correspondence bet ...
s and Modula-2, hexadecimal is denoted with a suffixed or : FFh or 05A3H. Some implementations require a leading zero when the first hexadecimal digit character is not a decimal digit, so one would write 0FFh instead of FFh. Some other implementations (such as NASM) allow C-style numbers (0x42). * Other assembly languages ( 6502,
Motorola Motorola, Inc. () was an American multinational telecommunications company based in Schaumburg, Illinois. It was founded by brothers Paul and Joseph Galvin in 1928 and had been named Motorola since 1947. Many of Motorola's products had been ...
), Pascal,
Delphi Delphi (; ), in legend previously called Pytho (Πυθώ), was an ancient sacred precinct and the seat of Pythia, the major oracle who was consulted about important decisions throughout the ancient Classical antiquity, classical world. The A ...
, some versions of
BASIC Basic or BASIC may refer to: Science and technology * BASIC, a computer programming language * Basic (chemistry), having the properties of a base * Basic access authentication, in HTTP Entertainment * Basic (film), ''Basic'' (film), a 2003 film ...
( Commodore), GameMaker Language, Godot and Forth use $ as a prefix: $5A3, $C1F27ED. * Some assembly languages (Microchip) use the notation H'ABCD' (for ABCD16). Similarly, Fortran 95 uses Z'ABCD'. * Ada and
VHDL VHDL (Very High Speed Integrated Circuit Program, VHSIC Hardware Description Language) is a hardware description language that can model the behavior and structure of Digital electronics, digital systems at multiple levels of abstraction, ran ...
enclose hexadecimal numerals in based "numeric quotes": 16#5A3#, 16#C1F27ED#. For bit vector constants
VHDL VHDL (Very High Speed Integrated Circuit Program, VHSIC Hardware Description Language) is a hardware description language that can model the behavior and structure of Digital electronics, digital systems at multiple levels of abstraction, ran ...
uses the notation x"5A3", x"C1F27ED". *
Verilog Verilog, standardized as IEEE 1364, is a hardware description language (HDL) used to model electronic systems. It is most commonly used in the design and verification of digital circuits, with the highest level of abstraction being at the re ...
represents hexadecimal constants in the form 8'hFF, where 8 is the number of bits in the value and FF is the hexadecimal constant. * The
Icon An icon () is a religious work of art, most commonly a painting, in the cultures of the Eastern Orthodox, Oriental Orthodox, Catholic Church, Catholic, and Lutheranism, Lutheran churches. The most common subjects include Jesus, Mary, mother of ...
and
Smalltalk Smalltalk is a purely object oriented programming language (OOP) that was originally created in the 1970s for educational use, specifically for constructionist learning, but later found use in business. It was created at Xerox PARC by Learni ...
languages use the prefix 16r: 16r5A3 *
PostScript PostScript (PS) is a page description language and dynamically typed, stack-based programming language. It is most commonly used in the electronic publishing and desktop publishing realm, but as a Turing complete programming language, it c ...
and the
Bourne shell The Bourne shell (sh) is a shell command-line interpreter for computer operating systems. It first appeared on Version 7 Unix, as its default shell. Unix-like systems continue to have /bin/sh—which will be the Bourne shell, or a symbolic lin ...
and its derivatives denote hex with prefix 16#: 16#5A3, 16#C1F27ED. *
Common Lisp Common Lisp (CL) is a dialect of the Lisp programming language, published in American National Standards Institute (ANSI) standard document ''ANSI INCITS 226-1994 (S2018)'' (formerly ''X3.226-1994 (R1999)''). The Common Lisp HyperSpec, a hyperli ...
uses the prefixes #x and #16r. Setting the variables *read-base* and *print-base* to 16 can also be used to switch the reader and printer of a Common Lisp system to Hexadecimal number representation for reading and printing numbers. Thus Hexadecimal numbers can be represented without the #x or #16r prefix code, when the input or output base has been changed to 16. *
MSX BASIC MSX BASIC is a dialect of the BASIC programming language. It is an extended version of Microsoft's MBASIC Version 4.5, adding support for graphic, music, and various peripherals attached to MSX microcomputers. Generally, MSX BASIC is designed to f ...
,
QuickBASIC Microsoft QuickBASIC (also QB) is an Integrated Development Environment (or IDE) and compiler for the BASIC programming language that was developed by Microsoft. QuickBASIC runs mainly on DOS, though there was also a short-lived version for the c ...
,
FreeBASIC FreeBASIC is a FOSS, free and open source multiplatform compiler and programming language based on BASIC licensed under the GNU General Public License, GNU GPL for Microsoft Windows, protected-mode MS-DOS (DOS extender), Linux, FreeBSD and Xbox ...
and
Visual Basic Visual Basic is a name for a family of programming languages from Microsoft. It may refer to: * Visual Basic (.NET), the current version of Visual Basic launched in 2002 which runs on .NET * Visual Basic (classic), the original Visual Basic suppo ...
prefix hexadecimal numbers with &H: &H5A3 *
BBC BASIC BBC BASIC is an interpreted version of the BASIC programming language. It was developed by Acorn Computers Ltd when they were selected by the BBC to supply the computer for their BBC Literacy Project in 1981. It was originally supplied on ...
and Locomotive BASIC use & for hex. *
TI-89 The TI-89 and the TI-89 Titanium are graphing calculators developed by Texas Instruments (TI). They are differentiated from most other TI graphing calculators by their computer algebra system, which allows symbolic manipulation of algebra ...
and 92 series uses a 0h prefix: 0h5A3, 0hC1F27ED *
ALGOL 68 ALGOL 68 (short for ''Algorithmic Language 1968'') is an imperative programming language member of the ALGOL family that was conceived as a successor to the ALGOL 60 language, designed with the goal of a much wider scope of application and ...
uses the prefix 16r to denote hexadecimal numbers: 16r5a3, 16rC1F27ED. Binary, quaternary (base-4), and octal numbers can be specified similarly. * The most common format for hexadecimal on IBM mainframes (
zSeries IBM Z is a family name used by IBM for all of its z/Architecture mainframe computers. In July 2017, with another generation of products, the official family was changed to IBM Z from IBM z Systems; the IBM Z family will soon include the newes ...
) and midrange computers (
IBM i IBM i (the ''i'' standing for ''integrated'') is an operating system developed by IBM for IBM Power Systems. It was originally released in 1988 as OS/400, as the sole operating system of the IBM AS/400 line of systems. It was renamed to i5/OS in 2 ...
) running the traditional OS's ( zOS, zVSE, zVM, TPF,
IBM i IBM i (the ''i'' standing for ''integrated'') is an operating system developed by IBM for IBM Power Systems. It was originally released in 1988 as OS/400, as the sole operating system of the IBM AS/400 line of systems. It was renamed to i5/OS in 2 ...
) is X'5A3' or X'C1F27ED', and is used in Assembler,
PL/I PL/I (Programming Language One, pronounced and sometimes written PL/1) is a procedural, imperative computer programming language initially developed by IBM. It is designed for scientific, engineering, business and system programming. It has b ...
,
COBOL COBOL (; an acronym for "common business-oriented language") is a compiled English-like computer programming language designed for business use. It is an imperative, procedural, and, since 2002, object-oriented language. COBOL is primarily ...
, JCL, scripts, commands and other places. This format was common on other (and now obsolete) IBM systems as well. Occasionally quotation marks were used instead of apostrophes.


Syntax that is always Hex

Sometimes the numbers are known to be Hex. * In URIs (including
URL A uniform resource locator (URL), colloquially known as an address on the Web, is a reference to a resource that specifies its location on a computer network and a mechanism for retrieving it. A URL is a specific type of Uniform Resource Identi ...
s), character codes are written as hexadecimal pairs prefixed with : where is the code for the space (blank) character,
ASCII ASCII ( ), an acronym for American Standard Code for Information Interchange, is a character encoding standard for representing a particular set of 95 (English language focused) printable character, printable and 33 control character, control c ...
code point 20 in hex, 32 in decimal. * In the
Unicode Unicode or ''The Unicode Standard'' or TUS is a character encoding standard maintained by the Unicode Consortium designed to support the use of text in all of the world's writing systems that can be digitized. Version 16.0 defines 154,998 Char ...
standard, a character value is represented with followed by the hex value, e.g. is the inverted exclamation point (¡). * Color references in HTML, CSS and X Window can be expressed with six hexadecimal digits (two each for the red, green and blue components, in that order) prefixed with : magenta, for example, is represented as . CSS also allows 3-hexdigit abbreviations with one hexdigit per component: abbreviates (a golden orange: ). * In
MIME A mime artist, or simply mime (from Greek language, Greek , , "imitator, actor"), is a person who uses ''mime'' (also called ''pantomime'' outside of Britain), the acting out of a story through body motions without the use of speech, as a the ...
(e-mail extensions)
quoted-printable Quoted-Printable, or QP encoding, is a binary-to-text encoding system using printable ASCII characters (alphanumeric and the equals sign =) to transmit 8-bit data over a 7-bit data path or, generally, over a medium which is not 8-bit clean. Hi ...
encoding, character codes are written as hexadecimal pairs prefixed with : is "España" (F1 is the code for ''ñ'' in the ISO/IEC 8859-1 character set).) * PostScript binary data (such as image
pixel In digital imaging, a pixel (abbreviated px), pel, or picture element is the smallest addressable element in a Raster graphics, raster image, or the smallest addressable element in a dot matrix display device. In most digital display devices, p ...
s) can be expressed as unprefixed consecutive hexadecimal pairs:  ... * Any
IPv6 address An Internet Protocol version 6 address (IPv6 address) is a numeric label that is used to identify and locate a network interface of a computer or a Node (networking), network node participating in a computer network using IPv6. IP addresses are ...
can be written as eight groups of four hexadecimal digits (sometimes called hextets), where each group is separated by a colon (). This, for example, is a valid IPv6 address: or abbreviated by removing leading zeros as ( IPv4 addresses are usually written in decimal). *
Globally unique identifier A Universally Unique Identifier (UUID) is a 128-bit label used to uniquely identify objects in computer systems. The term Globally Unique Identifier (GUID) is also used, mostly in Microsoft systems. When generated according to the standard methods ...
s are written as thirty-two hexadecimal digits, often in unequal hyphen-separated groupings, for example .


Other symbols for 10–15 and mostly different symbol sets

The use of the letters ''A'' through ''F'' to represent the digits above 9 was not universal in the early history of computers. * During the 1950s, some installations, such as Bendix-14, favored using the digits 0 through 5 with an
overline An overline, overscore, or overbar, is a typographical feature of a horizontal and vertical, horizontal line drawn immediately above the text. In old mathematical notation, an overline was called a ''vinculum (symbol), vinculum'', a notation fo ...
to denote the values as , , , , and . * The SWAC (1950) and
Bendix G-15 The Bendix G-15 is a computer introduced in 1956 by the Bendix Corporation, Computer Division, Los Angeles, California. It is about and weighs about . The G-15 has a drum memory of 2,160 29-bit words, along with 20 words used for special purpos ...
(1956) computers used the lowercase letters ''u'', ''v'', ''w'', ''x'', ''y'' and ''z'' for the values 10 to 15. * The ORDVAC and ILLIAC I (1952) computers (and some derived designs, e.g. BRLESC) used the uppercase letters ''K'', ''S'', ''N'', ''J'', ''F'' and ''L'' for the values 10 to 15. * The Librascope
LGP-30 The LGP-30, standing for Librascope General Purpose and then Librascope General Precision, is an early off-the-shelf computer. It was manufactured by the Librascope company of Glendale, California (a division of General Precision Inc.), and so ...
(1956) used the letters ''F'', ''G'', ''J'', ''K'', ''Q'' and ''W'' for the values 10 to 15. * On the PERM (1956) computer, hexadecimal numbers were written as letters ''O'' for zero, ''A'' to ''N'' and ''P'' for 1 to 15. Many machine instructions had mnemonic hex-codes (''A''=add, ''M''=multiply, ''L''=load, ''F''=fixed-point etc.); programs were written without instruction names. * The
Honeywell Honeywell International Inc. is an American publicly traded, multinational conglomerate corporation headquartered in Charlotte, North Carolina. It primarily operates in four areas of business: aerospace, building automation, industrial automa ...
Datamatic D-1000 (1957) used the lowercase letters ''b'', ''c'', ''d'', ''e'', ''f'', and ''g'' whereas the
Elbit Elbit Systems Ltd. is an Israel-based international military technology company and defense contractor. Founded in 1966 by Elron Electronic Industries, Elron, Elbit Systems is the primary provider of the Israeli military's land-based equipme ...
 100 (1967) used the uppercase letters ''B'', ''C'', ''D'', ''E'', ''F'' and ''G'' for the values 10 to 15. * The Monrobot XI (1960) used the letters ''S'', ''T'', ''U'', ''V'', ''W'' and ''X'' for the values 10 to 15. * The
NEC is a Japanese multinational information technology and electronics corporation, headquartered at the NEC Supertower in Minato, Tokyo, Japan. It provides IT and network solutions, including cloud computing, artificial intelligence (AI), Inte ...
parametron computer NEAC 1103 (1960) used the letters ''D'', ''G'', ''H'', ''J'', ''K'' (and possibly ''V'') for values 10–15. * The Pacific Data Systems 1020 (1964) used the letters ''L'', ''C'', ''A'', ''S'', ''M'' and ''D'' for the values 10 to 15. * New numeric symbols and names were introduced in the Bibi-binary notation by Boby Lapointe in 1968. * Bruce Alan Martin of
Brookhaven National Laboratory Brookhaven National Laboratory (BNL) is a United States Department of Energy national laboratories, United States Department of Energy national laboratory located in Upton, New York, a hamlet of the Brookhaven, New York, Town of Brookhaven. It w ...
considered the choice of A–F "ridiculous". In a 1968 letter to the editor of the CACM, he proposed an entirely new set of symbols based on the bit locations. * In 1972, Ronald O. Whitaker of Rowco Engineering Co. proposed a triangular font that allows "direct binary reading" to "permit both input and output from computers without respect to encoding matrices." (1 page) (7 pages) * Some
seven-segment display A seven-segment display is a display device for Arabic numerals, less complex than a device that can show more characters such as dot matrix displays. Seven-segment displays are widely used in digital clocks, electronic meters, basic calculators, ...
decoder chips (i.e., 74LS47) show unexpected output due to logic designed only to produce 0–9 correctly.


Verbal and digital representations

Since there were no traditional numerals to represent the quantities from ten to fifteen, alphabetic letters were re-employed as a substitute. Most European languages lack non-decimal-based words for some of the numerals eleven to fifteen. Some people read hexadecimal numbers digit by digit, like a phone number, or using the
NATO phonetic alphabet The International Radiotelephony Spelling Alphabet or simply the Radiotelephony Spelling Alphabet, commonly known as the NATO phonetic alphabet, is the most widely used set of clear-code words for communicating the letters of the Latin/Roman ...
, the
Joint Army/Navy Phonetic Alphabet The Allied military phonetic spelling alphabets prescribed the words that are used to represent each letter of the alphabet, when spelling other words out loud, letter-by-letter, and how the spelling words should be pronounced for use by the All ...
, or a similar ''ad-hoc'' system. In the wake of the adoption of hexadecimal among
IBM System/360 The IBM System/360 (S/360) is a family of mainframe computer systems announced by IBM on April 7, 1964, and delivered between 1965 and 1978. System/360 was the first family of computers designed to cover both commercial and scientific applicati ...
programmers, Magnuson (1968) suggested a pronunciation guide that gave short names to the letters of hexadecimal – for instance, "A" was pronounced "ann", B "bet", C "chris", etc. Another naming-system was published online by Rogers (2007) that tries to make the verbal representation distinguishable in any case, even when the actual number does not contain numbers A–F. Examples are listed in the tables below. Yet another naming system was elaborated by Babb (2015), based on a joke in ''
Silicon Valley Silicon Valley is a region in Northern California that is a global center for high technology and innovation. Located in the southern part of the San Francisco Bay Area, it corresponds roughly to the geographical area of the Santa Clara Valley ...
''. The system proposed by Babb was further improved by Atkins-Bittner in 2015-2016. Others have proposed using the verbal Morse Code conventions to express four-bit hexadecimal digits, with "dit" and "dah" representing zero and one, respectively, so that "0000" is voiced as "dit-dit-dit-dit" (....), dah-dit-dit-dah (-..-) voices the digit with a value of nine, and "dah-dah-dah-dah" (----) voices the hexadecimal digit for decimal 15. Systems of counting on digits have been devised for both binary and hexadecimal. Arthur C. Clarke suggested using each finger as an on/off bit, allowing finger counting from zero to 102310 on ten fingers. Another system for counting up to FF16 (25510) is illustrated on the right.


Signs

The hexadecimal system can express negative numbers the same way as in decimal: −2A to represent −4210, −B01D9 to represent −72136910 and so on. Hexadecimal can also be used to express the exact bit patterns used in the processor, so a sequence of hexadecimal digits may represent a signed or even a
floating-point In computing, floating-point arithmetic (FP) is arithmetic on subsets of real numbers formed by a ''significand'' (a Sign (mathematics), signed sequence of a fixed number of digits in some Radix, base) multiplied by an integer power of that ba ...
value. This way, the negative number −4210 can be written as FFFF FFD6 in a 32-bit CPU register (in
two's complement Two's complement is the most common method of representing signed (positive, negative, and zero) integers on computers, and more generally, fixed point binary values. Two's complement uses the binary digit with the ''greatest'' value as the ''s ...
), as C228 0000 in a 32-bit FPU register or C045 0000 0000 0000 in a 64-bit FPU register (in the
IEEE floating-point standard The IEEE Standard for Floating-Point Arithmetic (IEEE 754) is a technical standard for floating-point arithmetic originally established in 1985 by the Institute of Electrical and Electronics Engineers (IEEE). The standard addressed many proble ...
).


Hexadecimal exponential notation

Just as decimal numbers can be represented in exponential notation, so too can hexadecimal numbers. P notation uses the letter ''P'' (or ''p'', for "power"), whereas ''E'' (or ''e'') serves a similar purpose in decimal
E notation Scientific notation is a way of expressing numbers that are too large or too small to be conveniently written in decimal form, since to do so would require writing out an inconveniently long string of digits. It may be referred to as scienti ...
. The number after the ''P'' is ''decimal'' and represents the ''binary'' exponent. Increasing the exponent by 1 multiplies by 2, not 16: . Usually, the number is normalized so that the hexadecimal digits start with (zero is usually with no ''P''). Example: represents . P notation is required by the
IEEE 754-2008 The Institute of Electrical and Electronics Engineers (IEEE) is an American 501(c)(3) public charity professional organization for electrical engineering, electronics engineering, and other related disciplines. The IEEE has a corporate office ...
binary floating-point standard and can be used for floating-point literals in the C99 edition of the
C programming language C (''pronounced'' '' – like the letter c'') is a general-purpose programming language. It was created in the 1970s by Dennis Ritchie and remains very widely used and influential. By design, C's features cleanly reflect the capabilities of ...
. Using the ''%a'' or ''%A'' conversion specifiers, this notation can be produced by implementations of the ''
printf printf is a C standard library function that formats text and writes it to standard output. The function accepts a format c-string argument and a variable number of value arguments that the function serializes per the format string. Mism ...
'' family of functions following the C99 specification and
Single Unix Specification The Single UNIX Specification (SUS) is a standard for computer operating systems, compliance with which is required to qualify for using the "UNIX" trademark. The standard specifies programming interfaces for the C language, a command-line shell, ...
(IEEE Std 1003.1)
POSIX The Portable Operating System Interface (POSIX; ) is a family of standards specified by the IEEE Computer Society for maintaining compatibility between operating systems. POSIX defines application programming interfaces (APIs), along with comm ...
standard.


Conversion


Binary conversion

Most computers manipulate binary data, but it is difficult for humans to work with a large number of digits for even a relatively small binary number. Although most humans are familiar with the base 10 system, it is much easier to map binary to hexadecimal than to decimal because each hexadecimal digit maps to a whole number of bits (410). This example converts 11112 to base ten. Since each position in a binary numeral can contain either a 1 or a 0, its value may be easily determined by its position from the right: * 00012 = 110 * 00102 = 210 * 01002 = 410 * 10002 = 810 Therefore: With little practice, mapping 11112 to F16 in one step becomes easy (see table in written representation). The advantage of using hexadecimal rather than decimal increases rapidly with the size of the number. When the number becomes large, conversion to decimal is very tedious. However, when mapping to hexadecimal, it is trivial to regard the binary string as 4-digit groups and map each to a single hexadecimal digit. This example shows the conversion of a binary number to decimal, mapping each digit to the decimal value, and adding the results. Compare this to the conversion to hexadecimal, where each group of four digits can be considered independently and converted directly: The conversion from hexadecimal to binary is equally direct.


Other simple conversions

Although
quaternary The Quaternary ( ) is the current and most recent of the three periods of the Cenozoic Era in the geologic time scale of the International Commission on Stratigraphy (ICS), as well as the current and most recent of the twelve periods of the ...
(base 4) is little used, it can easily be converted to and from hexadecimal or binary. Each hexadecimal digit corresponds to a pair of quaternary digits, and each quaternary digit corresponds to a pair of binary digits. In the above example 2 5 C16 = 02 11 304. The
octal 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: : \mathbf_ = \mathbf \times 10^1 + \mathbf \times 10^0 In the octal system, each place is a power of eight. For ex ...
(base 8) system can also be converted with relative ease, although not quite as trivially as with bases 2 and 4. Each octal digit corresponds to three binary digits, rather than four. Therefore, we can convert between octal and hexadecimal via an intermediate conversion to binary followed by regrouping the binary digits in groups of either three or four.


Division-remainder in source base

As with all bases there is a simple
algorithm In mathematics and computer science, an algorithm () is a finite sequence of Rigour#Mathematics, mathematically rigorous instructions, typically used to solve a class of specific Computational problem, problems or to perform a computation. Algo ...
for converting a representation of a number to hexadecimal by doing integer division and remainder operations in the source base. In theory, this is possible from any base, but for most humans, only decimal and for most computers, only binary (which can be converted by far more efficient methods) can be easily handled with this method. Let d be the number to represent in hexadecimal, and the series hihi−1...h2h1 be the hexadecimal digits representing the number. # i ← 1 # hi ← d mod 16 # d ← (d − hi) / 16 # If d = 0 (return series hi) else increment i and go to step 2 "16" may be replaced with any other base that may be desired. The following is a
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 ...
implementation of the above algorithm for converting any number to a hexadecimal in String representation. Its purpose is to illustrate the above algorithm. To work with data seriously, however, it is much more advisable to work with
bitwise operators In computer programming, a bitwise operation operates on a bit string, a bit array or a binary numeral (considered as a bit string) at the level of its individual bits. It is a fast and simple action, basic to the higher-level arithmetic opera ...
. function toHex(d) function toChar(n)


Conversion through addition and multiplication

It is also possible to make the conversion by assigning each place in the source base the hexadecimal representation of its place value — before carrying out multiplication and addition to get the final representation. For example, to convert the number B3AD to decimal, one can split the hexadecimal number into its digits: B (1110), 3 (310), A (1010) and D (1310), and then get the final result by multiplying each decimal representation by 16''p'' (''p'' being the corresponding hex digit position, counting from right to left, beginning with 0). In this case, we have that: which is 45997 in base 10.


Tools for conversion

Many computer systems provide a calculator utility capable of performing conversions between the various radices frequently including hexadecimal. In
Microsoft Windows Windows is a Product lining, product line of Proprietary software, proprietary graphical user interface, graphical operating systems developed and marketed by Microsoft. It is grouped into families and subfamilies that cater to particular sec ...
, the
Calculator An electronic calculator is typically a portable electronic device used to perform calculations, ranging from basic arithmetic to complex mathematics. The first solid-state electronic calculator was created in the early 1960s. Pocket-si ...
, on its Programmer mode, allows conversions between hexadecimal and other common programming bases.


Elementary arithmetic

Elementary operations such as division can be carried out indirectly through conversion to an alternate
numeral system A numeral system is a writing system for expressing numbers; that is, a mathematical notation for representing numbers of a given set, using digits or other symbols in a consistent manner. The same sequence of symbols may represent differe ...
, such as the commonly used decimal system or the binary system where each hex digit corresponds to four binary digits. Alternatively, one can also perform elementary operations directly within the hex system itself — by relying on its addition/multiplication tables and its corresponding standard algorithms such as
long division In arithmetic, long division is a standard division algorithm suitable for dividing multi-digit Hindu-Arabic numerals (positional notation) that is simple enough to perform by hand. It breaks down a division problem into a series of easier step ...
and the traditional subtraction algorithm.


Real numbers


Rational numbers

As with other numeral systems, the hexadecimal system can be used to represent
rational number In mathematics, a rational number is a number that can be expressed as the quotient or fraction of two integers, a numerator and a non-zero denominator . For example, is a rational number, as is every integer (for example, The set of all ...
s, although repeating expansions are common since sixteen (1016) has only a single prime factor: two. For any base, 0.1 (or "1/10") is always equivalent to one divided by the representation of that base value in its own number system. Thus, whether dividing one by two for binary or dividing one by sixteen for hexadecimal, both of these fractions are written as 0.1. Because the radix 16 is a perfect square (42), fractions expressed in hexadecimal have an odd period much more often than decimal ones, and there are no cyclic numbers (other than trivial single digits). Recurring digits are exhibited when the denominator in lowest terms has a
prime factor A prime number (or a prime) is a natural number greater than 1 that is not a product of two smaller natural numbers. A natural number greater than 1 that is not prime is called a composite number. For example, 5 is prime because the only ways ...
not found in the radix; thus, when using hexadecimal notation, all fractions with denominators that are not a
power of two A power of two is a number of the form where is an integer, that is, the result of exponentiation with number 2, two as the Base (exponentiation), base and integer  as the exponent. In the fast-growing hierarchy, is exactly equal to f_1^ ...
result in an infinite string of recurring digits (such as thirds and fifths). This makes hexadecimal (and binary) less convenient than
decimal The decimal numeral system (also called the base-ten positional numeral system and denary or decanary) is the standard system for denoting integer and non-integer numbers. It is the extension to non-integer numbers (''decimal fractions'') of th ...
for representing rational numbers since a larger proportion lies outside its range of finite representation. All rational numbers finitely representable in hexadecimal are also finitely representable in decimal,
duodecimal The duodecimal system, also known as base twelve or dozenal, is a positional numeral system using twelve as its base. In duodecimal, the number twelve is denoted "10", meaning 1 twelve and 0 units; in the decimal system, this number is i ...
and
sexagesimal Sexagesimal, also known as base 60, is a numeral system with 60 (number), sixty as its radix, base. It originated with the ancient Sumerians in the 3rd millennium BC, was passed down to the ancient Babylonians, and is still used—in a modified fo ...
: that is, any hexadecimal number with a finite number of digits also has a finite number of digits when expressed in those other bases. Conversely, only a fraction of those finitely representable in the latter bases are finitely representable in hexadecimal. For example, decimal 0.1 corresponds to the infinite recurring representation 0.1 in hexadecimal. However, hexadecimal is more efficient than duodecimal and sexagesimal for representing fractions with powers of two in the denominator. For example, 0.062510 (one-sixteenth) is equivalent to 0.116, 0.0912, and 0;3,4560.


Irrational numbers

The table below gives the expansions of some common
irrational number In mathematics, the irrational numbers are all the real numbers that are not rational numbers. That is, irrational numbers cannot be expressed as the ratio of two integers. When the ratio of lengths of two line segments is an irrational number, ...
s in decimal and hexadecimal.


Powers

Powers of two have very simple expansions in hexadecimal. The first sixteen powers of two are shown below.


Cultural history

The traditional
Chinese units of measurement Chinese units of measurement, known in Chinese as the ''shìzhì'' ("market system"), are the traditional units of measurement of the Han Chinese. Although Chinese numerals have been decimal (base-10) since the Shang dynasty, Shang, several Chine ...
were base-16. For example, one jīn (斤) in the old system equals sixteen
tael Tael ( ),"Tael" entry
at the
suanpan (Chinese
abacus An abacus ( abaci or abacuses), also called a counting frame, is a hand-operated calculating tool which was used from ancient times in the ancient Near East, Europe, China, and Russia, until the adoption of the Hindu–Arabic numeral system. A ...
) can be used to perform hexadecimal calculations such as additions and subtractions. As with the
duodecimal The duodecimal system, also known as base twelve or dozenal, is a positional numeral system using twelve as its base. In duodecimal, the number twelve is denoted "10", meaning 1 twelve and 0 units; in the decimal system, this number is i ...
system, there have been occasional attempts to promote hexadecimal as the preferred numeral system. These attempts often propose specific pronunciation and symbols for the individual numerals. Some proposals unify standard measures so that they are multiples of 16. An early such proposal was put forward by John W. Nystrom in ''Project of a New System of Arithmetic, Weight, Measure and Coins: Proposed to be called the Tonal System, with Sixteen to the Base'', published in 1862. Nystrom among other things suggested hexadecimal time, which subdivides a day by 16, so that there are 16 "hours" (or "10 ''tims''", pronounced ''tontim'') in a day. The word ''hexadecimal'' is first recorded in 1952. It is macaronic in the sense that it combines
Greek Greek may refer to: Anything of, from, or related to Greece, a country in Southern Europe: *Greeks, an ethnic group *Greek language, a branch of the Indo-European language family **Proto-Greek language, the assumed last common ancestor of all kno ...
ἕξ (hex) "six" with
Latin Latin ( or ) is a classical language belonging to the Italic languages, Italic branch of the Indo-European languages. Latin was originally spoken by the Latins (Italic tribe), Latins in Latium (now known as Lazio), the lower Tiber area aroun ...
ate ''-decimal''. The all-Latin alternative '' sexadecimal'' (compare the word ''
sexagesimal Sexagesimal, also known as base 60, is a numeral system with 60 (number), sixty as its radix, base. It originated with the ancient Sumerians in the 3rd millennium BC, was passed down to the ancient Babylonians, and is still used—in a modified fo ...
'' for base 60) is older, and sees at least occasional use from the late 19th century. It is still in use in the 1950s in Bendix documentation. Schwartzman (1994) argues that use of ''sexadecimal'' may have been avoided because of its suggestive abbreviation to ''sex''. Many western languages since the 1960s have adopted terms equivalent in formation to ''hexadecimal'' (e.g. French ''hexadécimal'', Italian ''esadecimale'', Romanian ''hexazecimal'', Serbian ''хексадецимални'', etc.) but others have introduced terms which substitute native words for "sixteen" (e.g. Greek δεκαεξαδικός, Icelandic ''sextándakerfi'', Russian ''шестнадцатеричной'' etc.) Terminology and notation did not become settled until the end of the 1960s. In 1969,
Donald Knuth Donald Ervin Knuth ( ; born January 10, 1938) is an American computer scientist and mathematician. He is a professor emeritus at Stanford University. He is the 1974 recipient of the ACM Turing Award, informally considered the Nobel Prize of comp ...
argued that the etymologically correct term would be ''senidenary'', or possibly ''sedenary'', a Latinate term intended to convey "grouped by 16" modelled on ''binary'', ''ternary'', ''quaternary'', etc. According to Knuth's argument, the correct terms for ''decimal'' and ''octal'' arithmetic would be ''denary'' and ''octonary'', respectively. Alfred B. Taylor used ''senidenary'' in his mid-1800s work on alternative number bases, although he rejected base 16 because of its "incommodious number of digits". The now-current notation using the letters A to F establishes itself as the de facto standard beginning in 1966, in the wake of the publication of the Fortran IV manual for
IBM System/360 The IBM System/360 (S/360) is a family of mainframe computer systems announced by IBM on April 7, 1964, and delivered between 1965 and 1978. System/360 was the first family of computers designed to cover both commercial and scientific applicati ...
, which (unlike earlier variants of Fortran) recognizes a standard for entering hexadecimal constants.IBM System/360 FORTRAN IV Language
(1966), p. 13. As noted above, alternative notations were used by
NEC is a Japanese multinational information technology and electronics corporation, headquartered at the NEC Supertower in Minato, Tokyo, Japan. It provides IT and network solutions, including cloud computing, artificial intelligence (AI), Inte ...
(1960) and The Pacific Data Systems 1020 (1964). The standard adopted by IBM seems to have become widely adopted by 1968, when Bruce Alan Martin in his letter to the editor of the CACM complains that Martin's argument was that use of numerals 0 to 9 in nondecimal numbers "imply to us a base-ten place-value scheme": "Why not use entirely new symbols (and names) for the seven or fifteen nonzero digits needed in octal or hex. Even use of the letters A through P would be an improvement, but entirely new symbols could reflect the binary nature of the system". He also argued that "re-using alphabetic letters for numerical digits represents a gigantic backward step from the invention of distinct, non-alphabetic glyphs for numerals sixteen centuries ago" (as
Brahmi numerals Brahmi numerals are a numeral system attested in the Indian subcontinent from the 3rd century BCE. It is the direct graphic ancestor of the modern Hindu–Arabic numeral system. However, the Brahmi numeral system was conceptually distinct from ...
, and later in a
Hindu–Arabic numeral system The Hindu–Arabic numeral system (also known as the Indo-Arabic numeral system, Hindu numeral system, and Arabic numeral system) is a positional notation, positional Decimal, base-ten numeral system for representing integers; its extension t ...
), and that the recent
ASCII ASCII ( ), an acronym for American Standard Code for Information Interchange, is a character encoding standard for representing a particular set of 95 (English language focused) printable character, printable and 33 control character, control c ...
standards (ASA X3.4-1963 and USAS X3.4-1968) "should have preserved six code table positions following the ten decimal digits -- rather than needlessly filling these with punctuation characters" (":;<=>?") that might have been placed elsewhere among the 128 available positions.


Base16 (transfer encoding)

Base16 (as a proper name without a space) can also refer to a binary to text encoding belonging to the same family as
Base32 Base32 is an encoding method based on the Radix, base-32 numeral system. It uses an alphabet of 32 Numerical digit, digits, each of which represents a different combination of 5 bits (25). Since base32 is not very widely adopted, the question of no ...
,
Base58 A binary-to-text encoding is code, encoding of data (computing), data in plain text. More precisely, it is an encoding of binary data in a sequence of character (computing), printable characters. These encodings are necessary for transmission of ...
, and
Base64 In computer programming, Base64 is a group of binary-to-text encoding schemes that transforms binary data into a sequence of printable characters, limited to a set of 64 unique characters. More specifically, the source binary data is taken 6 bits ...
. In this case, data is broken into 4-bit sequences, and each value (between 0 and 15 inclusively) is encoded using one of 16 symbols from the
ASCII ASCII ( ), an acronym for American Standard Code for Information Interchange, is a character encoding standard for representing a particular set of 95 (English language focused) printable character, printable and 33 control character, control c ...
character set. Although any 16 symbols from the ASCII character set can be used, in practice, the ASCII digits "0"–"9" and the letters "A"–"F" (or the lowercase "a"–"f") are always chosen in order to align with standard written notation for hexadecimal numbers. There are several advantages of Base16 encoding: * Most programming languages already have facilities to parse ASCII-encoded hexadecimal * Being exactly half a byte, 4-bits is easier to process than the 5 or 6 bits of Base32 and Base64 respectively * The symbols 0–9 and A–F are universal in hexadecimal notation, so it is easily understood at a glance without needing to rely on a symbol lookup table. * Many CPU architectures have dedicated instructions that allow access to a half-byte (otherwise known as a "
nibble In computing, a nibble, or spelled nybble to match byte, is a unit of information that is an aggregation of four- bits; half of a byte/ octet. The unit is alternatively called nyble, nybl, half-byte or tetrade. In networking or telecommuni ...
"), making it more efficient in hardware than Base32 and Base64 The main disadvantages of Base16 encoding are: * Space efficiency is only 50%, since each 4-bit value from the original data will be encoded as an 8-bit byte. In contrast, Base32 and Base64 encodings have a space efficiency of 63% and 75% respectively. * Possible added complexity of having to accept both uppercase and lowercase letters Support for Base16 encoding is ubiquitous in modern computing. It is the basis for the
W3C The World Wide Web Consortium (W3C) is the main international standards organization for the World Wide Web. Founded in 1994 by Tim Berners-Lee, the consortium is made up of member organizations that maintain full-time staff working together in ...
standard for URL percent encoding, where a character is replaced with a percent sign "%" and its Base16-encoded form. Most modern programming languages directly include support for formatting and parsing Base16-encoded numbers.


See also

*
Base32 Base32 is an encoding method based on the Radix, base-32 numeral system. It uses an alphabet of 32 Numerical digit, digits, each of which represents a different combination of 5 bits (25). Since base32 is not very widely adopted, the question of no ...
,
Base64 In computer programming, Base64 is a group of binary-to-text encoding schemes that transforms binary data into a sequence of printable characters, limited to a set of 64 unique characters. More specifically, the source binary data is taken 6 bits ...
(content encoding schemes) * Hexadecimal time *
IBM hexadecimal floating-point Hexadecimal floating-point arithmetic, floating point (now called HFP by IBM) is a format for encoding floating-point numbers first introduced on the IBM IBM System/360, System/360 computers, and supported on subsequent machines based on that arch ...
*
Hex editor A hex editor (or ''binary file editor'' or ''byte editor'') is a computer program that allows for manipulation of the fundamental Binary file, binary data that constitutes a computer file. The name 'hex' comes from 'hexadecimal', a standard numer ...
* Hex dump * Bailey–Borwein–Plouffe formula (BBP) * Hexspeak * P notation


References

{{reflist, refs= {{cite web , title=Computer Arithmetic , at=The Early Days of Hexadecimal , author-first=John J. G. , author-last=Savard , date=2018 , orig-year=2005 , work=quadibloc , url=http://www.quadibloc.com/comp/cp02.htm , access-date=2018-07-16 , url-status=live , archive-url=https://web.archive.org/web/20180716102439/http://www.quadibloc.com/comp/cp02.htm , archive-date=2018-07-16 {{cite book , title=G15D Programmer's Reference Manual , chapter=2.1.3 Sexadecimal notation , publisher= Bendix Computer, Division of
Bendix Aviation Corporation Bendix Corporation is an American manufacturing and engineering company founded in 1924 and subsidiary of Knorr-Bremse since 2002. During various times in its existence, Bendix made Automotive industry, automotive brake shoes and systems, vacu ...
, location=Los Angeles, CA, US , page=4 , url=http://bitsavers.trailing-edge.com/pdf/bendix/g-15/G15D_Programmers_Ref_Man.pdf , access-date=2017-06-01 , url-status=live , archive-url=https://web.archive.org/web/20170601222212/http://bitsavers.trailing-edge.com/pdf/bendix/g-15/G15D_Programmers_Ref_Man.pdf , archive-date=2017-06-01 , quote=This base is used because a group of four bits can represent any one of sixteen different numbers (zero to fifteen). By assigning a symbol to each of these combinations, we arrive at a notation called sexadecimal (usually "hex" in conversation because nobody wants to abbreviate "sex"). The symbols in the sexadecimal language are the ten decimal digits and on the G-15 typewriter, the letters "u", "v", "w", "x", "y", and "z". These are arbitrary markings; other computers may use different alphabet characters for these last six digits.
{{cite web , title=ILLIAC Programming – A Guide to the Preparation of Problems For Solution by the University of Illinois Digital Computer , author-first1=S. , author-last1=Gill , author-first2=R. E. , author-last2=Neagher , author-first3=D. E. , author-last3=Muller , author-first4=J. P. , author-last4=Nash , author-first5=J. E. , author-last5=Robertson , author-first6=T. , author-last6=Shapin , author-first7=D. J. , author-last7=Whesler , editor-first=J. P. , editor-last=Nash , edition=Fourth printing. Revised and corrected , date=1956-09-01 , publisher=Digital Computer Laboratory, Graduate College,
University of Illinois The University of Illinois Urbana-Champaign (UIUC, U of I, Illinois, or University of Illinois) is a public university, public land-grant university, land-grant research university in the Champaign–Urbana metropolitan area, Illinois, United ...
, location=Urbana, Illinois, US , pages=3–2 , url=http://www.textfiles.com/bitsavers/pdf/illiac/ILLIAC/ILLIAC_programming_Sep56.pdf , website=bitsavers.org , access-date=2014-12-18 , url-status=live , archive-url=https://web.archive.org/web/20170531153804/http://www.textfiles.com/bitsavers/pdf/illiac/ILLIAC/ILLIAC_programming_Sep56.pdf , archive-date=2017-05-31
{{cite book , title=Royal Precision Electronic Computer LGP – 30 Programming Manual , publisher= Royal McBee Corporation , location=Port Chester, New York , date=April 1957 , url=http://ed-thelen.org/comp-hist/lgp-30-man.html#R4.13 , access-date=2017-05-31 , url-status=live , archive-url=https://web.archive.org/web/20170531153004/http://ed-thelen.org/comp-hist/lgp-30-man.html , archive-date=2017-05-31 (NB. This somewhat odd sequence was from the next six sequential numeric keyboard codes in the
LGP-30 The LGP-30, standing for Librascope General Purpose and then Librascope General Precision, is an early off-the-shelf computer. It was manufactured by the Librascope company of Glendale, California (a division of General Precision Inc.), and so ...
's 6-bit character code.)
{{cite web , title=Die PERM und ALGOL , url=http://www.manthey.cc/sites/seminars/src/History.pdf , author-first1=Steffen , author-last1=Manthey , author-first2=Klaus , author-last2=Leibrandt , date=2002-07-02 , access-date=2018-05-19 , language=de , archive-date=2018-10-03 , archive-url=https://web.archive.org/web/20181003172841/http://www.manthey.cc/sites/seminars/src/History.pdf , url-status=live Binary arithmetic Hexadecimal numeral system Power-of-two numeral systems Positional numeral systems