In communications, a code is a rule for converting a piece of information (for example, a letter, word, or phrase) into another form or representation, not necessarily of the same type. In communications and information processing, encoding is the process by which information from a source is converted into symbols to be communicated. Decoding is the reverse process, converting these code symbols back into information understandable by a receiver.
One reason for coding is to enable communication in places where ordinary spoken or written language is difficult or impossible. For example, a cable code replaces words (e.g., ship or invoice) into shorter words, allowing the same information to be sent with fewer characters, more quickly, and most important, less expensively. Another example is the use of semaphore flags, where the configuration of flags held by a signaller or the arms of a semaphore tower encodes parts of the message, typically individual letters and numbers. Another person standing a great distance away can interpret the flags and reproduce the words sent.
In the history of cryptography, codes were once common for ensuring the confidentiality of communications, although ciphers are now used instead. See code (cryptography).
Codes in communication used for brevity
Probably the most widely known data communications code (aka character representation) in use today is ASCII. In one or another (somewhat compatible) version, it is used by nearly all personal computers, terminals, printers, and other communication equipment. Its original version represents 128 characters with seven-bit binary numbers—that is, as a string of seven 1s and 0s. In ASCII a lowercase "a" is always 1100001, an uppercase "A" always 1000001, and so on. Successors to ASCII have included 8-bit characters (for letters of European languages and such things as card suit symbols), and in fullest flowering have included glyphs from essentially all of the world's writing systems (see Unicode and UTF-8).
An example: the ASCII code
Codes may also be used to represent data in a way more resistant to errors in transmission or storage. Such a "code" is called an error-correcting code, and works by including carefully crafted redundancy with the stored (or transmitted) data. Examples include Hamming codes, Reed–Solomon, Reed–Muller, Bose–Chaudhuri–Hochquenghem, Turbo, Golay, Goppa, Gallager Low-density parity-check codes, and space–time codes. Error detecting codes can be optimised to detect burst errors, or random errors.