 89.0%, which represents the highest efficiency for a fixed-length coding (one character/symbol) of the A-Z source. However, if we relate this last result to the efficiency of a variable-length binary or ternary code, cases (iii) and (iv) above, we see that the second yields higher performance. The main conclusions of the above analysis are: (1) The Morse code can be viewed as being a variable-length ternary code; it is quite efficient for human-operator use, but not for binary or ternary machines; (2) One can code symbols through either fixed-length or variable-length codewords, using any M-ary representation (M = number of different code characters or code alphabet size); (3) The mean codeword length (L) represents the average length of all possible source codewords; it cannot be smaller than the source entropy (H), which defines a coding efficiency (L/H) with a maximum of 100%; (4) For fixed-length codewords, one can increase the coding efficiency by moving from binary to M-ary codes (e.g., ternary, quaternary, ), the efficiency increasing with M, continuously or by steps; (5) The coding efficiency can be increased by moving from fixed-length to variable- length codewords (the shortest codewords being used for the most likely source symbols and the reverse for the longest codewords). The property (3), known as Shannon's source coding theorem, and the last property (5) will be demonstrated next. Optimizing coding efficiency In this chapter SO far, we have learnt through heuristic arguments that coding efficiency is substantially improved when the code has a variable length. It makes economical sense, indeed, to use short codewords for the most frequently used symbols, and keep the longer codewords for the least frequently used ones, which is globally (but not strictly) the principle of the old Morse code. We must now establish some rules that assign the most adequate codeword length to each of the source symbols, with the purpose of achieving a code with optimal efficiency. Consider a basic example. Assume a so