## hexadecimal

## sexadecimal

(Or "hex") Base 16. A number representation using the digits 0-9, with their usual meaning, plus the letters A-F (or a-f) to represent hexadecimal digits with values of (decimal) 10 to 15. The right-most digit counts ones, the next counts multiples of 16, then 16^2 = 256, etc.

For example, hexadecimal BEAD is decimal 48813:

digit weight value B = 11 16^3 = 4096 11*4096 = 45056 E = 14 16^2 = 256 14* 256 = 3584 A = 10 16^1 = 16 10* 16 = 160 D = 13 16^0 = 1 13* 1 = 13 ----- BEAD = 48813

There are many conventions for distinguishing hexadecimal numbers from decimal or other bases in programs. In C for example, the prefix "0x" is used, e.g. 0x694A11.

Hexadecimal is more succinct than binary for representing bit-masks, machines addresses, and other low-level constants but it is still reasonably easy to split a hex number into different bit positions, e.g. the top 16 bits of a 32-bit word are the first four hex digits.

The term was coined in the early 1960s to replace earlier "sexadecimal", which was too racy and amusing for stuffy IBM, and later adopted by the rest of the industry.

Actually, neither term is etymologically pure. If we take "binary" to be paradigmatic, the most etymologically correct term for base ten, for example, is "denary", which comes from "deni" (ten at a time, ten each), a Latin "distributive" number; the corresponding term for base sixteen would be something like "sendenary". "Decimal" is from an ordinal number; the corresponding prefix for six would imply something like "sextidecimal". The "sexa-" prefix is Latin but incorrect in this context, and "hexa-" is Greek. The word octal is similarly incorrect; a correct form would be "octaval" (to go with decimal), or "octonary" (to go with binary). If anyone ever implements a base three computer, computer scientists will be faced with the unprecedented dilemma of a choice between two *correct* forms; both "ternary" and "trinary" have a claim to this throne.