Contents page

Index (83KB)

magic number


magic number: [UNIX/C] n. 1. In source code, some non-obvious
   constant whose value is significant to the operation of a program
   and that is inserted inconspicuously in-line (hardcoded),
   rather than expanded in by a symbol set by a commented
   `#define'.  Magic numbers in this sense are bad style.  2. A
   number that encodes critical information used in an algorithm in
   some opaque way.  The classic examples of these are the numbers
   used in hash or CRC functions, or the coefficients in a linear
   congruential generator for pseudo-random numbers.  This sense
   actually predates and was ancestral to the more common sense 1.
   3. Special data located at the beginning of a binary data file to
   indicate its type to a utility.  Under UNIX, the system and various
   applications programs (especially the linker) distinguish between
   types of executable file by looking for a magic number.  Once upon
   a time, these magic numbers were PDP-11 branch instructions that
   skipped over header data to the start of executable code; 0407,
   for example, was octal for `branch 16 bytes relative'.  Nowadays
   only a wizard knows the spells to create magic numbers.  How do
   you choose a fresh magic number of your own?  Simple --- you pick
   one at random.  See?  It's magic!

*The* magic number, on the other hand, is 7+/-2. See "The magical number seven, plus or minus two: some limits on our capacity for processing information" by George Miller, in the "Psychological Review" 63:81-97 (1956). This classic paper established the number of distinct items (such as numeric digits) that humans can hold in short-term memory. Among other things, this strongly influenced the interface design of the phone system.