through a two- character codeword based on the alphabet {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F}, which corresponds to the hexadecimal representation. For instance, the hexadecimal H = 7A corresponds to the binary B = 01111010 and the decimal D = 122. The hexadecimal system is just a convenient way of representing binary numbers through a 16-character alphabet. It is also a base-16 representation, which immediately translates into the binary system by blocks of four bits. A byte thus covers the decimal-number range 28-1 = 255, which is also conveniently represented by hexadecimal numbers from 00 to FF. Note that with the zero, the number of symbols that can be represented by n bits is actually 2nd. Coding language In Chapter 4, we have analyzed the entropy in language. Languages, especially the ones we can't read, can be viewed as random sources of alphabet characters. As we have seen, alphabet characters do not have the same probability of occurrence, because words make preferential use of certain letters, like E, T, A, o, N in English. The probability distribution of most languages' alphabets is exponential (see Fig. 4.3). The distribution varies according to geographic derivatives, and the type of commu- nication (e.g., informal, technical, literary). The language dictionary slowly evolves through generations, as new words are introduced, and older ones are abandoned. Even the alphabet somewhat evolves, for instance with the new character @, which became much more common with the Internet generation. In this section, we shall consider the issue of coding language by substituting the conventional A-Z alphabet with a decimal, and then a binary coding system. A first coding approach could consist in attributing a decimal number to each alphabet character: for instance, A = 1, B = 2, and SO on, down to Z = 26. This requires 26 codewords with two decimal symbols varying from 0 to 9, i.e., going from 00 to 99. This makes 100 coding possibilities, leaving extra room for 100 26 = 74 other alphabetical Informat